2.7 文件通配符模式 wildcard pattern
- 显示/etc目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录列表。
[root@centos7 data]#ls -d /etc/l*[0-9]*[[:lower:]] ls: cannot access /etc/l*[0-9]*[[:alpha:]]: No such file or directory [root@centos7 data]#
- 显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录列表
[root@centos7 data]#ls /etc/[0-9]*[^0-9] ls: cannot access /etc/[0-9]*[^0-9]: No such file or directory
- 显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录列表
[root@centos7 data]#ls -d /etc/[^[:alpha:]][[:alpha:]]* ls: cannot access /etc/[^[:alpha:]][[:alpha:]]*: No such file or directory [root@centos7 data]#
- 显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录列表
[root@centos7 data]#ls -d /etc/rc[0-6]* /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d [root@centos7 data]#
- 显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录列表
[root@centos7 data]#ls -d /etc/[mnrp]*.conf /etc/man_db.conf /etc/mke2fs.conf /etc/nsswitch.conf /etc/resolv.conf /etc/rsyslog.conf [root@centos7 data]#
- 只显示/root下的隐藏文件和目录列表
[root@centos7 data]#ls -d /root/.* /root/. /root/.bash_history /root/.bash_profile /root/.cshrc /root/.tcshrc /root/.. /root/.bash_logout /root/.bashrc /root/.lesshst [root@centos7 data]#
- 只显示/etc下的非隐藏目录列表
[root@centos7 data]#ls -d /etc/* /etc/adjtime /etc/hosts /etc/python /etc/aliases /etc/hosts.allow /etc/rc0.d /etc/aliases.db /etc/hosts.deny /etc/rc1.d /etc/alternatives /etc/init.d /etc/rc2.d /etc/anacrontab /etc/inittab /etc/rc3.d /etc/asound.conf /etc/inputrc /etc/rc4.d
2.9 复制文件和目录
- 每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYYmm-dd,备份过程可见。
[root@centos7 data]#cp -arv /etc/ /data/etcbkp`date +%Y%m-%d`
目录操作
- 如何创建/testdir/dir1/x,/testdir/dir1/y,/testdir/dir1/x/a,/testdir/dir1/x/b,/testdir/dir1/y/a,/testdir/dir1/y/b
[root@centos7 data]#mkdir -v -p /testdir/dir1/{x,y}/{a,b} mkdir: created directory ‘/testdir’ mkdir: created directory ‘/testdir/dir1’ mkdir: created directory ‘/testdir/dir1/x’ mkdir: created directory ‘/testdir/dir1/x/a’ mkdir: created directory ‘/testdir/dir1/x/b’ mkdir: created directory ‘/testdir/dir1/y’ mkdir: created directory ‘/testdir/dir1/y/a’ mkdir: created directory ‘/testdir/dir1/y/b’ [root@centos7 data]#
- 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a, /testdir/dir2/x/b
[root@centos7 /]#mkdir -pv /testdir/dir2/{x/{a,b},y} mkdir: created directory ‘/testdir/dir2’ mkdir: created directory ‘/testdir/dir2/x’ mkdir: created directory ‘/testdir/dir2/x/a’ mkdir: created directory ‘/testdir/dir2/x/b’ mkdir: created directory ‘/testdir/dir2/y’ [root@centos7 /]#
- 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7
[root@centos7 /]#mkdir -pv /testdir/dir{3,4,5/dir{6,7}} mkdir: created directory ‘/testdir/dir3’ mkdir: created directory ‘/testdir/dir4’ mkdir: created directory ‘/testdir/dir5’ mkdir: created directory ‘/testdir/dir5/dir6’ mkdir: created directory ‘/testdir/dir5/dir7’ [root@centos7 /]#
重定向
- 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
[root@centos7 data]#cat /etc/issue \S Kernel \r on an \m [root@centos7 data]#cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out [root@centos7 data]#cat /tmp/issue.out \S KERNEL \R ON AN \M [root@centos7 data]#tr 'a-z' 'A-Z' < /etc/issue > /tmp/issue.out [root@centos7 data]#cat /tmp/issue.out \S KERNEL \R ON AN \M
- 将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
[root@centos7 ~]#who am i | tr 'a-z' 'A-Z' > /tmp/who.out [root@centos7 ~]#cat /tmp/who.out ROOT PTS/0 2022-05-01 09:32 (10.0.0.1) [root@centos7 ~]#
- 一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:Hello, I am 用户名,The system version is here,please help me to check it ,thanks! 操作系统版本信息
[root@centos7 data]#mail -s help 634073389@qq.com <<EOF > hello > I am lvyq > the system version is here, please help me to check it, thanks! > `lsb_release -a` > EOF [root@centos7 data]#
- 将/root/下文件列表,显示成一行,并文件名之间用空格隔开
[root@centos7 data]#ls /root/ | tr '\n' ' ' anaconda-ks.cfg dead.letter file0 file1 file10 file2 file3 file4 file5 file6 file7 file8 file [root@centos7 data]#
- 计算1+2+3+...+99+100的总和
[root@centos7 data]#echo {1..100}|tr ' ' '+'|bc 5050 [root@centos7 data]#seq -s+ 100|bc 5050 [root@centos7 data]#
- 删除Windows文本文件中的回车字符 ,即“\r”
[root@centos7 data]#file win.txt win.txt: ASCII text, with CRLF line terminators [root@centos7 data]#hexdump -C win.txt 00000000 61 0d 0a 62 0d 0a 63 |a..b..c| 00000007 [root@centos7 data]#touch linux.txt [root@centos7 data]#vi linux.txt [root@centos7 data]#hexdump -C linux.txt 00000000 61 0a 62 0a 63 0a |a.b.c.| 00000006 [root@centos7 data]#file linux.txt linux.txt: ASCII text [root@centos7 data]#cat win.txt |tr -d '\r' > win2.txt [root@centos7 data]#hexdump -C win2.txt 00000000 61 0a 62 0a 63 |a.b.c| 00000005 [root@centos7 data]#file win2.txt win2.txt: ASCII text [root@centos7 data]#
- 处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的数字和空格
[root@centos7 data]#echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4'|tr -d [[:alpha:][:punct:]] 1 2 3 4 [root@centos7 data]#echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4'|tr -d [a-z.\,\#\*\!\$\/] 1 2 3 4 [root@centos7 data]#echo “xt.,l 1 jr#whoamimn2 c*/fe3 uz4” |tr -dc '0-9 ' 1 2 3 4[root@centos7 data]#
- 将PATH变量每个目录显示在独立的一行
[root@centos7 data]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@centos7 data]#echo $PATH|tr : '\n' /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin
- 将指定文件中0-9分别替代成a-j
[root@centos7 data]#cat fstab|tr '0-9' 'a-j'
- 将文件/etc/centos-release中每个单词(由字母组成)显示在独立一行,并无空行
[root@centos7 data]#cat /etc/centos-release|tr -sc '[:alpha:]' '\n' CentOS Linux release Core [root@centos7 data]#