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