*4 通配符及管道与反引号“`”与花括号“{}”的使用

作业4:

一、通配符练习:

1、显示/etc目录下,以字母开头,后面跟了一个非字母及其它任意长度任意字符的文件或目录;

ll -dh /etc/[[:alpha:]][^[:alpha:]]*

drwxr-xr-x. 6 root root 4.0K 3月   6 17:22 /etc/X11

2、显示/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录;

ll -dh /usr/share/man/man[0-9]

drwxr-xr-x. 2 root root  56K 3月   6 17:29 /usr/share/man/man1

drwxr-xr-x. 2 root root  20K 3月   6 17:29 /usr/share/man/man2

drwxr-xr-x. 2 root root  68K 3月   6 17:29 /usr/share/man/man3

drwxr-xr-x. 2 root root 4.0K 3月   6 17:29 /usr/share/man/man4

drwxr-xr-x. 2 root root  12K 3月   6 17:29 /usr/share/man/man5

drwxr-xr-x. 2 root root 4.0K 3月   6 17:29 /usr/share/man/man6

drwxr-xr-x. 2 root root  12K 3月   6 17:29 /usr/share/man/man7

drwxr-xr-x. 2 root root  28K 3月   6 17:29 /usr/share/man/man8

drwxr-xr-x. 2 root root 4.0K 9月  23 2011 /usr/share/man/man9

3、复制/etc目录下,所以p,m,r开头的,且以.conf结尾的文件或目录至/tmp/conf.d目录下;

mkdir -pv /tmp/conf.d

mkdir: 已创建目录 "/tmp/conf.d"

cp -a /etc/[p,m,r]*.conf /tmp/conf.d

ll -h /tmp/conf.d

总用量 44K

-rw-r--r--. 1 root root  827 7月  24 2015 mke2fs.conf

-rw-r--r--. 1 root root 2.6K 8月  17 2010 mtools.conf

-rw-r--r--. 1 root root 1.4K 8月  23 2010 pbm2ppa.conf

-rw-r--r--. 1 root root  370 10月 15 2014 pm-utils-hd-apm-restore.conf

-rw-r--r--. 1 root root 6.2K 8月  23 2010 pnm2ppa.conf

-rw-r--r--. 1 root root  789 7月  19 2013 prelink.conf

-rw-r--r--. 1 root root  966 11月 23 2013 readahead.conf

-rw-r--r--. 1 root root 1.5K 10月 15 2014 request-key.conf

-rw-r--r--. 1 root root  238 3月   6 17:35 resolv.conf

-rw-r--r--. 1 root root 3.1K 3月   6 17:26 rsyslog.conf

4、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件,并按照下述要求写出相应的命令;

注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;

1) 显示所有以a或m开头的文件;

mkdir -pv /mnt/lianxi/{a123,cd6,c78m,‘c1 my‘,m.z,‘k 67‘,8yu,789}

mkdir: 已创建目录 "/mnt/lianxi"

mkdir: 已创建目录 "/mnt/lianxi/a123"

mkdir: 已创建目录 "/mnt/lianxi/cd6"

mkdir: 已创建目录 "/mnt/lianxi/c78m"

mkdir: 已创建目录 "/mnt/lianxi/c1 my"

mkdir: 已创建目录 "/mnt/lianxi/m.z"

mkdir: 已创建目录 "/mnt/lianxi/k 67"

mkdir: 已创建目录 "/mnt/lianxi/8yu"

mkdir: 已创建目录 "/mnt/lianxi/789"

ll -dh /mnt/lianxi/[a,m]*

drwxr-xr-x. 2 root root 4.0K 3月   6 17:44 /mnt/lianxi/a123

drwxr-xr-x. 2 root root 4.0K 3月   6 17:44 /mnt/lianxi/m.z

2) 显示所有文件名中包含了数字的文件;

ll -dh /mnt/lianxi/*[0-9]*

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/789

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/8yu

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/a123

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/c1 my

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/c78m

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/cd6

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/k 67

ll -dh /mnt/lianxi/*[[:digit:]]*

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/789

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/8yu

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/a123

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/c1 my

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/c78m

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/cd6

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/k 67

3) 显示所有以数字结尾且文件名中包含空白字符的文件;

ll -dh /mnt/lianxi/*[[:digit:]]

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/789

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/a123

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/cd6

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/k 67

ll -dh /mnt/lianxi/*[0-9]

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/789

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/a123

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/cd6

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/k 67

4) 显示文件名中不以c字母开头并且不以数字结尾的所有文件;

ll -dh /mnt/lianxi/[^c]*[^[:digit:]]

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/8yu

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/m.z

ll -dh /mnt/lianxi/[^c]*[^0-9]

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/8yu

drwxr-xr-x. 2 root root 4.0K 3月   6 17:40 /mnt/lianxi/m.z

二、管道及IO重定向练习:

1、统计/usr/bin/目录下的文件个数;

ll -a /usr/bin/|wc -l

1443

2、取出/etc/passwd文件中第9至第15个用户的用户名和shell,并将其保存至/tmp/users文件中;

head -n 15 /etc/passwd|tail -n 7|tee /tmp/users

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

3、显示/etc目录下所有以.conf开头的文件或目录,并统计其个数;

ll -dh /etc/.conf*|wc -l

ls: 无法访问/etc/.conf*: 没有那个文件或目录

0

4、把/etc/passwd文件最后三行信息中所有小写字符改为大写,并且删除所有的":"、"/"以及数字字符;

tail -n 3 /etc/passwd|tr ‘a-z‘ ‘A-Z‘|tr -d ": 、/ 0-9"

SSHDXPRIVILEGE-SEPARATEDSSHVAREMPTYSSHDSBINNOLOGIN

TCPDUMPXSBINNOLOGIN

WANQIXWANQIHOMEWANQIBINBASH

tail -n 3 /etc/passwd|tr ‘a-z‘ ‘A-Z‘|tr -d ": 、/ [:digit:]"

SSHDXPRIVILEGE-SEPARATEDSSHVAREMPTYSSHDSBINNOLOGIN

TCPDUMPXSBINNOLOGIN

WANQIXWANQIHOMEWANQIBINBASH

5、取出/etc/fstab的第6行;

head -n 6 /etc/fstab|tail -n 1

# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘

6、取出/etc目录下所有以s开头的文件或目录,将其中最前面的8个文件保存到/tmp/start_with_s.out并同时进行标准输出;

ll -dh /etc/[s]*|head -n 8| ll -dh /etc/[s]*|head -n 8|tee /tmp/start_with_s.out

drwxr-xr-x. 2 root root 4.0K 3月   6 17:22 /etc/samba

drwxr-xr-x. 3 root root 4.0K 3月   6 17:23 /etc/sane.d

drwxr-xr-x. 2 root root 4.0K 3月   6 17:23 /etc/sasl2

drwxr-xr-x. 3 root root 4.0K 3月   6 17:28 /etc/scl

-rw-------. 1 root root  122 1月  12 2010 /etc/securetty

drwxr-xr-x. 6 root root 4.0K 3月   6 17:22 /etc/security

drwxr-xr-x. 3 root root 4.0K 3月   6 17:24 /etc/selinux

-rw-r--r--. 1 root root 626K 10月  2 2013 /etc/services

三、其他练习:

1、将目录/etc备份至/backup目录中,并重命名为“etc-当前日期_当前时间”,如etc-2013-02-26_20:46:30;要求保留文件原来的属性,保持链接文件;

mkdir -pv /backup

mkdir: 已创建目录 "/backup"

cp -a /etc /backup/etc-`date +%F-%T`

ll -h /backup

总用量 12K

drwxr-xr-x. 116 root root 12K 3月  23 00:23 etc-2017-03-23-01:27:38

2、使用touch命令基于花括号展开的方式创建如下文件:ace  acf  acg  ade  adf  adg  bce  bcf  bcg  bde  bdf  bdg;

touch /mnt/lianxi/{ace,acf,acg,ade,adf,adg,bce,bcf,bcg,bde,bdf,bdg}.txt

ll -h /mnt/lianxi

总用量 0

-rw-r--r--. 1 root root 0 3月  23 01:43 ace.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 acf.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 acg.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 ade.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 adf.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 adg.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bce.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bcf.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bcg.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bde.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bdf.txt

-rw-r--r--. 1 root root 0 3月  23 01:43 bdg.txt

时间: 2024-10-19 16:19:32

*4 通配符及管道与反引号“`”与花括号“{}”的使用的相关文章

TCL 双引号和花括号的区别

用了很一段时间的Modelsim,用TCL脚本仿真,开始注意起来它,看了些资料,有一个问题始终让我很困惑,那就是花括号 的用法,今天Google了一下,觉得有一点豁然了,记录一下.为了不让自己的翻译影响大家理解,先给出原文,再翻译一下. 第一段: THE RULE SQUARE BRACKETS are used to define a block that's run BEFORE the rest of the command on the current line, and the res

Perl和操作系统交互(一):system、exec和反引号

调用操作系统命令:system函数 system函数可以直接让perl调用操作系统中的命令并执行. system入门示例 例如: #!/usr/bin/perl system 'date +"%F %T"'; system 'echo hello world'; system 'echo',"hello","world"; 执行结果: 2018-06-21 18:32:50 hello world hello world 注意system的参数可

多命令顺序执行,单引号,双引号,反引号,转义符

多命令顺序执行 ; 多命令顺序执行 && 逻辑与 前命令执行ok,后面进行 || 逻辑或 前命令执行失败 后面执行 | 命令1|命令2 命令1结果,让命令来处理通配符 ?匹配任意一个字符 * 匹配0个或者多个任意字符 [] 匹配中括号中的任意一个字符 [-] 匹配括号中的任意一个字符 [^] 逻辑非 匹配不是中括号中的任意一个字符 [[email protected] biji]# aa=666 [[email protected] biji]# echo $aa #打印变量aa666[[

shell脚本中反引号与双引号的·区别与联系

双引号 目的: 为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出. 被双引号用括住的内容,将被视为单一字串.它防止通配符扩展,但允许变量扩展.这点与单引数的处理方式不同. 反引号 目的是为了在双引号内保持函数转换. 但单引号内其无作用.在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行.要处理这种情况,我们得用反单引号来做.fdv=`date +%F`echo "Today $fdv"在倒引号内的

linux 单引号,双引号,反引号

单引号目的: 为了保护文字不被转换.除了他本身. 就是说除去单引号外, 在单引号内的所有文字都是原样输出.1. [[email protected] SP49EP9]# echo '$*><!'    $*><!2. [[email protected] SP49EP9]# echo 'she is crying: "help"'    she is crying: "help"3. [[email protected] SP49EP9]#

linux-单引号、双引号、反引号的区别。

一.单引号和双引号 单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单 引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符 `. 所以下面的结果:num=3echo '$num'$numecho "$nu

Linux Shell 中的反引号,单引号,双引号

反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置. 如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中. [[email protected] sh]# echo The date is `date` The date is 2016年 08月 7日 星期日  19:25:43 CST 单引号,双

shell脚本中的反引号使用 `

反引号是~的英文切换 在shell脚本中,反引号允许将shell命令的输出赋值给变量. test=`date` 这样shell会执行反引号中的命令.并将执行的结果赋值给变量tests.

shell脚本中反引号与$()的区别

反引号与$()的区别: 我们先来看一个例子: 创建一个名为test.sh的文件,在文件中输入如下两条指令 运行结果如下: 为什么这两条语句运行结果不一样呢? 这是一个非常有意思的问题,但要解释这个问题确比较困难,我来换一个简单一点的例子,通俗的解释一下. 比如我们有一个shell脚本名为test1.sh有以两行 我们可以使用sh -x test1.sh来分析bash是如何来解释这个脚本的,返回的信息如下: 通过上图我们可以得出两个结论: 1. 反引号中\$并没有将$的特殊意义转换 反引号包含的内