哪有什么岁月静好,不过是有人替你负重前行!

开发中常用linux命令

1、创建目录mkdir

创建目录命令,常用的参数-p,递归创建目录

[root@web01 ~]# mkdir /data

[root@web01 ~]# mkdir /data/a/b

mkdir: cannot create directory ‘/data/a/b’: No such file or directory

[root@web01 ~]# mkdir /data/a/b -p   #可以创建多级目录

[root@web01 ~]#

 

绝对路径   相对路径

1、绝对路径  从根开始

      /data      /etc

2、相对路径   不是从根开始的

       data

2、 切换目录cd

cd aa切换工作目录,cd ..返回上一级目录,cd / 返回根目录, cd 返回上次一的工作目录, cd~ 返回家目录。

[root@web01 ~]# cd /opt   #切换到指定的目录下,   cd 目录 切换到当前的目录下的目录

[root@web01 opt]# cd ..   #回到上一级

[root@web01 /]# cd /   #返回根目录

[root@web01 /]# cd -   返回上一次工作目录

/

[root@web01 /]# cd ~  #返回家目录

[root@web01 ~]#

3、 ls命令总结

ls可以说是Linux系统最常用的命令之一,相当于windows下的dir命令。常用的参数如下:

-a –all:列出目录下的所有文件,包括以 . 开头的隐含文件。

-l 列出文件的详细信息也可以简写为ll

total 32 代表当前目录下文件大小的总和为32K(每个目录的大小都按4K算)

drwxr-xr-x 第一个字符有3种情况:-表示普通文件,d代表目录,l代表连接文件,b代表设备文件。

后面的9个字符每3个为一组,分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限,若没有其中的任何一个权限则用-表示。执行的权限有两个字符可选x代表可执行,s代表套接口文件

紧接着的数字2代表 aa这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。

再接下来的root代表这个文件(目录)的属主为 用户root

再接下来的root代表这个文件(目录)所属的用户组为 root

28 代表文件的大小(字节数),目录的大小总是为28字节。

Dec 28 20:13 代表文件(目录)的修改时间。

c代表文件(目录)在名字。

 

~/.bashrc文件里添加export TIME_STYLE='+%Y/%m/%d %H:%M:%S' ,可修改ls -l命令里日期时间的显示格式,此操作只对当前用户生效。/etc/bashrc文件或者/etc/profile添加则对所有用户生效。

 

-i 输出文件的 i 节点的索引信息。

 

-d 将目录象文件一样显示,而不是显示其下的文件。

-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)

-r 对目录反向排序。

-t 以时间排序。

-u 以文件上次被访问的时间排序。

-s 在每个文件名后输出该文件的大小。

-S 以文件大小排序。

-h 显示文件大小时增加可读性

显示彩色目录列表
打开/etc/bashrc, 加入如下一行:
alias ls="ls --color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
1.
蓝色-->目录
2.
绿色-->可执行文件
3.
红色-->压缩文件
4.
浅蓝色-->链接文件
5.
灰色-->其他文件

4、 pwd命令总结

返回当前工作目录列表

5、rmdir命令总结

删除空目录

6、文件创建命令touch

用来修改文件时间戳,或者新建一个不存在的文件。

-a   --time=atime--time=access--time=use  只更改存取时间。

-d  使用指定的日期时间,而非现在的时间。

-m   --time=mtime--time=modify  只更改变动时间。

-t  使用指定的日期时间,而非现在的时间。

[root@web01 data]# touch oldboy.txt

[root@web01 data]# ll

total 0

drwxr-xr-x. 3 root root 14 Oct 11 00:41 a

-rw-r--r--. 1 root root  0 Oct 11 01:09 oldboy.txt

7、增加内容到文件vi 、echo

方法1:使用vi命令打开vi编辑器,按i键进入编辑模式,可以输入内容,按esc键退出编辑模式,按:wq保存并退出,按:q退出,按:q!强制退出。

方法2:使用echo命令

echo命令打印内容到当前屏幕。

[root@oldboyedu-sh01 ~]# echo "oldboyedu.com"

oldboyedu.com

[root@oldboyedu-sh01 ~]# echo "oldboyedu.com" >> /data/oldboy.txt

[root@oldboyedu-sh01 ~]# cat  /data/oldboy.txt

I am studying linux. at oldboyedu.com

oldboyedu.com

>>追加重定向  把内容追加到文件的结尾

>  重定向     先把文件内容清空,把内容追加到文件的结尾

[root@oldboyedu-sh01 ~]# echo "alex" >/data/oldboy.txt

[root@oldboyedu-sh01 ~]# cat /data/oldboy.txt

alex

>> 1>>  追加重定向  把内容追加到文件的结尾

>  1>   重定向     先把文件内容清空,把内容追加到文件的结尾

 

2>> 错误追加重定向  把内容追加到文件的结尾

2>  错误重定向     先把文件内容清空,把内容追加到文件的结尾

[root@web01 data]# ech 2>> oldboy.txt

[root@web01 data]# cat oldboy.txt

alex

-bash: ech: command not found

[root@web01 data]# ech 2> oldboy.txt

[root@web01 data]# cat oldboy.txt

-bash: ech: command not found

[root@web01 data]# ech >oldboy.txt

-bash: ech: command not found

[root@web01 data]# cat oldboy.txt

8 、文件内容查看命令cat

常用于读取、显示、拼接文件内容

打印单个或多个文件内容

将标准输入与文件内容合并显示(-被做为stdin文本的文件名)

–s参数压缩相邻的空白行。

–n参数显示行号

 

 

 

9、 复制命令cp

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

-f --force       强行复制文件或目录,不论目的文件或目录是否已经存在

 -i --interactive 覆盖文件之前先询问用户

 -p --preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间

-r                  递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-a
相当于-dpr

有时候cp –f 还是提示是否覆盖,是因为别名的原因,可以通过alias命令查看,可以通过编辑~/.bashrc文件注释相关的内容,退出重新登录即可,此方法只对当前用户生效,修改/etc/bashrc文件或者/etc/profile文件对所有用户生效。也可以在cp命令加\即可。

[root@web01 data]# cp oldboy.txt /tmp/

[root@web01 data]# ll /tmp/

total 0

-rw-r--r--. 1 root root  0 Oct 11 01:29 oldboy.txt

10、 移动文件或者目录mv

-f, --force   do not prompt before overwriting

-i, --interactive  prompt before overwrite

mv命令也可以用来给文件改名,

11、 改名命令rename

批量改名 ,rename需要提供三个参数,然后才能决定最终结果。第一个参数:被替换掉的字符串、第二个参数:替换成的字符串、第三个参数:匹配要替换的文件模式。

rename .htm .html *.htm 将当前目录下所有的以.htm结尾的文件改名为以.hmtl结尾。

12、 删除文件rm

rm删除文件或者目录,生产场景尽量不要使用rm,非要使用的情况下,要先备份再删除。

替代方法使用mv移动到临时目录,相当于回收站 。

Find删除 :find /var/ -type f –exec rm {} \;

exec处理查找的结果,rm对前面找到内容的处理命令,{}表示找到的内容,\;转义

  

常用参数如下:

-f --force略过不存在的文件,不显示任何信息

-d --directory删除可能仍有数据的目录

-i --interactive 进行任何删除操作前必须先确认

-r/R --recursive同时删除该目录下的所有目录层

13、 查找命令find

查找文件在一个目录里.命令格式:find 查找的位置 [OPTION]

1)          列出目录及子目录下的所有文件及文件夹

[root@oldboy ~]# find /opt

/opt

/opt/rh

[root@oldboy ~]#

[root@oldboy ~]# find /opt -print

/opt

/opt/rh

[root@oldboy ~]#

[root@oldboy ~]# find /opt -print0

/opt/opt/rh[root@oldboy ~]#

2)         -name参数指定了文件名所必须匹配的字符串。我们可以使用通配符*.txt-iname忽略文件名的大小写

[root@oldboy oldboy]# ll

total 0

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd1.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find . -name "*.log"

./oldboy3.log

./oldboy2.log

./oldboy1.log

[root@oldboy oldboy]#

3)         !否定参数

[root@oldboy oldboy]# ll

total 0

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd1.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find . ! -name "*.log"

.

./wd1.txt

./wd4.txt

./wd3.txt

./wd2.txt

[root@oldboy oldboy]#

4)         -type根据文件类型搜索(d 目录 f 普通文件 s 套接字 l 符号连接 b 设备 c 字符设备等)

[root@oldboy oldboy]# find /etc -type d |head -3

/etc

/etc/popt.d

/etc/libreport

[root@oldboy oldboy]#

[root@oldboy oldboy]# find /etc -type l |head -3

/etc/rc.d/rc4.d/S80postfix

/etc/rc.d/rc4.d/K10psacct

/etc/rc.d/rc4.d/K95rdma

[root@oldboy oldboy]#

5)         根据文件时间进行搜索

-atime用户最近一次访问时间

-mtime文件内容最后一次被修改时间

-ctime文件元数据(例如权限或所有权)最后一次改变的时间

以上三个都可以做为find的时间选项,它们可以用整数值指定,单位是天,还可以带“+ -,-表示小于,+表示大于

-amin(访问时间)

-mmin(修改时间)

-cmin (变化时间)这三个参数的单位是分钟。

[root@oldboy oldboy]# find . -type f -atime -7

./wd1.txt

./oldboy3.log

./oldboy2.log

./wd4.txt

./wd3.txt

./oldboy1.log

./wd2.txt

[root@oldboy oldboy]# find . -type f -atime +7 

[root@oldboy oldboy]# find . -type f -amin +7    

./wd1.txt

./oldboy3.log

./oldboy2.log

./wd4.txt

./wd3.txt

./oldboy1.log

./wd2.txt

[root@oldboy oldboy]# find . -type f -amin -7

./wd1.txt

[root@oldboy oldboy]#

6)         -newer参数,指一个参考文件,然后找出比指定文件更新(修改时间)所有文件。

[root@oldboy oldboy]# ll -t

total 0

-rw-r--r-- 1 root root 0 2016/03/08 12:15:49 wd1.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy1.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy2.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 oldboy3.log

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find . -type f -newer wd2.txt -exec ls -l {} \;

-rw-r--r-- 1 root root 0 2016/03/08 12:15:49 ./wd1.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy3.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy2.log

-rw-r--r-- 1 root root 0 2016/03/08 10:49:38 ./oldboy1.log

[root@oldboy oldboy]#

7)         -size基于文件大小的搜索 –size +2k大于2k,-size -2M 小于2M  b-块、c-字节、w-字、k-1024字节、M-1024kG-1024M

[root@oldboy oldboy]# ls -Slh

total 712K

-rw-r--r-- 1 root root 576K 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root root  68K 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root root  48K 2016/03/08 12:26:40 wd1.log

-rw-r--r-- 1 root root 3.9K 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 root root  424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root root  292 2016/03/08 12:26:19 oldboy2.log

-rw-r--r-- 1 root root  292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root root   21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 root root    0 2016/03/08 12:15:49 wd1.txt

-rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root    0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find -type f -size +2k -exec ls -lS {} \;

-rw-r--r-- 1 root root 68892 2016/03/08 12:27:03 ./wd4.log

-rw-r--r-- 1 root root 3893 2016/03/08 12:26:29 ./oldboy3.log

-rw-r--r-- 1 root root 48894 2016/03/08 12:26:40 ./wd1.log

-rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 ./wd2.log

[root@oldboy oldboy]#

[root@oldboy oldboy]# find -type f -size -2M -exec ls -lSh {} \;

-rw-r--r-- 1 root root 68K 2016/03/08 12:27:03 ./wd4.log

-rw-r--r-- 1 root root 424 2016/03/08 12:26:54 ./wd3.log

-rw-r--r-- 1 root root 0 2016/03/08 12:15:49 ./wd1.txt

-rw-r--r-- 1 root root 3.9K 2016/03/08 12:26:29 ./oldboy3.log

-rw-r--r-- 1 root root 292 2016/03/08 12:26:19 ./oldboy2.log

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd4.txt

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd3.txt

-rw-r--r-- 1 root root 21 2016/03/08 12:26:03 ./oldboy1.log

-rw-r--r-- 1 root root 48K 2016/03/08 12:26:40 ./wd1.log

-rw-r--r-- 1 root root 0 2016/03/08 10:48:58 ./wd2.txt

-rw-r--r-- 1 root root 576K 2016/03/08 12:26:45 ./wd2.log

-rw-r--r-- 1 root root 292 2016/03/08 12:26:13 ./oldboyw.log

[root@oldboy oldboy]#

8)         -delete删除找到的文件

[root@oldboy oldboy]# ll

total 712

-rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

-rw-r--r-- 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root root  48894 2016/03/08 12:26:40 wd1.log

-rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

-rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root  68892 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

 [root@oldboy oldboy]# find -type f -name wd1.log -delete

[root@oldboy oldboy]# ll

total 664

-rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

-rw-r--r-- 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

-rw-r--r-- 1 root root 588902 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root root  68892 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]#

9)         -perm基本文件权限、-user基本于所有权匹配。

[root@oldboy oldboy]# ll

total 664

-rw-r--r-- 1 root root     21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:19 oldboy2.log

-rwxrwxrwx 1 root root   3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 root root    292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root root      0 2016/03/08 12:15:49 wd1.txt

-rwxrwxrwx 1 root root 588902 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root root    424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd3.txt

-rwxrwxrwx 1 root root  68892 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root root      0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find -type f -perm 777 -exec ls -l {} \;

-rwxrwxrwx 1 root root 68892 2016/03/08 12:27:03 ./wd4.log

-rwxrwxrwx 1 root root 3893 2016/03/08 12:26:29 ./oldboy3.log

-rwxrwxrwx 1 root root 588902 2016/03/08 12:26:45 ./wd2.log

[root@oldboy oldboy]#

[root@oldboy oldboy]# ll

total 664

-rw-r--r-- 1 oldboy oldboy     21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:19 oldboy2.log

-rwxrwxrwx 1 oldboy oldboy   3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root   root        0 2016/03/08 12:15:49 wd1.txt

-rwxrwxrwx 1 root   root   588902 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root   root      424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd3.txt

-rwxrwxrwx 1 root   root    68892 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find . -type f -user oldboy -exec ls -l {} \;

-rwxrwxrwx 1 oldboy oldboy 3893 2016/03/08 12:26:29 ./oldboy3.log

-rw-r--r-- 1 oldboy oldboy 292 2016/03/08 12:26:19 ./oldboy2.log

-rw-r--r-- 1 oldboy oldboy 21 2016/03/08 12:26:03 ./oldboy1.log

-rw-r--r-- 1 oldboy oldboy 292 2016/03/08 12:26:13 ./oldboyw.log

[root@oldboy oldboy]#

10)      -exec:执行其他命令。{}是一个与-exec选项搭配使用的特殊字符串。表示一个匹配,对于每一个匹配的文件,{}会被替换成相应的文件名。-exec执行是每搜到一行就执行一次后面的命令,可以使用+参数,将搜索到的文件名形成列表做为命令参数,这样就可以少执行几次命令了。

[root@oldboy oldboy]# ll

total 664

-rw-r--r-- 1 oldboy oldboy     21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:19 oldboy2.log

-rwxrwxrwx 1 oldboy oldboy   3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 oldboy oldboy    292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root   root        0 2016/03/08 12:15:49 wd1.txt

-rwxrwxrwx 1 root   root   588902 2016/03/08 12:26:45 wd2.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root   root      424 2016/03/08 12:26:54 wd3.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd3.txt

-rwxrwxrwx 1 root   root    68892 2016/03/08 12:27:03 wd4.log

-rw-r--r-- 1 root   root        0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]# find -type f -name "wd*.log" -exec rm -f {} \;

[root@oldboy oldboy]# ll

total 16

-rw-r--r-- 1 oldboy oldboy   21 2016/03/08 12:26:03 oldboy1.log

-rw-r--r-- 1 oldboy oldboy  292 2016/03/08 12:26:19 oldboy2.log

-rwxrwxrwx 1 oldboy oldboy 3893 2016/03/08 12:26:29 oldboy3.log

-rw-r--r-- 1 oldboy oldboy  292 2016/03/08 12:26:13 oldboyw.log

-rw-r--r-- 1 root   root      0 2016/03/08 12:15:49 wd1.txt

-rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd2.txt

-rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd3.txt

-rw-r--r-- 1 root   root      0 2016/03/08 10:48:58 wd4.txt

[root@oldboy oldboy]#

[root@oldboy oldboy]# find -type f -atime -2 -exec cp {} /tmp \;

[root@oldboy oldboy]# cd /tmp/

[root@oldboy tmp]# ll

total 20

-rw-r--r--  1 root root   21 2016/03/08 12:51:56 oldboy1.log

-rw-r--r--  1 root root  292 2016/03/08 12:51:56 oldboy2.log

-rwxr-xr-x  1 root root 3893 2016/03/08 12:51:56 oldboy3.log

-rw-r--r--  1 root root  292 2016/03/08 12:51:56 oldboyw.log

drwx------  2 root root 4096 2016/03/08 09:12:57 ssh-EAyLCQ1743

-rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd1.txt

-rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd2.txt

-rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd3.txt

-rw-r--r--  1 root root    0 2016/03/08 12:51:56 wd4.txt

-rw-------. 1 root root    0 2016/03/06 16:21:46 yum.log

[root@oldboy tmp]#

11)      -maxdepth n 查找的深度。

[root@oldgirl oldboy]# find . -maxdepth 1 -type d ! -name "."

./ext

./test

./xiaofan

./xiaodong

./xingfujie

[root@oldgirl oldboy]#

14、 文件查看命令之head、tail 、more、less

more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 more命令从前向后读取文件,因此在启动时就加载整个文件。

+n      从笫n行开始显示

常用操作命令

Enter    向下n行,需要定义。默认为1行

Ctrl+F   向下滚动一屏

空格键  向下滚动一屏

Ctrl+B  返回上一屏

=       输出当前行的行号

:f     输出文件名和当前行的行号

V      调用vi编辑器

!命令   调用Shell,并执行命令 

q       退出more

less命令更加弹性,功能更加强大,可以向前、向后翻看文件,同时还有更多的搜索功能,可以向上、向下搜索。

常用操作命令:

b  向后翻一页

d  向后翻半页

u  向前滚动半页

y  向前滚动一行

[pagedown]: 向下翻动一页

[pageup]:   向上翻动一页

Q  退出less 命令

head取文件的前几行,如果不加参数默认取文件的前10行。常用参数-n后接数字,表示显示前n行,可以简写成head -5,取文件前5行。

tail取文件的后几行,如果不加参数默认取文件的后10行。常用参数-n后接数字,表示显示后n行,可以简写成head -5,取文件前5行。-f参数用于接收文件尾部的变化,常用于查看日志文件更新。

15、 检索命令grep

grepLinux系统命令三剑客之一,用于文本搜索,能够接受正则表达式,生成各种各样的输出。常用于过虑检索,常用的参数如下:

搜索包含特定模式的文本行:

也可以像下面这样从stdin中读取

单个grep 命令可以对多个文件时间进行搜索:

—color选项可以在输出行中着重标记出匹配到的单词:

grep 命令只解释match_test中的某些特殊字符,如果要使用正则表达式,需要使用-E参数,或者使用egrep命令。

只输出文件中匹配到的文本部分,使用-o参数

输出包含匹配到的行之外的所有行,使用-v参数

统计匹配文件或者文本中匹配字符串的行数(只是行数而不是次数),使用-c参数

输出包含匹配字符串的行号:

搜索多个文件找出匹配文本位于那个文件之中,使用-l参数,-L结果相反。

如果需要在多级目录中对文本进行递归搜索,使用参数-R –n

忽略样式中的大小写,使用参数-i

匹配多个样式,使用-e参数

此外还可以将多个样式写在一个文件中,然后使用-f参数读取文件。

在搜索中指定或排队文件

可以搜索过程上指定(include)或排除(exclude)某些文件。要排队目录,可以使用—exclude-dir选项。

输出匹配文本之前或者之后的几行,使用-A n(之后n行),-B n(之前n行),-C n(之前n行,之后n行)

-E可以有多个匹配条件相当于egrep

-i忽略大小写

16、 三剑客之sed命令

sedLinux系统命令三剑客之一,是流编辑器(stream editor),常用于取行及文本替换,常见用法如下:

删除空行,用正则表达式^$配置空行,d表示删除符合模式的行:

[root@oldboy oldboy]# cat test.txt

My name is wd.

 

I am stuty Linux.

 

Line3

 

Line4

 

line5

[root@oldboy oldboy]# sed '/^$/d' test.txt

My name is wd.

I am stuty Linux.

Line3

Line4

line5

[root@oldboy oldboy]#

删除行首空格

[root@oldboy oldboy]# cat test.txt

My name is wd.

 

I am stuty Linux.

 

  Line3

 

Line4

 

   line5

[root@oldboy oldboy]# sed 's#^ * ##g' test.txt

My name is wd.

 

I am stuty Linux.

 

Line3

 

Line4

 

line5

[root@oldboy oldboy]#

 

打印文件2-5行及删除,p表示打印,打印某个选择的数据,通常与-n参数一起使用,-n参数是安静模式,只有经过sed处理的行才显示出来,其他不显示。

 [root@oldboy oldboy]# cat -n /etc/passwd | sed -n '2,5p'

     2       bin:x:1:1:bin:/bin:/sbin/nologin

     3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4       adm:x:3:4:adm:/var/adm:/sbin/nologin

     5       lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@oldboy oldboy]# cat -n /etc/passwd |sed '2,20d'

     1       root:x:0:0:root:/root:/bin/bash

    21       saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

    22       postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    23       sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

    24       tcpdump:x:72:72::/:/sbin/nologin

    25       oldboy:x:500:500::/home/oldboy:/bin/bash

    26       oldgirl:x:501:501::/home/oldgirl:/bin/bash

    27       msn:x:502:502::/home/msn:/bin/bash

[root@oldboy oldboy]#

 

在第2行后面添加一行内容“hello wd!”,a表示添加,后接字符串,添加到当前行的下一行。

[root@oldboy oldboy]# cat -n /etc/passwd |sed '2a hello wd!'|head -5

     1       root:x:0:0:root:/root:/bin/bash

     2       bin:x:1:1:bin:/bin:/sbin/nologin

hello wd!

     3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4       adm:x:3:4:adm:/var/adm:/sbin/nologin

 [root@oldboy oldboy]# cat -n /etc/passwd |sed '2a hello "wd!\nhell everyone"'|head -5

     1       root:x:0:0:root:/root:/bin/bash

     2       bin:x:1:1:bin:/bin:/sbin/nologin

hello "wd!

hell everyone"

     3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@oldboy oldboy]#

 

在第2行这前添加一行内容“hello wd!,i表示插入,后接字符串,添加到当前行的上一行。

[root@oldboy oldboy]# cat -n /etc/passwd |sed '2i hello wd!\nhell everyone'|head -5

     1       root:x:0:0:root:/root:/bin/bash

hello wd!

hell everyone

     2       bin:x:1:1:bin:/bin:/sbin/nologin

     3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@oldboy oldboy]# cat -n /etc/passwd |sed '2i hello "wd!\nhell everyone"'|head -5

     1       root:x:0:0:root:/root:/bin/bash

hello "wd!

hell everyone"

     2       bin:x:1:1:bin:/bin:/sbin/nologin

     3       daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@oldboy oldboy]#

 

2-4内容替换成“I am study Linux.c表示替换,后接字符串,用它替换n1-n2之间的行。

[root@oldboy oldboy]# cat -n /etc/passwd |sed '2,4c hello "I am study Linux."'|head -5

     1       root:x:0:0:root:/root:/bin/bash

hello "I am study Linux."

     5       lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

     6       sync:x:5:0:sync:/sbin:/bin/sync

     7       shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

[root@oldboy oldboy]#

 

-i参数将修改的结果保存到文件中。

[root@oldboy oldboy]# cat wd.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 

[root@oldboy oldboy]# sed -i '2,3d' wd.txt

[root@oldboy oldboy]# cat wd.txt

root:x:0:0:root:/root:/bin/bash

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@oldboy oldboy]#

test.txt文件中的wd替换成oldboys表示搜索,也可以替换

 [root@oldboy oldboy]# cat test.txt

My name is wd.

 

I am stuty Linux.

 

  Line3

 

Line4

 

   line5

 

[root@oldboy oldboy]# sed -i 's#wd#oldboy#g' test.txt

 

[root@oldboy oldboy]# cat test.txt

My name is oldboy.

 

I am stuty Linux.

 

  Line3

 

Line4

 

   line5

[root@oldboy oldboy]#

 

 使用sed命令取本机IP

[root@oldboy oldboy]# ifconfig| sed -n '2p'

          inet addr:192.168.33.128  Bcast:192.168.33.255  Mask:255.255.255.0

 

[root@oldboy oldboy]# ifconfig| sed -n '2p'|sed 's#.*addr:##g'

192.168.33.128  Bcast:192.168.33.255  Mask:255.255.255.0

 

[root@oldboy oldboy]# ifconfig| sed -n '2p'|sed 's#.*addr:##g'|sed 's#Bca.*$##g'

192.168.33.128 

[root@oldboy oldboy]# ifconfig eth0|sed -n '2p'| awk -F[:" "]+ '{print $4}'

192.168.33.128

 

使用&符号标记匹配到的字符串,我们就可以在后面的替换中使用己匹配到的内容。

[root@oldboy oldboy]# echo "This is a test"|sed 's#\w\+#[&]#g'

[This] [is] [a] [test]

pattern)用于匹配子串,对于匹配到的第一个子串,在后面可以\1引用,以此类推,这种引用被称为后向引用。-r参数表示使用扩展的正则表达式。

[root@oldboy oldboy]# echo "This is a test"|sed -r 's#This (.*) a (.*)$#\1\n\2#g'

is

test

[root@oldboy oldboy]#

 

删除空行、注释、及行首空格

[root@oldboy oldboy]# cat test.txt

#My name is oldboy.

 

I am stuty Linux.

 

  Line3

 

Line4

 

   line5

This is a test.

 

[root@oldboy oldboy]# sed '/^$/d' test.txt |sed  '/^#.*$/d'|sed 's#^ * ##g'

I am stuty Linux.

Line3

Line4

line5

This is a test.

[root@oldboy oldboy]#

注释passwd文件的前3行。

[root@oldboy oldboy]# head -5 /etc/passwd|sed 's#^#\##g'

#root:x:0:0:root:/root:/bin/bash

#bin:x:1:1:bin:/bin:/sbin/nologin

#daemon:x:2:2:daemon:/sbin:/sbin/nologin

#adm:x:3:4:adm:/var/adm:/sbin/nologin

#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

[root@oldboy oldboy]#

 

17、 三剑客之awk

是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk做大的优势。awk常用于取列。

 


 

 

posted @ 2018-12-28 21:28  迎风而来  阅读(820)  评论(0编辑  收藏  举报
/*吸附球*/