前面瞭解了centos的安裝 和 基本配置,這裏看以下shell。
1. Shell的基本知識
之前有提到過shell命令執行時的查找路徑,這種重要的東西,這裏再列一遍:(1)用戶給出了命令的路徑,Shell按給定路徑查找,若找到則調入內存執行,若沒找到則輸出提示信息。(2)用戶沒有給出命令的路徑,Shell在環境變量PATH所指定的路徑中依次進行查找,若找到則調入內存執行,沒有找到則輸出提示信息。
1.1 Shell具有如下功能
Shell有多種不同的版本,RHEL/CentOS下默認的Shell是bash。
(1)通配符、命令補全、別名機制、命令歷史
(2)重定向、管道、命令替換、shell編程等
1.2 Shell的元字符:
- * 代表任意字符串
- ? 代表任意字符
- / 代表根目錄或者作爲路徑間隔符
- \ 轉義字符
- $ 變量值置換符
- ’ 在’…’中間的字符均被當作文字處理,指令、文件名、保留字符等不再具有原來的意義
- ” 在”…”中間的字符會被當作文字處理並允許變量值置換。
命令替換,置換
…`中命令的執行結果 - < 輸入重定向字符
- > 輸出重定向字符
- | 管道字符
- & 後臺執行字符,在一個命令之後加上字符”&”,該命令就會以後臺方式執行
- ; 分割順序執行的多個命令
- () 在子Shell中執行一組命令
- {} 在當前Shell中執行一組命令
- ! 執行命令歷史記錄中的命令
- ~ 代表登錄用戶的宿主目錄(自家目錄)
1.3 Shell命令一般格式
cmd [-options] [arguments]
- 單字符參數前使用一個減號,單詞參數前使用兩個減號
- 多個單字符參數前可以只使用一個減號
1.4 目錄和文件名的命名規則
- 大小寫敏感
- 除/之外,所有字符都合法,但最後不要使用空格、製表符、退格、?,@#$&()|;‘’“”<>等
- 避免使用+或-或.來作爲普通文件名的第一個字符,以.開頭的文件或目錄是隱含的
1.5 通配符
- * 匹配任何字符和任何數目的字符
- ? 匹配單個字符
- […]匹配任何包含在括號裏的單個字符
- [!…]匹配任何不包含在括號裏的單個字符
特別注意:”*”能匹配文件或目錄名中的.,但不能匹配首字符是”.”的文件或目錄名。要匹配隱含文件應使用”.*”
- ls /home/*/*.c 列出/home目錄下所有子目錄中的所有c語言源文件
- ls [!abc]* 列出當前目錄下首字符不是a或b或c的所有文件
- ls [a-zA-Z]* 列出當前目錄下首字符是字母的所有文件
2 Linux下的文件類型
- 普通文件(-)
- 目錄(d)
- 符號鏈接(l)
- 字符設備文件(c)
- 塊設備文件(b)
- 套接字(s)
- 命名管道(p)
2.1 硬鏈接(ln file1 file2,建立文件file1的硬鏈接file2)
- 1)文件名是存放在其父目錄中的,而非同文件內容本身存儲在一起。
- 2)硬鏈接文件實際上是在某目錄中創建目錄項,從而使不止一個目錄可以引用到同一個文件。
- 3)硬鏈接將兩個文件名指向硬盤上的同一個存儲空間,對兩個文件中任何一個的內容進行修改都會影響到另一個文件。
- 4)硬鏈接並不是一種特殊類型的文件,而是在同一個文件系統中允許多個目錄項指向同一個文件的一種機制。
2.2 符號鏈接(又叫軟鏈接,ln -s file1 file2,建立file1的符號鏈接文件file2)
- 1)符號鏈接將一個文件指向另外一個文件的文件名
- 2)符號鏈接文件很小,因爲它只記錄了要指向的文件名
- 3)如果被鏈接的文件被刪除,那麼該鏈接就成爲死鏈接
2.3 設備文件
- 1)設備是指computer中的外圍硬件裝置,即除了CPU和內存以外的所有設備。
- 2)Linux通過設備文件屏蔽了設備的複雜性,用戶可以像訪問普通文件一樣訪問設備文件。
- 3)每個設備至少和一個設備文件相關聯,設備文件分爲:字符設備(eg:鍵盤)和塊設備(eg:磁盤)
- 4)Linux下所有設備文件均存放在/dev目錄下
2.4 套接字和命名管道
- 1)套接字和命名管道是Linux環境下實現進程間通信的機制
- 2)命名管道(FIFO)文件允許在同一臺computer上的兩個進程之間進行通信。
- 3)套接字(socket)允許運行在不同computer上的進程間進行通信。
2.5 Linux的目錄結構
linux環境下,文件是歸類存放的。用戶可以使用 man hier 命令獲取linux文件層次說明。
- 1)bin 存放二進制可執行程序
- 2)boot 存放用於系統引導時使用的各種文件
- 3)dev 存放設備文件,用戶通過這些文件訪問外部設備
- 4)etc 存放系統配置文件
- 5)home 存放所有用戶文件的根目錄,有一個用戶就在該目錄下有一個與之對應的子目錄,在用戶登錄時就進入其用戶名對應的目錄(如上圖)
- 6)lib/lib64 存放根文件系統中的程序運行所需要的共享庫及內核模塊
- 7)lost+found 存放一些系統檢查結果,發現不合法的文件或數據都存放在這裏,通常此目錄時空的,除非硬盤遭受了不明損壞
- 8)media 即插即用型存儲設備的掛載點自動在這個目錄下創建,如CD/DVD等
- 9)mnt 臨時文件系統掛載點目錄
- 10)opt 第三方軟件存放目錄
- 11)proc 虛擬文件系統,存放當前內存的映射,主要用於在不重啓機器的情況下管理內核
- 12)root 超級用戶目錄(見上圖)
- 13)sbin 類似/bin目錄,也存放二進制可執行文件,但是隻有root才能訪問
- 14)srv 系統對外提供服務的目錄
- 15)tmp 存放各種臨時文件
- 16)usr 存放系統應用程序
- 17)var 存放隨時需要改變的文件,如系統日誌
3. 常用文件目錄操作命令
3.1 ls 顯示文件和目錄列表
- ls -a 列表顯示當前目錄下的文件和目錄,包括隱藏文件和目錄
- ls -l 長格式顯示結果
ls -R 遞歸
ls -dl /usr/local/ 僅顯示該目錄本身,而不是該目錄中的內容
3.2 pwd 顯示當前工作目錄
3.3 cd 切換目錄
cd 切換到私有目錄
cd ~切換到上一次使用cd命令前的目錄
cd ..返回上一層
cd ../..返回上兩層
3.4 cp複製文件或目錄
cp /bin/?sh .使用通配符從/bin目錄複製多個文件到當前目錄(.)
3.5 find在文件系統中查找指定的文件
find . -name ‘my*’ 從當前目錄下開始查找以my開頭的文件
find /home -user “micheal” 從/home目錄下開始查找用戶屬性爲micheal的文件
3.6 mv 移動文件或目錄;文件或目錄修改名字
3.7 mkdir 創建目錄
mkdir /home/micheal/test以絕對路徑創建目錄
mkdir /p xx/yy 以相對路徑創建目錄
3.8 rm 刪除文件或目錄
rm -f file{1,3,5}強制刪除文件file1、file3和file5
rm -r myusr/ 刪除myusr目錄及其內容
3.9 rmdir 刪除空目錄
3.10 ln 創建鏈接文件
3.11 tree 顯示目錄樹
tree -L 3 /usr/ 顯示/usr目錄下3級目錄樹
3.12 touch 更改存在的文件的時間,不存在則生產一個空文件
touch fiel1 file2 創建兩個0字節的文件
touch oldfile 修改已經存在的文件的時間爲當前時間
touch -r oldfile newfile參考oldfile的時間屬性設置newfile文件的時間
3.13 GNU/Linux文件有3種類型的時間戳
1)mtime:最後修改時間(ls -lt)
2)ctime:狀態改變時間(ls -lc)
3)atime:最後訪問時間(ls -lu)
覆蓋一個文件會改變所有3個類型的時間,改變文件的權限或擁有者會改變ctime和atime,讀文件會改變atime。
上一篇:Linux tutorial 2 - centos 基本配置
下一篇: