开发中常用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-1024k、G-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
grep是Linux系统命令三剑客之一,用于文本搜索,能够接受正则表达式,生成各种各样的输出。常用于过虑检索,常用的参数如下:
搜索包含特定模式的文本行:
也可以像下面这样从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命令
sed是Linux系统命令三剑客之一,是流编辑器(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替换成oldboy。s表示搜索,也可以替换
[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常用于取列。