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(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)