回顧:
FHS、命令及bash命令歷史
FHS:
/bin, /sbin, /lib, /lib64, /etc
/home, /root
/boot
/media, /mnt
/proc, /sys
/tmp
/srv
/opt
/dev
/usr
Bin, sbin, lib, lib64, share, local, include, ...
/var
cache, lib, log, ....
命令: ?which whersis, ?who, w, alias, unalias
命令歷史: ?history
bash的基礎(chǔ)特性:
命令補(bǔ)全:
Shell程序在接收到用戶(hù)執(zhí)行命令的請(qǐng)求,分析完成之后, 最左側(cè)的字符串會(huì)被當(dāng)作命令:
命令查找機(jī)制:
查找內(nèi)部命令:
根據(jù)PATH環(huán)境變量中設(shè)定的目錄, 自左而右逐個(gè)搜索目錄下的文件名:
給定的打頭字符串如果能唯一標(biāo)識(shí)某命令程序文件,則直接補(bǔ)全:
不能唯一標(biāo)識(shí)某命令程序文件,再單擊tab鍵一次,會(huì)出現(xiàn)列表:
路徑補(bǔ)全:
在給定的起始路徑下,以對(duì)應(yīng)路徑下的打頭字符串逐一匹配起始路徑下的每個(gè)文件:
Tab:
如果能唯一標(biāo)識(shí),則直接補(bǔ)全:
否則,再一次tab,給出列表:
目錄管理類(lèi)命令:
mkdir, rmdir
mkdir - make directories
mkdir [option]...DIRECTORY...
-p:自動(dòng)按需創(chuàng)建父目錄:
-v: verbose,顯示詳細(xì)過(guò)程:
-m: MODE:直接給定權(quán)限:
注意:路徑基名方為命令的作用對(duì)象: 基于之前的路徑必須存在:
rmdir - remove empty directories
rmdir [OPTION]... DIRECTORY...
-p:刪除某目錄后, 如果其父目錄為空, 則一并刪除之:
-v:顯示過(guò)程:
問(wèn)題1:如何創(chuàng)建/tmp/x/y1, tmp/x/y2, /tmp.x/y1/a, /tmp/x/y1/b?
mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir:已創(chuàng)建目錄 "/tmp/x"
mkdir:已創(chuàng)建目錄 "/tmp/x/y1"
mkdir:已創(chuàng)建目錄 "/tmp/x/y1/a"
mkdir:已創(chuàng)建目錄 "/tmp/x/y1/b"
mkdir:已創(chuàng)建目錄 "/tmp/x/y2"
問(wèn)題2:如何創(chuàng)建a_c, a_d, b_c, b_d?
mkdir -pv {a,b}_{c,d}
mkdir:已創(chuàng)建目錄 "a_c"
mkdir:已創(chuàng)建目錄 "a_d"
mkdir:已創(chuàng)建目錄 "b_c"
mkdir:已創(chuàng)建目錄 "b_d"
問(wèn)題3:創(chuàng)建如下目錄結(jié)構(gòu):
/tmp/mysysroot/
──bin
├──etc
│?? └── sysconfig
│?? ????└── network-scripts
├──sbin
├──user
│?? ├── bin
│?? ├── lib
│?? ├── lib64
│?? ├── local
│?? │?? ├── bin
│?? │?? ├── etc
│?? │?? ├── lib
│?? │?? └── sbin
│?? └── sbin
└──var
├──cache
├──log
└──run
mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network
-scripts,user/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
bash的基礎(chǔ)特性之: 命令行展開(kāi)
~:自動(dòng)展開(kāi)為用戶(hù)的家目錄, 或指定的用戶(hù)的家目錄:
{}:可承載一個(gè)以逗號(hào)分隔的路徑列表, 并能夠?qū)⑵湔归_(kāi)為多個(gè)路徑:
例如: ?/tmp/{a,b}相當(dāng)于 /tmp/a /tmp/b
tree命令:
tree ?[option] [directory]
-L level:指定要顯示的層級(jí):
bash的基礎(chǔ)特性: ?命令的執(zhí)行狀態(tài)結(jié)果:
成功: 0
失敗: 1-255
命令執(zhí)行完成之后,其狀態(tài)返回值保存于bash的特殊變量$?中:
命令正常執(zhí)行時(shí),有的還回有命令返回值:
根據(jù)命令及其功能不同,結(jié)果各不相同:
引用命令的執(zhí)行結(jié)果:
$(COMMAND)
或`COMMAND`
bash的基礎(chǔ)特性: 引用
強(qiáng)引用:‘’
弱引用:“”
命令引用: ``
bash的基礎(chǔ)特性: 快捷鍵
Ctrl+a:跳轉(zhuǎn)至命令行首
Ctrl+e:跳轉(zhuǎn)至命令行尾
Ctrl+u:刪除行首至光標(biāo)所在處之間的所有字符:
Ctrl+k:刪除光標(biāo)所在處至行尾的所有字符:
Ctrl+l:清屏, 相當(dāng)于clear
文本查看命令: cat, tac, head, tail, more, less
分屏查看命令: more less
more命令:
more FILE
特點(diǎn):翻屏至文件尾部后自動(dòng)退出:
less命令:
less FILE
head命令:
查看文件的前n行:
head [option] FILE
-n #
-#
tail命令:
查看文件的后n行:
Tail [option] FILE
-n #
-#
-f:查看文件尾部?jī)?nèi)容結(jié)束后不退出, 跟隨顯示新增的行:
stat命令:
stat - display file or file system status
stat FILE...
文件:兩類(lèi)數(shù)據(jù)
元數(shù)據(jù): metadate
數(shù)據(jù): data
時(shí)間戳:
Access time: 2018-03-30 09:22:18.848259259 -0400
Modify time: 2018-03-30 09:20:42.788259296 -0400
Change time: 2018-03-30 09:20:42.788259296 -0400
touch命令:
touch - change file timestamps
touch [OPTION]... FILE...
-c:指定的文件路徑不存在時(shí)不予創(chuàng)建:
-a:僅修改access time:
-m:僅修改modify time:
-t: STAMP
[[CC]YY]MMDDhhmm[.ss]
??|a,f]