第二周作業之:bash狀態返回 | 命令展開 | 文件元組信息 | 命令別名|課后練習

echo

bash的基礎特性:命令的執行狀態結果

命令的執行狀態結果:
bash通過狀態返回值輸出此結果:
成功:0
失?。?-255
命令執行完成之后,其狀態返回值保存于bash的特殊變量$?
[root@localhost /]# echo $?
0
[root@localhost /]# ls aa
ls: cannot access aa: No such file or directory
[root@localhost /]# echo $?
2

命令正常執行時,有的還有命令返回值
根據命令及其功能不同,結果各不相同:

bash的基礎特性之:命令行展開
~:自動展開為用戶的家目錄,或者指定用戶的家目錄
{}: 可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑
例如:/tmp/{a,b}相當于 /tmp/a /tmp/b
mkdir -pv /tmp/x/{y1/{a,b},y2}

1. 創建/tmp目錄下a_c,a_d,b_c,b_d

 [root@loong ~]# ls /tmp
 conf  yum.log
 [root@loong ~]# mkdir /tmp/{a,b}_{c,d}
 [root@loong ~]# ls /tmp
 a_c  a_d  b_c  b_d  conf  yum.log
2. 創建/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

執行過程:-p表示如父目錄不存在,則自動創建之。-v表示顯示創建過程
tree命令顯示目錄的樹形結構

文件的元數據信息有哪些,分別表示哪些含義,如何查看

元數據(Metadata),又稱中介數據、中繼數據,為描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。元數據算是一種電子式目錄,為了達到編制目錄的目的,必須在描述并收藏數據的內容或特色,進而達成協助數據檢索的目的。因此,元數據就是數據的數據。任何文件系統中的數據分為數據和元數據。數據指文件中實際存在的數據,元數據指用來描述該文件的系統特征的數據。諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode…)等等。在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性。

文件系統元數據(metadata)的更改都被保存在一份單獨的日志里,當發生系統崩潰時可以根據日志正確地恢復數據。除此之外,日志使系統重新啟動時不必進行文件系統的檢查,從而縮短了恢復時間。
查看元數據的命令是stat
stat [OPTION]… FILE…

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 10:44:44.170998930 +0800   //訪問時間
Modify: 2017-07-19 10:44:44.170998930 +0800   //修改時間,即修改文件內容
Change: 2017-07-19 10:44:44.170998930 +0800  //改變時間,指元數據改變

可以看出獲得的元數據包括了文件名,文件大小的字節數,文件占用的塊數(blocks),文件權限、用戶屬主和屬組信息,以及最后三行的時間戳信息。

修改文件的時間戳信息
使用touch命令來修改時間戳信息
touch [OPTION]… FILE…
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]

例:直接touch filename,將文件的時間戳修改為當前時間。會修改所有的三個時間戳。

[root@loong tmp]# stat numad.conf
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-05 11:30:10.000000000 +0800
Modify: 2017-07-19 10:44:44.170998930 +0800
Change: 2017-07-19 11:37:05.144985181 +0800
[root@loong tmp]# touch numad.conf
[root@loong tmp]# stat numad.conf 
  File: "numad.conf"
  Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-07-19 14:38:31.574996407 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:38:31.574996407 +0800

例:使用-a選項,僅修改atime,并指定時間為2017-6-21 15:22:05

[root@loong tmp]# touch -a -t 201706211522.05 numad.conf 
[root@loong tmp]# stat numad.conf 
File: "numad.conf"
Size: 91         Blocks: 8          IO Block: 4096   普通文件
Device: 802h/2050d Inode: 147231      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-06-21 15:22:05.000000000 +0800
Modify: 2017-07-19 14:38:31.574996407 +0800
Change: 2017-07-19 14:45:09.950992896 +0800
命令別名
alias命令用來設置指令的別名。我們可以使用該命令可以將一些較長的命令進行簡化。使用alias時,用戶必須使用單引號''將原來的命令引起來,防止特殊字符導致錯誤。
alias命令的作用只局限于該次登入的操作。若要每次登入都能夠使用這些命令別名,則可將相應的alias命令存放到bash的初始化文件/etc/bashrc中。
例如:alias l=‘ls -lsh' 將重新定義ls命令,現在只需輸入l就可以列目錄了。直接輸入 alias 命令會列出當前系統中所有已經定義的命令別名。
查看系統已經設置的別名:
alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
無標題
請心里默寫出答案!

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95972

(0)
cyzcyz
上一篇 2018-04-14
下一篇 2018-04-15

相關推薦

欧美性久久久久