本文的主要內容是:
1.Linux上的基本文件管理命令
2bash的特性及其命令狀態返回值
3.bash的花括號展開機制
4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
5如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
6.bash特性之globbing文件名匹配以及示例詳解:
(1)顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
(2).顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
(3)顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
(4)在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
(5)復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
(6).復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
(7)復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
1.Linux上的基本文件管理命令
Linux的哲學思想之一就是一切皆文件,幾乎所有的配置文件都已純文本的形式存在,甚至連物理設備的訪問入口也是文件,因此,對文件的管理尤為中重要,是玩轉Linux的基本技能。常見的文件管理命令有:
(1) ls : 列出指定目錄下文件
語法: ls [options] [file]
常用選項:
-a : 列出指定目錄下的所有文件,包括隱藏文件
-l : 以長格式列出文件信息
-d:查看目錄自身而非其內部的文件列表;
-R: recursive,遞歸顯示;
-h : 默認情況下,列出的文件的信息是以字節為單位,-h選項能使列出的文件大小以 KB,MB等為單位列出,通常與-l一起組合使用
示例:
表示列出/etc目錄下的所有文件 : ls -a /etc/
以人容易讀懂的長格式顯示/etc下的文件:ls -lah /etc/
只查看指定的文件信息:ls -lah /etc/fstab
(2) cp:復制文件和目錄,默認情況下不能復制目錄。
語法:cp [options] source dest
常用選項:
-f : 強行復制文件或目錄, 不論目的文件或目錄是否已經存在
-p :保留源文件或目錄的屬性,包括所有者、所屬組、權限與時間
-d:復制鏈接屬性
-R: 遞歸處理,將指定目錄下的文件及子目錄一并處理
示例:
將file1 復制到 /tmp/ : cp file1 /tmp/file1
將dir1下的文件復制到/tmp/下:cp -R dir1 /tmp/
復制時保留文件的屬性: cp -p fiel1 /tmp/
(3)pwd:顯示工作目錄
(4)cd:改變工作目錄
語法:cd [options] dest_dir
常用選項:
cd: 切換回家目錄;
cd ~ username:切換到指定用戶的家目錄
cd – :在上一次所在的目錄與當前目錄之間進行切換
(5) cat : 查看指定文件的內容
語法:cat [options] file
常用選項:
-n :顯示文件內容的時候添加行號
示例:
查看file的內容: cat -n file
(6).tac:查看文件的內容,是從后往前查看
語法: tac [options] file
常用選項:
-n:顯示時添加行號
示例:
tac -n file1
(7)file:查看文件類型
語法:file file_name
(8).mv:移動或者重命名文件
語法:mv [options] source dest
常用選項:
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
示例:
將當前目錄下的文件file重命名為file1:mv file file1
將當前目錄下的file移動到/tmp/file,而且要做個備份:mv -b file /tmp/file
(9).rm:刪除文件或者目錄,默認情況下,當文件不為空的時會詢問是否要刪除,此命令及其危險,操作之前請三思而后行。
語法:rm [options] file
常用選項:
-r:遞歸刪除
-f :強行刪除
-i:刪除文件之前會詢問是否刪除
示例:
刪除文件file: rm file
強制刪除文件file:rm -f file
刪除/tmp/下的test目錄: rm -r /tmp/test/
強制刪除/tmp/test/目錄:rm -rf /tmp/test
(10).wc:統計文件中單詞個數和文件的行數
語法:wc [options] file
常用選項:
-l:文件的行數
-w:統計單詞的個數
示例:
統計file的行數:wc -l file
統計file的單詞個數:wc -w file
(11)sort:對文本文件進行排序
語法:sort [options] file
常用選項:
-d : 按字典順序進行排序
-n :按數字進行排序
-r:逆序排序
示例:
對file進行逆序排序:sort -r file
對fi按字典順序進行排序:sort -d file
對file按數字順序進行排序:sort -n file
(12).tr:轉換或刪除字符
語法 : tr [options] set1 set2
常用選項:
-d : 刪除指定的字符集合
-s : 刪除重復的字符集合
常用的字符串集合:
[a-z]:全部小寫字符集合
[A-Z]:全部大寫字符的集合
[0-9]:全部數字的集合
示例:
將file中的全部小寫轉換為大寫:tr [a-z] [A-Z] < file
將file中的數字全部刪除: tr -d [0-9] < file
刪除file中的空行:tr -s "\n" < file
(13).mkdir:創建目錄
語法:mkdir [options] dir_name
常用選項:
-p:當父目錄不存在時先創建父目錄
-v:顯示詳細的創建過程
-m MODE:創建目錄時直接指定權限
示例:
在/tmp目錄下創建test1/test2/目錄,test1事先不存在:mkdir -p /tmp/test1/test2
2.bash特性之命令狀態返回值
bash中每個命令執行之后只會有兩種狀態,成功或者失敗,而成功執行返回的指是0,若返回值為其他的則說明上一條命令執行失敗了。
查看方法:echo $?
3.bash特性之展開機制
(1).命令行展開:
~:自動展開為用戶的家目錄
{}:將逗號分隔的路徑列表展開為多個路徑
例如:
在/tmp/下創建a_c, a_d, b_c, b_d : touch {a,b}_{c,d}
創建有如下結構的文件目錄/tmp/mysysroot/
|– bin
|– etc
| — sysconfig
| — network-scripts
|– sbin
|– usr
| |– bin
| |– lib
| |– lib64
| |– local
| | |– bin
| | |– etc
| | |– lib
| | |– sbin
| |– sbin
— var
|– cache
|– log
|– run
mkdir -p /tmp/mysysroot/{bin,etc/sysconfig/network-script,sbin,usr/{bin,lib,lib64,local/{bin,etc,lib,sbin}sbin}var/{cache,log,run}}
4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息
(1).文件的元數據有:
文件類型:常見的類型有普通文件(f),目錄(d),塊設備文件(b),字符設備(c),管道文件(p),套接字文件(s),連接文件(l)。
屬主和屬組信息:創建文件的用戶以及該用戶所屬的用戶組
屬主和屬組和其他用戶對文件的權限:三位為一組,分別是r(讀)w(寫)x(執行),對應位沒有則顯示為-
文件的大?。猴@示了文件的大小,通常以字節為單位
文件的時間戳:包括文件的創建時間,修改時間和改變時間
文件名稱:即為文件的名字
(2)修改文件的時間戳
touch:修改文件的時間戳
語法: touch [options] file
常用選項:
-c: 指定的文件路徑不存在時不予創建;
-a: 僅修改access time;
-m:僅修改modify time;
-t STAMP
示例:
創建不存在的文件file:touch file
更新文件的時間戳 file:touch -r file
設定文件的時間戳:touch -t 201211142234.50 file
5.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
(1).定義命令別名:
alias name=command : 只對當前進程有效,下次重新啟動時就會失效,要想永久有效,要將其寫入配置文件中。
(2).引用另一個命令的執行結果的方法:管道(|),同時也體現了Linux的重要哲學思想之一,組合小程序完成復雜的任務。
例如:
想分屏顯示查看你ls得到的結果 ls -lah | less
6.bash的特性之globbing文件名通配
bash的特性之一,支持globbing文件名通配,即支持元字符匹配模式,常用的有
\*:匹配任意長度任意字符
? :任意的單個字符
[ ]:范圍內的任意單個字符
[^ ] :范圍外的任意單個字符
常見用于匹配的字符集合有:
[[:upper:]]:所有大寫的字母
[[:lower:]] : 所有小寫字母
[[:alpha:]]:所遇的字母
[[:digit:]]:所有數字集合
[[:space:]:空格
[[:alnum:]]]:字母和數字
[[:punct:]]:標點符號
(1).顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
ls -d /var/l?[[:lower:]]
(2).顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]^[0-9]
(3)顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄
ls -d /etc/[^a-z][a-z]*
(4)在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
touch /tmp/ file-`date +%Y-%m-%d-%H-%M-%S`
(5).復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中:
cp -r /etc/p[^0-9] /tmp/mytest1
(6).復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄
cp -r /etc/*.d /tmp/mytest2
(7)復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中:
cp /etc/[lmn]*.conf /tmp/mytest3
原創文章,作者:zhangbao,如若轉載,請注明出處:http://www.www58058.com/49067
在總結知識點的時候能多一些實驗環節能加深印象,想得越多,實踐的越多越記憶深刻。