2、文件通配符,文件创建、复制等操作

0.目录

问题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
        `-- run
    
    24 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值