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