1:bash特性之状态返回值
变量$?,用于保存命令执行成功与否的状态,0表示成功,1-255表示失败,以命令ls为例:
-
执行成功
[root@localhost ~]# ls /usr/ bin etc games include lib lib64 libexec local sbin share src tmp [root@localhost ~]# echo $? 0
-
命令输入错误
[root@localhost ~]# lss /usr -bash: lss: command not found [root@localhost ~]# echo $? 127
-
命令参数输入错误
[root@localhost ~]# ls /usrrr ls: cannot access /usrrr: No such file or directory [root@localhost ~]# echo $? 2
其他错误状态,$?也会是非0结果。
2:命令行展开
2.1:使用命令行展开,创建/tmp下的a\_c,a\_d,b\_c,b\_d文件。
[root@localhost ~]# mkdir -pv {a,b}_{c,d} mkdir: created directory `a_c' mkdir: created directory `a_d' mkdir: created directory `b_c' mkdir: created directory `b_d' [root@localhost ~]# ls -d {a,b}_{c,d} a_c a_d b_c b_d
2.2:在/tmp下创建如下文件。
[root@localhost ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,etc{/rc.d/init.d,/sysconfig/network-scripts},dev,lib/modules,lib64,proc,sbin,sys,tmp,usr/local{/bin,/sbin},var{/lock,/log,/run}} [root@localhost ~]# tree /tmp/mylinux//tmp/mylinux/ |-- bin |-- boot | `-- grub |-- dev |-- etc | |-- rc.d | | `-- init.d | `-- sysconfig | `-- network-scripts |-- lib | `-- modules |-- lib64 |-- proc |-- sbin |-- sys |-- tmp |-- usr | `-- local | |-- bin | `-- sbin `-- var |-- lock |-- log `-- run24 directories, 0 files
3:如何定义一个命令的别名?如何在一个命令中引用另一个命令的结果?
使用反引“或$()可引用其他命令的执行结果:
-
使用反引号
[root@localhost ~]# dirname `which touch` /bin # 显示命令touch所在的路径名
-
使用$()
[root@localhost ~]# dirname $(which touch) /bin
4:显示/var目录下所有以字母“l”开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件和目录
[root@localhost ~]# ls -d /var/l*[[:digit:]]*[[:lower:]] /var/l13u /var/lfs3k
5:显示/etc目录下以任意一个数字开头且以一个非数字结尾的文件和目录
[root@localhost ~]# ls -d /etc/[[:digit:]]*[^[:digit:]] /etc/222kkk /etc/333uuu
6:显示/etc目录下以非字母开头且后面跟了一个字母和其他任意长度任意字符的文件和目录
[root@localhost ~]# ls -d /etc/[^[:alpha:]][[:alpha:]]* /etc/1djj
7:在/tmp下创建以tfile开头,后跟当前时间的文件
[root@localhost ~]# touch /tmp/tfile-`date +%F-%H-%M-%S` [root@localhost ~]# touch /tmp/tfile-`date +%F-%H-%M-%S` [root@localhost ~]# ls /tmp tfile-2016-08-25-08-14-35 tfile-2016-08-25-08-14-36
8:复制/etc目录下以字母“p”开头,以非数字结尾的文件到/tmp/mytest1目录中
[root@localhost ~]# mkdir /tmp/mytest1 [root@localhost ~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1/ [root@localhost ~]# ls /tmp/mytest1/ pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols
9:复制/etc目录下所有以.d结尾的目录和文件至/tmp/mytest2目录中
[root@localhost ~]# mkdir /tmp/mytest2 [root@localhost ~]# cp -r /etc/*.d /tmp/mytest2 [root@localhost ~]# ls /tmp/mytest2 bash_completion.d dracut.conf.d makedev.d prelink.conf.d rc1.d rc5.d statetab.d yum.repos.d chkconfig.d init.d modprobe.d profile.d rc2.d rc6.d sudoers.d cron.d ld.so.conf.d pam.d rc.d rc3.d rsyslog.d sysctl.d depmod.d logrotate.d popt.d rc0.d rc4.d rwtab.d xinetd.d
10:复制/etc目录下所有以字母l或n或m开头,以.conf结尾的文件至目录/tmp/mytest3中
[root@localhost ~]# mkdir /tmp/mytest3 [root@localhost ~]# cp -r /etc/[lmn]*.conf /tmp/mytest3 [root@localhost ~]# ls /tmp/mytest3 ld.so.conf libaudit.conf libuser.conf logrotate.conf mke2fs.conf nsswitch.conf
原创文章,作者:wangzhenyu177,如若转载,请注明出处:http://www.178linux.com/47152