文本处理类命令

mkdir

-p递归创建

 -v:显示详细信息

-m:MODE创建目录时指定权限

例1:

[root@zhanghe ~]# mkdir /tmp/zhang/zhanghe
mkdir: 无法创建目录"/tmp/zhang/zhanghe": 没有那个文件或目录
[root@zhanghe ~]# mkdir -p /tmp/zhang/zhanghe
[root@zhanghe ~]# mkdir -pv /tmp/zhanghe/zhanghehe
mkdir: 已创建目录 "/tmp/zhanghe"
mkdir: 已创建目录 "/tmp/zhanghe/zhanghehe"
[root@zhanghe ~]# mkdir -m 777 /tmp/zhangjia

例2:

1. 如何在tmp下创建一个x,x下再创建一个m,m下再创建两个目录,用一条命令完成?
[root@zhanghe ~]# mkdir -p /tmp/x/m/{zhanghe,zhangjia}
2. 如何在/tmp下创建test目录,在test目录下又有x和y,在x里面又有m,用一条命令完成?
[root@zhanghe ~]# mkdir -p /tmp/test/{x/m,y}
下面解释一下,bash有一个机制,遇到逗号会自动展开成两个命令
[root@zhanghe /]# mkdir -p /tmp/zhang{he,jia}
[root@zhanghe /]# cd /tmp;ls
zhanghe  zhangjia
[root@zhanghe tmp]# mkdir -pv /tmp/{zhang,sun}_{he,jia}
mkdir: 已创建目录 "/tmp/zhang_he"
mkdir: 已创建目录 "/tmp/zhang_jia"
mkdir: 已创建目录 "/tmp/sun_he"
mkdir: 已创建目录 "/tmp/sun_jia"

rmdir

默认只能删除空目录

rmdir <目录>

-v显示过程

–p 递归删除的意思,递归删除就是首先先删除路径的最后个目录,如果这个文件所在的目录就这一个文件,删除这个文件之后就空了,那么接下来就会接着删除这个文件所在的目录,当然了如果上一级目录不是空的就不能删除。

[root@zhanghe tmp]# mkdir -vp zhang/zhanghe
mkdir: 已创建目录 "zhang"
mkdir: 已创建目录 "zhang/zhanghe"
[root@zhanghe tmp]# rmdir -vp zhang/zhanghe
rmdir: 正在删除目录 "zhang/zhanghe"
rmdir: 正在删除目录 "zhang"

rm

rm [OPTIONS]…FILE…

常用选项:

-i交互式,每当要删除一个时候都要询问一下

-f强制删除

-r递归删除目o录及内部的所有内容

[root@zhanghe tmp]# rm liu
rm:是否删除普通文件 "liu"?y  #默认在别名的中定义了rm=rm -i
[root@zhanghe tmp]# mkdir liu
[root@zhanghe tmp]# rm liu         #rm默认无法删除目录
rm: 无法删除"liu": 是一个目录
[root@zhanghe tmp]# rm -r liu      #必须使用-r才能删除目录
rm:是否删除目录 "liu"?y
rm –rf 最强劲,慎用!
[root@zhanghe /]# rm -rf /tmp/*  清空/tmp目录

cp 

此时建议为cp命令使用 –i选项,以避免不必要的损失

此时使用选项:-r

-i交互式,第复制一个都要询问你,默认cp就有cp –i的属性

-r,-R,递归复制目录及内部的所有内容

-a:归档,相当保留全部的属性

-v:--verbose  显示内容

[root@zhanghe tmp]# ls
[root@zhanghe tmp]# mkdir zhang
[root@zhanghe tmp]# cp zhang /var/tmp    #默认不能复制目录
cp: 略过目录"zhang"
[root@zhanghe tmp]# cp -r zhang /var/tmp
[root@zhanghe tmp]# cp -a zhang /var/tmp/

mv

mv就是移动

同目录下移动就是重命名

[root@zhanghe tmp]# mkdir zhanghe
[root@zhanghe tmp]# mv ./zhanghe /var/tmp
[root@zhanghe tmp]# mkdir zhanghe
[root@zhanghe tmp]# mv zhanghe zhangjia   #同目录下移动就是重命名
[root@zhanghe tmp]# ls
zhangjia

wc

-l, --lines

-c, --bytes

-w, --words

cut

剪切列,d后跟分隔符,-f跟 列(单列或者多列)

不会对源文件造成影响,影响的只是显示效果,主要用于切工整的列,不工整的列还是得用awk

[root@zhanghe tmp]# cut -d: -f1,3-4 /etc/passwd
[root@zhanghe ~]# ifconfig eth0 | sed -n 2p | cut -d : -f 3 | cut -d" " -f1   #从网卡信息当中取出ip地址
192.168.80.255
[root@zhanghe ~]# ifconfig eth0 | sed -n 2p | cut -d':' -f2 | awk -F" " '{if(NR=1)print $1}'
192.168.80.6

sed

[root@zhanghe ~]# sed -n 7p /etc/shadow   #只查看第七行的内容
shutdown:*:15980:0:99999:7:::
[root@zhanghe ~]# sed -n 5,7p /etc/shadow  #只查看第5到7行的内容
lp:*:15980:0:99999:7:::
sync:*:15980:0:99999:7:::
shutdown:*:15980:0:99999:7:::
[root@zhanghe ~]# cat >123
zhanghe
^C
[root@zhanghe ~]# sed -i 's#h#H#g' ./123  #-i是替换文件的内容,不加-i只替换显示
[root@zhanghe ~]# cat ./123
zHangHe

awk

[root@zhanghe ~]# awk -F ":" '{if(NR>5&&NR<9) print $2}' /etc/shadow
#-F指定列的分隔符
'{if(NR>5&&NR<9) print $2}指把大于第5行并且小于第9行当中第2列打印出来
[root@zhanghe ~]# ifconfig|awk -F":" '{if(NR==2)print $2}'|cut -d" " -f1   #取出ifconfig的IP地址
192.168.80.6
[root@China ~]# ifconfig|awk -F":" '{if(NR==2)print $2}'|cut -d"." -f1-3   #取出网段
192.168.80

tr

u 替换不加选项

u 删除显示内容时才使用-d

[root@zhanghe tmp]# tr ':'  '  ' </etc/passwd
意思就是把passwd这个文件中的冒号替换成空格来显示,由于tr后不能跟路径,所以就使用输入重定向。
[root@zhanghe tmp]# tr 'a-z' 'A-Z' </etc/passwd把passwd中的所有小写字母替换成大写字母。
[root@zhanghe tmp]# echo "zhanghe" | tr -d a    #把传递给他的内容中的a全部删除。
zhnghe

sort

-f   ignore-case忽略大小写

-u:unit去掉重复的行

-n, --numeric-sort根据数值大小排序

-t:指定分隔符,-k指定列进行排序,通常与-k一起使用。

-r,   reverse逆序

无论怎么切不会对源文件造成影响,造成影响的是只是显示而已,根据ASK码进行升序排序。

[root@zhanghe ~]# cat /etc/passwd | sort -n -t':' -k3 | cut -d':' -f3  #对/etc/passwd按照UID大小排序,加上r数字就会倒过来
[root@zhanghe ~]# history | cut -d' ' -f5 | sort –u   #去掉重复行
显示/passwd当中Uid最大的那个用户
sort -n -t":" -k3 /etc/passwd | tail -1 | awk -F":" '{if(NR=1)print $1}'  
nfsnobody    #显示passwd当中uid最大的用户名
sort -n -r -t":" -k3 /etc/passwd | tail -1 | awk -F":" '{if(NR=1)print $1}'
root #显示passwd当中uid最小的用户名。
取出/etc/passwd文件第6行到第10行,并将这些信息按照第三个字段大小进行排序,最后仅显示uid最大的用户名:
使用两种方法:
[root@zhanghe ~]# head -10 /etc/passwd|tail -4|sort -n -t: -k3|tail -1|cut -d: -f1
uucp
[root@zhanghe ~]#  sed -n "6,10p" /etc/passwd | sort -n  -t: -k 3 | tail -1|cut -d ":" -f1
uucp

猜你喜欢

转载自www.cnblogs.com/yizhangheka/p/11110228.html