2、文件通配符,文件創建、復制等操作

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.www58058.com/47152

(0)
wangzhenyu177wangzhenyu177
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • Ansible (playbook)

    一、YAML 1.1 YAML介紹 YAML是一個可讀性高的用來表達資料序列的格式。YAML參考了其他多種語言,包括:XML、C語言、Python、Perl以及電子郵件格式RFC2822等。Clark Evans在2001年在首次發表了這種語言,另外Ingy d?t Net與Oren Ben-Kiki也是這語言的共同設計者。 YAML Ain’t Marku…

    Linux干貨 2017-11-01
  • 到處都是Unix的胎記

    一說起Unix編程,不必多說,最著名的系統調用就是fork,pipe,exec,kill或是socket了(fork(2),execve(2), pipe(2), socketpair(2), select(2), kill(2), sigaction(2))這些系統調用都像是Unix編程的胎記或簽名一樣,表…

    Linux干貨 2015-04-03
  • 雙網卡綁定及單網卡多IP地址實現方法

    Bonding就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。mode=1(active-backup):一個網卡處于活動狀態 ,一個處于備份狀態,所有流量都在主鏈路上處理。當活動網卡down掉時,啟用備份…

    Linux干貨 2016-09-05
  • 條件判斷if、case與文件查找locate、find及相關練習

    一、條件選擇 1、if:按條件執行腳本中的內容,可以使用嵌套結構,有單分支、雙分支和多分支結構,每個條件中可以有不止一條語句,如果有多條語句,可以用and(-a)或or(-o)連接在一起,但不能使用&&或||: if COMMANDS; then     COMMANDS;   &n…

    Linux干貨 2016-08-18
  • Bash Shell編程初學基礎篇之二

    Bash Shell編程初學基礎篇之二    時間如白駒過隙,一晃過去了幾周,一切的計劃都沒有變化快。當你制定計劃實施時,在這期間卻會發生許多打亂我們計劃的事情,但是我們還是要堅持下去,勝利是屬于堅持到最后的人!實踐出真理,中級基本結束了,需要回過頭了好好總結一下了。心中總有好多話想找個同行嘮嘮;不廢話了,估計大家都煩了!總有一天,你會成…

    Linux干貨 2015-05-11
欧美性久久久久