第一題 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關(guān)示例演示。
mkdir:創(chuàng)建目錄
語(yǔ)法:mkdir [OPTION]... DIRECTORY...
常用選項(xiàng):
-p:若要建立目錄的上層目錄目前尚未建立,則會(huì)一并建立上層目錄,遞歸創(chuàng)建
-v:顯示命令的詳細(xì)執(zhí)行過(guò)程
-m:建立目錄的同時(shí)設(shè)置目錄的權(quán)限
示例:~]# mkdir -pv /tmp/a/b/c
mkdir: created directory ‘/tmp/a’
? ? ? ? mkdir: created directory ‘/tmp/a/b’
? ? ? ? mkdir: created directory ‘/tmp/a/b/c’
? ? rmdir:刪除空目錄
語(yǔ)法:rmdir [OPTION]... DIRECTORY...
常用選項(xiàng):
-p:刪除指定目錄后,若該目錄的上層目錄已變成空目錄,則將其一并刪除,遞歸刪除
-v:顯示命令的詳細(xì)執(zhí)行過(guò)程
示例:~]# rmdir -pv /tmp/a
? ? ? ? rmdir: removing directory, ‘/tmp/a/b/c’
? ? ? ? rmdir: removing directory, ‘/tmp/a/b’
rmdir: removing directory, ‘/tmp/a’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busy
tree:用于以樹(shù)狀圖列出目錄的內(nèi)容
語(yǔ)法:tree(選項(xiàng))(參數(shù))
常用選項(xiàng):
-a:顯示所有文件和目錄
-d:先是目錄名稱而非內(nèi)容
-D:列出文件或目錄的更改時(shí)間
-f:在每個(gè)文件或目錄之前,顯示完整的相對(duì)路徑名稱
-g:列出文件或目錄的所屬群組名稱,沒(méi)有對(duì)應(yīng)的名稱時(shí),顯示群組識(shí)別碼
-s:列出文件和目錄大小
示例:~]# tree /tmp
/tmp
├── ks-script-iuOeuf
├── systemd-private-2446b9f303064c4881dff4c7cfb73af2-chronyd.service-pcxxmY
│?? └── tmp
├── vmware-root
└── yum.log
cp:文件復(fù)制
語(yǔ)法:?jiǎn)卧磸?fù)制:cp [OPTION]... [-T] SOURCE DEST
? ? ? 多源復(fù)制:cp [OPTION]... SOURCE... DIRECTORY
? ? ? 多源復(fù)制:cp [OPTION]... -t DIRECTORY SOURCE...
常用選項(xiàng):
-i:交互式復(fù)制,即覆蓋之前提醒用戶確認(rèn)
-f:強(qiáng)制覆蓋目標(biāo)文件,即不需要用戶再次確認(rèn)
-r,-R:遞歸復(fù)制目錄
-d:當(dāng)復(fù)制符號(hào)連接時(shí),把文件或目錄也建立為符號(hào)連接,并指向與源文件或目錄連接的原始文件或目錄
-v:顯示指令的詳細(xì)執(zhí)行過(guò)程
mv:對(duì)文件或目錄重新命名或?qū)⑽募囊粋€(gè)目錄移到別一個(gè)目錄中
語(yǔ)法:mv [OPTION]... [-T] SOURCE DEST
? ? ? mv [OPTION]... SOURCE... DIRECTORY
? ? ? mv [OPTION]... -t DIRECTORY SOURCE...
rm:刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,也可以將某個(gè)目錄及其下屬的所有文件或其子目錄刪除掉
語(yǔ)法: rm [OPTION]... FILE...
常用選項(xiàng):
-f:強(qiáng)制刪除文件或目錄
-i:刪除已有文件或目錄之前先詢問(wèn)用戶
-r,-R:遞歸刪除,將指定目錄下的所有文件與子目錄一并處理
-v:顯示指令的詳細(xì)執(zhí)行過(guò)程
注意:使用rm命令要格外小心。因?yàn)橐坏﹦h除了一個(gè)文件,就無(wú)法再恢復(fù)它。建議創(chuàng)建一個(gè)類似回收站的目錄,將這些文件存入此目錄中,確認(rèn)是否真的不需要了,再進(jìn)行此命令。
第二題 bash的工作特性之命令執(zhí)行狀態(tài)返回值和命令行展開(kāi)所涉及的內(nèi)容及其示例演示。
答:
1)命令執(zhí)行狀態(tài)結(jié)果:bash通過(guò)狀態(tài)返回值來(lái)輸出此結(jié)果
成功:0
失敗:1-255
命令執(zhí)行完成之后,其狀態(tài)返回值保存與bash的特殊變量$?中:~]# echo $?
示例:~]#ls /etc
~]# echo $?
0
~]#lssssss /etc
~]# echo $?
127
通過(guò)結(jié)果會(huì)發(fā)現(xiàn)命令下方的0代表成功,除0以外的1-255的數(shù)字代表失敗,根據(jù)命令及其功能不同,結(jié)果也各不相同并且,此命令只能用于上一條命令
2)命令行的展開(kāi):
~:自動(dòng)展開(kāi)為用戶的家目錄,或制定的用戶的家目錄
{}:可承載一個(gè)以逗號(hào)分隔的路徑列表,并能夠?yàn)槠湔归_(kāi)為多個(gè)路徑
如:/tmp/{a,b} 相當(dāng)于/tmp/a tmp/b
第三題 請(qǐng)使用命令行展開(kāi)功能來(lái)完成以下練習(xí)
1)創(chuàng)建/tmp目錄下的:a_c, a_d, b_c, b_d
~]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_d’
2)創(chuàng)建/tmp/mylinux目錄下的:
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
? ? ~]# mkdir -pv /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}}
? ? mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/bin’
mkdir: created directory ‘/tmp/mylinux/boot’
mkdir: created directory ‘/tmp/mylinux/boot/grub’
mkdir: created directory ‘/tmp/mylinux/dev’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconfig/network-scripts’
mkdir: created directory ‘/tmp/mylinux/lib’
mkdir: created directory ‘/tmp/mylinux/lib/modules’
mkdir: created directory ‘/tmp/mylinux/lib64’
mkdir: created directory ‘/tmp/mylinux/proc’
mkdir: created directory ‘/tmp/mylinux/sbin’
mkdir: created directory ‘/tmp/mylinux/sys’
mkdir: created directory ‘/tmp/mylinux/tmp’
mkdir: created directory ‘/tmp/mylinux/usr’
mkdir: created directory ‘/tmp/mylinux/usr/local’
mkdir: created directory ‘/tmp/mylinux/usr/local/bin’
mkdir: created directory ‘/tmp/mylinux/usr/local/sbin’
mkdir: created directory ‘/tmp/mylinux/var’
mkdir: created directory ‘/tmp/mylinux/var/lock’
mkdir: created directory ‘/tmp/mylinux/var/log’
mkdir: created directory ‘/tmp/mylinux/var/run’
第四題 文件的元數(shù)據(jù)信息有哪些,分別表示什么含義,如何查看?如何修改文件的時(shí)間戳信息。
答:
stat:顯示文件或文件系統(tǒng)狀態(tài)信息(元數(shù)據(jù)信息)
語(yǔ)法:stat [OPTION]... FILE...
例如: ~]# stat /etc/magic
File: ‘/etc/magic’
? Size: 111? ? ? Blocks: 8? ? ? ? ? IO Block: 4096? regular file
Device: fd00h/64768d Inode: 67208643? ? Links: 1
Access: (0644/-rw-r--r--)? Uid: (? ? 0/? ? root)? Gid: (? ? 0/? ? root)
Context: system_u:object_r:etc_t:s0
Access: 2018-08-14 01:51:31.003309475 -0400
Modify: 2016-11-05 16:07:30.000000000 -0400
Change: 2018-08-13 23:38:49.497514785 -0400
Birth: -
File:文件名稱
Size:文件大小
Blocks:占據(jù)的硬盤(pán)塊數(shù)
IO Block:每個(gè)IO塊的大小
regular file:文件類型
Device:所在設(shè)備
Inode:Inode節(jié)點(diǎn)號(hào)
Links:被鏈接的次數(shù)
第一個(gè)Access:訪問(wèn)權(quán)限
Uid:Uid號(hào)和屬主
Gid:gid號(hào)和屬組
Context:(SELinux)環(huán)境
第二個(gè)Access:文件最近一次的訪問(wèn)時(shí)間
Modify:文件的更改時(shí)間
Change:文件的改變時(shí)間
Birth:創(chuàng)建日期
touch:用于創(chuàng)建空文件或更改文件的三個(gè)時(shí)間戳
語(yǔ)法:touch [OPTION]... FILE...
常用選項(xiàng):
-a:只修改訪問(wèn)時(shí)間
touch -a /tmp/yum.log
-m:只修改更改時(shí)間
touch -m /tmp/yum.log
-c:如果文件存在,則更新三個(gè)時(shí)間戳,并且不創(chuàng)建空文件。如果文件不存在,則創(chuàng)建一個(gè)空文件
touch -c /tmp/yum.log
-t:使用指定的日期時(shí)間
touch -t 201811081110 /tmp/yum.log
第五題 如何定義一個(gè)命令的別名,如何在命令中引用另一個(gè)命令的執(zhí)行結(jié)果?
答:
alias:獲取當(dāng)前用戶可用的別名
~]# alias
定義別名:
~]# alias NAME='COMMAND'
僅當(dāng)前shell進(jìn)程有效
撤消別名:
~]# unalias NAME
如果別名與命令名相同時(shí),直接調(diào)用原命令,而非別名,可用\COMMAND取消命令別名功能
例如:~]# alias st=stat
則可使用st代替stat命令,如果不想使用此別名,則可繼續(xù)使用stat或者~]#unalias st取消此別名
使用管道符可以引用另一個(gè)命令的執(zhí)行結(jié)果
如:~]# cat /etc/passwd | head -n -6
或者定義一個(gè)命令的別名也可以在命令中引用別一個(gè)命令的執(zhí)行結(jié)果。
第六題 顯示/var目錄下所有以l開(kāi)頭,以一個(gè)小寫(xiě)字母結(jié)尾,且中間至少出現(xiàn)一位數(shù)字(可以有其它字符)的文件或目錄。
答:
~]#ls -d /var/l*[a-z]
匹配模式:元字符
*:匹配任意長(zhǎng)度的任意字符
?:匹配任意單個(gè)字符
[]:匹配指定范圍內(nèi)的任意單個(gè)字符
有幾種特殊格式:
[a-z],[A-Z],[0-9],[a-z0-9],此處字母不區(qū)分大小寫(xiě)
[[:upper:]]:所有大寫(xiě)字母
[[:lower:]]:所有小寫(xiě)字母
[[:alpha:]]:所有字母
[[:digit:]]:所有數(shù)字
[[:alnum:]]:所有的字母和數(shù)字
[[:space:]]:所有空白字符
[[:punct:]]:所有標(biāo)點(diǎn)符號(hào)
[^]:匹配指定范圍外的任意單個(gè)字符
[^[:upper:]]:除了所有大寫(xiě)字母以外的
[^0-9]除了所有數(shù)字以外的
[^[:alnum:]]除了所有字母和數(shù)字以外的
第七題 顯示/etc目錄下,以任意一個(gè)數(shù)字開(kāi)頭,且以非數(shù)字結(jié)尾的文件或目錄。
答:
~]# ls -d /etc/[0-9]*[^0-9]
第八題 顯示/etc目錄下,以非字母開(kāi)頭,后面跟了一個(gè)字母以及其它任意長(zhǎng)度任意字符的文件或目錄。
~]# ls -d /etc/[^0-9][a-z]*
第九題 在/tmp目錄下創(chuàng)建以tfile開(kāi)頭,后跟當(dāng)前日期和時(shí)間的文件,文件名形如:tfile-2016-05-27-09-32-22。
~]# mkdir? -v /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
第十題 復(fù)制/etc目錄下所有以p開(kāi)頭,以非數(shù)字結(jié)尾的文件或目錄到/tmp/mytest1目錄中。
~]# cp -rv /etc/p*[^0-9] /tmp/mytest1
第十一題 復(fù)制/etc目錄下所有以.d結(jié)尾的文件或目錄至/tmp/mytest2目錄中。
~]# cp -rv /etc/*.d /tmp/mytest2
第十二題 復(fù)制/etc/目錄下所有以l或m或n開(kāi)頭,以.conf結(jié)尾的文件至/tmp/mytest3目錄中。
~]# cp /etc/[lmn]*.conf /tmp/mytest3