命令提示符
[root@localhost ~]#
root:當前登錄用戶
localhost:主機名
~:當前所在的目錄,此處為“家”目錄
#:root超級用戶的提示符,如果是普通用戶,則為 $
命令格式
命令 [選項] [參數]
中括號 [] 表示可選
查詢目錄中的內容:ls
ls [選項] [文件或目錄]
選項:
-a : 顯示所有文件,包括隱藏文件
-l : 顯示詳細信息
-d : 查看目錄屬性
-h : 人性化顯示文件大小
-i : 顯示inode
根據以上選項,敲入命令,顯示結果分別如下:
[root@localhost ~]# ls
anaconda-ks.cfg test
[root@localhost ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cache .config .cshrc .tcshrc test
[root@localhost ~]# ls -l
總用量 4
-rw-------. 1 root root 2752 Nov 10 02:51 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 12 19:26 test
[root@localhost ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 2752 Nov 10 02:51 anaconda-ks.cfg
[root@localhost ~]# ls -ld test/
drwxr-xr-x. 2 root root 6 Nov 12 19:26 test/
[root@localhost ~]# ls -lh
總用量 4.0K
-rw-------. 1 root root 2.7K Nov 10 02:51 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 12 19:26 test
[root@localhost ~]# ls -i
71259104 anaconda-ks.cfg 36099565 test
請注意觀察 ls -l 與 ls -lh 命令的結果的區別
這里需要解釋一下:
-rw-------. 1 root root 2.7K Nov 10 02:51 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 12 19:26 test
首先第一個符號 “-”(引號內的-),表示文件類型(常用的有三種,即-表示文件,d表示目錄,l表示軟鏈接文件),此外還有不常用的,為塊設備文件,字符設備文件、套接字文件、管理文件。
在上述中,我們可以看到 anaconda-ks.cfg 是一個文件,而 test 是一個目錄(可理解為windows的文件夾的概念)。
其次,除去第一個符號,我們來看rw-------
,一共有九個字符,需分為三組,分別為rw-
,---
,---
,每個組按照順序分別表示u所有者,g所屬組,o其他人的權限。在上述中,分別對應為 root,root。即第一個root表示所有者權限為root權限,第二個root表示所屬組的權限也是root權限,對於其他人,則無所謂的權限可言。
其中,r
表示可讀,w
表示可寫,x
表示執行的權限。
為了更加明白,對於 anaconda-ks.cfg 這個文件,這里列一個表格:
前三個字符 | 中間三個字符 | 后三個字符 |
---|---|---|
rw- | --- | --- |
所有者u的權限 | 所屬組g的權限 | o其他人的權限 |
可讀可寫 | 無權限 | 無權限 |
那么,對於 test 這個文件 rwxr-xr-x
,請讀者自行判斷它的權限。
在九個字符之后的點 “.”,表示ACL權限,之后的數字 1 表示引用計數,比如一個文件有一個軟鏈接(類似windows快捷方式),那么它的引用計數就是2。
root 后面的2.7k表示文件的大小,再后面表示日期,最后是文件的名稱。
目錄處理命令
創建目錄:mkdir
mkdir -p [目錄名]
-p : 遞歸創建
[root@localhost ~]# ls
anaconda-ks.cfg test
[root@localhost ~]# mkdir otherFolder
[root@localhost ~]# ls
anaconda-ks.cfg otherFolder test
[root@localhost ~]# mkdir folder_2/test_2
mkdir: 無法創建目錄"folder_2/test_2": 沒有那個文件或目錄
[root@localhost ~]# mkdir -p folder_2/test_2
[root@localhost ~]# ls
anaconda-ks.cfg folder_2 otherFolder test
[root@localhost ~]# ls folder_2/
test_2
如上所示,mkdir 不加選項 -p 時,可以創建一個空目錄,但是無法遞歸創建一個包含子目錄的目錄。加上 -p 即可遞歸創建。
切換所在目錄:cd
cd [目錄]
操作:
- cd ~ : 進入當前用戶的家目錄
- cd-: 進入上次目錄
- cd.. : 進入上一級目錄
- cd : 回到家目錄
[root@localhost ~]# ls
anaconda-ks.cfg folder_2 otherFolder test
[root@localhost ~]# cd /folder_2/test_2
[root@localhost test_2]# cd
[root@localhost ~]# cd -
/root/folder_2/test_2
[root@localhost test_2]# cd ../../otherFolder
[root@localhost otherFolder]# cd ..
[root@localhost ~]#
注意理清概念:相對路徑和絕對路徑
絕對路徑:從根目錄一級級找下去,需要寫全路徑
[root@localhost ~]# cd folder_2/test_2
[root@localhost test_2]#
相對路徑:參照當前所在目錄進行查找
[root@localhost test_2]# cd ../../otherFolder
[root@localhost otherFolder]#
查詢所在目錄位置:pwd
pwd
可以說是最簡單的命令了,查詢所在目錄的位置
[root@localhost ~]# pwd
/root
[root@localhost ~]# ls
anaconda-ks.cfg folder_2 otherFolder test
[root@localhost ~]# cd folder_2/
[root@localhost folder_2]# ls
test_2
[root@localhost folder_2]# cd test_2/
[root@localhost test_2]# pwd
/root/folder_2/test_2
刪除空目錄:rmdir
rmdir [目錄名]
只能刪除空目錄,這個命令用得比較少。
[root@localhost ~]# ls
anaconda-ks.cfg folder_2 otherFolder test
[root@localhost ~]# rmdir otherFolder
[root@localhost ~]# ls
anaconda-ks.cfg folder_2 test
[root@localhost ~]# rmdir folder_2
rmdir: 刪除 "folder_2" 失敗: 目錄非空
[root@localhost ~]#
刪除文件或目錄:rm
rm -rf [文件或目錄]
r 表示可以同時刪除文件和目錄,f表示強制刪除
- 如果不添加任何選項,那么只可以刪除文件,刪除時提示是否確認刪除
- 如果只添加選項 -r,那么可以刪除文件也可以刪除目錄,刪除時提示是否確認刪除
- 如果添加了選項 -rf,那么將不做任何提示刪除文件或目錄
[root@localhost ~]# ls
abc.txt anaconda-ks.cfg folder_2 test
[root@localhost ~]# rm abc.txt
rm:是否刪除普通空文件 "abc.txt"?y
[root@localhost ~]# rm test
rm: 無法刪除"test": 是一個目錄
[root@localhost ~]# rm -r test
rm:是否刪除目錄 "test"?y
[root@localhost ~]# ls
anaconda-ks.cfg folder_2
[root@localhost ~]# rm -rf folder_2
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]#
復制命令:cp
cp [選項] [原文件或目錄] [目標目錄]
選項:
-r : 復制目錄
-p : 同時復制文件屬性
-d : 若源文件是鏈接文件,則復制鏈接屬性
-a : 包含以上所有選項,相當於 -rpd
在[目標目錄]后面加上文件名,就是改名復制。
[root@localhost ~]# ls
anaconda-ks.cfg bbc.txt folder_a folder_b
[root@localhost ~]# cp bbc.txt folder_a
[root@localhost ~]# ls folder_a/
bbc.txt
[root@localhost ~]# cp folder_a folder_b
cp: 略過目錄"folder_a"
[root@localhost ~]# cp -r folder_a folder_b
[root@localhost ~]# ls folder_b
folder_a test_1
[root@localhost ~]# ll
總用量 4
-rw-------. 1 root root 2752 Nov 10 02:51 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 13 17:21 bbc.txt
drwxr-xr-x. 2 root root 20 Nov 13 17:38 folder_a
drwxr-xr-x. 4 root root 34 Nov 13 17:39 folder_b
[root@localhost ~]# ll folder_a
總用量 0
-rw-r--r--. 1 root root 0 Nov 13 17:38 bbc.txt
[root@localhost ~]# cp -a bbc.txt folder_b
[root@localhost ~]# ll folder_b
總用量 0
-rw-r--r--. 1 root root 0 Nov 13 17:21 bbc.txt
drwxr-xr-x. 2 root root 20 Nov 13 17:39 folder_a
drwxr-xr-x. 2 root root 6 Nov 13 17:38 test_1
[root@localhost ~]#
這里需要解釋一下的是,在原文件 bbc.txt 中,其修改時間為 17:21,在普通復制下,它的時間這個屬性是不會被復制,我們可以看到復制后的bbc.txt的時間為17:38,如果需要連同屬性一起復制,那么就加上 -pd 或者 直接 -a,如上所示,我們把bbc.txt復制到folder_b,這時我們查看屬性的時候,時間屬性和原屬性是一致的。
在上述命令中,ll 是 ls -l 的簡寫。
剪切或改名命令:mv
mv [原文件或目錄] [目標目錄]
- 如果原文件或者目錄 與 目標目錄在同一個目錄下,那么就是重命名
- 如果不在同一個目錄下,那么就是剪切
通過以下實踐理解:
[root@localhost ~]# ls
anaconda-ks.cfg bbc.txt
[root@localhost ~]# mv bbc.txt abc.txt
[root@localhost ~]# ls
abc.txt anaconda-ks.cfg
[root@localhost ~]# mkdir test
[root@localhost ~]# ls
abc.txt anaconda-ks.cfg test
[root@localhost ~]# mv abc.txt test/
[root@localhost ~]# ls
anaconda-ks.cfg test
[root@localhost ~]# ls test/
abc.txt
[root@localhost ~]#
鏈接命令:ln
ln -s [原文件] [目標文件]
生成鏈接文件
-s : 創建軟連接
硬鏈接的特征:
- 擁有相同 i 節點和存儲block塊,可以看做是同一個文件
- 可通過i節點識別,i節點是相同的
- 不能跨分區
- 不能針對目錄使用
通過上述命令,可以理解為為某個內容添加一個標簽,通過打開這個標簽就可以進入這個內容,硬連接,即再生成一個標簽,同樣可以通過這個標簽進入這個內容。
如果內容被修改,那么不管從硬鏈接的哪個文件進入,都是被修改的。
軟鏈接的特征:
- 類似windows的快捷方式
- 軟鏈接擁有自己的i節點和block塊,但是數據塊只保存原文件的文件名和I節點號,並沒有實際的文件數據
lrwxrwxrwx
l為軟鏈接(軟鏈接的權限都為rwxrwxrwx,這只是軟鏈接本身的權限)- 修改任意文件,另一個都改變
- 刪除原文件,軟鏈接不能用(和windows的快捷方式一樣)
硬鏈接:
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# mkdir folder
[root@localhost ~]# ls
anaconda-ks.cfg folder
[root@localhost ~]# touch bbb.txt
[root@localhost ~]# ls
anaconda-ks.cfg bbb.txt folder
[root@localhost ~]# ln bbb.txt folder/ccc.txt
[root@localhost ~]# ll folder/
總用量 0
-rw-r--r--. 2 root root 0 Nov 13 18:08 ccc.txt
[root@localhost ~]# ll bbb.txt
-rw-r--r--. 2 root root 0 Nov 13 18:08 bbb.txt
軟鏈接:
[root@localhost ~]# mkdir folder_b
[root@localhost ~]# ln -s bbb.txt folder_b/eee.txt
[root@localhost ~]# ll
總用量 4
-rw-------. 1 root root 2752 Nov 10 02:51 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Nov 13 18:10 bbb.txt
drwxr-xr-x. 2 root root 20 Nov 13 18:09 folder
drwxr-xr-x. 2 root root 20 Nov 13 18:11 folder_b
[root@localhost ~]# ll folder_b
總用量 0
lrwxrwxrwx. 1 root root 7 Nov 13 18:11 eee.txt -> bbb.txt
[root@localhost ~]# rm -rf bbb.txt
[root@localhost ~]# ll folder_b
總用量 0
lrwxrwxrwx. 1 root root 7 Nov 13 18:11 eee.txt -> bbb.txt
刪除了原文件,軟鏈接的箭頭目標為紅色一閃一閃,表示找不到目標文件。
常用目錄作用
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys temp tmp usr var
說明:
- / 根目錄
- /bin 命令保存目錄(普通用戶權限)
- /sbin 命令保存目錄(root權限)
- /boot 啟動目錄,包含啟動相關文件,和開機有關
- /dev 設備文件保存目錄
- /etc 配置文件保存目錄
- /home 普通用戶家目錄
- /lib 系統庫保存目錄
- /mnt 系統掛載目錄
- /media 掛載目錄(常用於光盤掛載)
- /root 超級用戶家目錄
- /tmp 臨時目錄
- /proc 直接寫入內存的
- /sys 直接寫入內存的
- /usr 系統軟件資源目錄
- /var 系統相關文檔內容