位置:海鸟网 > IT > linux/Unix >

Linux里必须掌握的命令

Linux里必须掌握的命令
  

--------------------grep------------------------

工作方式:在一个或多个文件中搜索字符串模板,若模板包括空格,则必须被引用

模板后的所有字符串被看作文件名,不影响原文件内容

常用参数:

-a:将二进制文件以text文件的形式查找数据

-c:计算找到的字符串模板的次数,不会输出与字符串模板符合的那一行内容,仅

输出次数

-i:忽略大小写

-n:输出时将行号一起输出

-v:反向选择,将没有字符串模板的那一行输出

--color=auto:将搜索到的字符串模板部分加上颜色(一般为默认,无需设置)

精确查找:  

在字符串模板后面加上"\>"就可以让字符串的查找更精确,如:

要查找"546",如果还存在"5462"、"5468",那么执行命令grep "546"就会将"5462"和"5468"

都找出来,但是我们只想要"546",这个时候就可以这样grep "546\>"。
  

-----------------sed---------------------------

工作方式:以行为单位,对数据的每一行进行替换、删除、新增、选取等操作,不

能对单行进行操作

常用参数:

-n:安静模式,当要求把选取的特定行打印出来时,就会使用这个参数,保证不会

重复输出特定行,如果不加这个参数,一般是将每行重复输出两次再输出下一特定



-f:直接将sed的动作写入一个文件内,加上-f filename时就可以执行filename中的

sed动作,注意:filename中不能加单引号或双引号,如果动作本来是'2a Hello',则

在filename中应该只写上2a Hello,什么都不要加

-r:可以让sed的操作支持扩展正则表达式(sed默认是基础正则表达式)

-i:直接修改读取的文件内容,不会由屏幕输出(危险!!!虽然貌似sed可以做vim

的一些动作了)
  

-----------------awk------------------------------

工作方式:相比于sed处理一行一行的数据,awk处理的是一行中的各个字段的处理,

它的每一个动作用"{}"包含,同样所有动作都要放在一对单引号中,这样的话它的动

作里不允许再出现单引号,只能用双引号代替,它的默认字段分隔符为空格或制表键



注意它与grep、sed的比较!!!


常用功能:

NF:每一行拥有的字段总数,可用print直接打印

NR:当前处理的行号,也可用print直接打印

FS:当前的分隔符,默认为空格或制表键,设置方法"BEGIN {FS=":"}",这样就可以以

冒号为字段分隔符了,分为$1,$2,$3......,在/etc/passwd文件中比较有用

awk支持条件判断
  

-----------------sort------------------------

工作方式:根据选定的排序方式对整个文件数据进行排序输出,可以字母、数字、

一定区间内的排序输出,还可以反向输出

常用参数:

-f:忽视大小写(和grep的-i参数功能一样,为什么同样的功能,参数要整得不一样唉)

-b:忽视每行开头的空格符,b可以记为blank,-b就减掉blank

-M:以月份的名字来排序,在浏览文件的时候就可以用这个参数来按时间排序输出

-n:以数字排序(默认为文字类型排序),n可以记为number

-r:反序并输出,r可以记为reverse

-u:uniq命令的功能,将重复行输出一行即可

-t:分隔符(默认为tab键),修改方法-t ':',这样就可以改为以冒号来分隔了,在

/etc/passwd有用,和awk的FS设置类似

-k:以哪一个区间来进行排序,通常结合-t,当需要被排序的内容是以tab键来分隔的

就不提了,若是想/etc/passwd以冒号分隔的话,就需要用-t来修改分隔符,然后-k再加

要被作为排序标准的字段符
  

-----------------wc-------------------------

工作方式:将整个文件的字数、行数、字符数进行统计,当然也可以用grep或sed提出

特定行来统计特定行的字数等

常用参数:

-l:仅列出行数,line

-w:仅列出字数(单词数),word

-m:仅列出字符数(是不是该用-c,和wc、characterize对应嘛。。。)

如果只是执行wc而不加上任何参数,那么将会列出所有信息,依次为:行数、字数、

字符数
  

----------------find-----------------------

工作方式:在整个磁盘中直接查找符合条件的文件,如果磁盘过大的话,会耗费很多

时间,还有一种查找文件的命令:whereis,它会在系统提供的数据库中查找文件,

速度很快,但是系统数据库一般是不会及时更新的,所以要查找最新的文件时,要先

执行updatedb,否则将不会找到文件(不过更新数据库应该会很耗时吧。。。)

常用参数:



-atime:按照文件被读取的时间来查找

-mtime:按照文件内容被修改的时间来查找

-ctime:按照文件权限和属性白修改的时间按来查找

上面三个参数为时间参数,后面加上数字才行,如:

-atime n:在n天之前“一天内”被读取过的文件,第n天前到第n+1天的一天的时间

-atime -n:在n天之内(含n天)被读取过的文件,从现在到第n天前的所有时间

-atime +n:在n天之前(不含n天)被读取过的文件,就是减去上面两个时间段的剩

下的时间

还有一个时间参数:

-newer file:file为一个已存在的文件,顾名思义,查找比file要新的文件





和用户/用户组有关的参数:

-uid n:用户ID为n的文件

-gid n:用户组ID为n的文件

-user name:用户帐号为name的文件

-group name:用户组帐号为name的文件

-nouser:所有者不再/etc/passwd中的文件,可以找到一些异常文件

-nogroup:所属用户组不存在的文件





和文件权限及名称有关的参数:

-name filename:名为filename的文件

-size [+-]SIZE:查找比SIZE要大(+)或小(-)的文件,单位有c(字节)、k(1024

字节)

-type TYPE:查找TYPE类型的文件,类型就是表示权限的第一个字符,常见的有d,-,l...

-perm [+-]mode:利用权限来查找,mode表示权限必须刚好相等,+mode表示包含任一

(3个一组)权限即可,-mode表示必须全部包含mode的权限(貌似不怎么好记。。)





扩展参数:

-exec command:exec后面接命令,这个命令可以对find到的结果进行处理,听着有点

儿类似于管道命令啊,但是它后面接的命令的形式比较固定,假如我们找到了名为file

的文件,我们想要利用exec来浏览这个文件内容,这个时候必须这么写命令:

[html]

$ find -name file -exec cat {} \;  

{}表示查找到的内容,\是用来消除;在命令中的特殊意义的,它代表exec执行到;结束

-print:默认的操作,不用加上。。。





『  



等等,find还有一个特殊功能,就是通过inode号码查找文件,这个功能可以解决一个



文件名里带来空格的文件的删除,如Hello World文件名,如果用rm的话,它会将这个文件



误认为两个文件而不停的报错,这个时候就需要找到这个文件的inode号码,利用find的扩展



参数来删除它,命令如下:



[html] 

$ ls -i | grep 'Hello World'  

假如查到inode为142542的话,进行下一个命令:



[html]

$ find -inum 142542 -exec  rm {} \;  

带有空格的文件名的文件就会被删除了。



』  



----------------------tar---------------------------

工作方式:对文件或目录进行压缩,查看压缩包内容,对压缩包的一个或全部的文件进行

解压,这个完全可以和winRAR对照理解。这只是一个最常用的压缩命令之一,通常,以这

个命令进行压缩的文件命名为*.tar.bz2最好,利于区别于其他其他压缩命令产生的压缩包

常用参数:

-c:新建压缩文件

-t:查看压缩文件中的文件名

-x:解压文件,搭配-C在特定的目录中解压

-j:通过bzip2进行压缩/解压,最好命名为*.tar.bz2

-z:通过gzip进行压缩/解压,最好命名为*.tar.gz

-v:压缩/解压中显示正在压缩的文件名

-f filename:filename为要被处理的文件(每个tar命令都要加上这个参数才行的!!!)

-C direction:前面提过,可在特定的direction中解压

-p:允许备份数据中含有根目录(小写)

-P:保留文件权限和属性(大写)

注意:tar有三个功能:解压、压缩、查看压缩文件,这三个功能不能同时进行,也就是说

-c、-t、-x不同一起出现在同一个命令参数中

(利用这个删除命令可以将练习的压缩包、解压的目录等删除:rm -r filename,当然也可以

删除目录,由于解压文件中含有目录时,可能用rmdir不好使,因为目录应该还会有东西)
  

--------------chmod----------------------------

工作方式:修改文件或目录的权限(在Linux中极其重要滴!!)

常用参数:

-R:递归性的持续修改,当你想要把一个目录下的所有目录或文件一起修改权限时,这个

参数就很有用了(这个参数在chown、chgrp中也有类似的功能,chmod与这两个在系统安


全上很重要)



具体修改权限的方法:

(1)利用rwx直接修改:"u=rwx,g=rx,o=rx"或"a+x".......

(2)利用数字修改:"777"或"644"等等
  

---------------netstat--------------------

工作方式:用于网络监控,输出网络和系统自己的进程两部分

常用参数:

-a:all的意思,也就是把所有的连接、监听、socket数据都列出来

-t:列出tcp网络数据包的数据

-u:列出udp网络数据包的数据

-n:以端口号代替进程的服务名称显示

-l:列出目前正在网络监听的服务

-p:列出该网络服务的进程PID
  

--------------ln----------------

工作方式:建立与已有文件或目录的连接,分软连接和硬连接两种,软连接类似于Windows下

的快捷方式,只保存一个源文件的指向,占用空间小,硬连接是通过文件系统的inode连接来

产生新文件名,不会产生新文件,两个文件同步,权限、属性神马的全一样。

常用参数:

-s:创建软连接(默认为硬连接)

-f:如果目标文件存在时,就主动将目标文件直接删除后再创建
  

----------------kill----------------

工作方式:杀掉后台进程,先执行jobs命令,根据第一列显示的数字来杀掉进程,如:

kill -9 %2,就会强制终止第二个进程。

常用参数:  

-l:字母l,显示可以使用的信号,和下面的数字参数有关

-2:与[ctrl+c]等效

-9:立刻强制删除一个工作

-15:以正常的程序方式终止一项工作,是正常终止,与-9不同滴
  

----------------ps-------------------

工作方式:查询系统正在运行的进程,比jobs命令显示得更全面

常用查询:

ps -l:查看与自己相关的bash的进程

ps aux:查看所有系统运行的程序






作者 fengxiaoke_fxk