第六章Linux文件與目錄管理

幾個常見的處理目錄的指令:

  • cd:變換目錄
  • pwd:顯示當前目錄
  • mkdir:建立一個新的目錄
  • rmdir:刪除一個空的目錄

cd (change directory, 變換目錄):

cd ..
#返回上層目錄

cd /home/robin
#絕對路徑去到robin文件夾

cd ./test
#相對路徑去到當前文件夾下的test文件夾

cd 
#只有cd指令返回當前用戶的home目錄。

注意:cd 指令後接的一定要是目錄,比如上方的test一定要是目錄,不能是文件。

pwd (Print Working Directory,顯示目前所在的目錄)

robin@robin-Latitude-E6330:~$ pwd
/home/robin

mkdir (make directory,建立新目錄)

[root@study tmp]# mkdir test
#建立一名爲 test 的新目錄
[root@study tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory
# 多層級目錄建立直接這樣用會報錯,需要加上-p選項。
[root@study tmp]# mkdir -p test1/test2/test3/test4
# 原來是要建 test4 上層沒先建 test3 之故!加了這個 -p 的選項,可以自行幫你建立多層目錄!

rmdir (刪除『空』的目錄)

[root@study tmp]# rmdir test <==可直接刪除掉,沒問題
[root@study tmp]# rmdir test1 <==因爲尚有內容,所以無法刪除!
rmdir: failed to remove ‘test1’: Directory not empty
[root@study tmp]# rmdir -p test1/test2/test3/test4
#同樣,層級刪除文件夾需要-p選項。

注意:rmdir指令只能刪除空文件夾!!!不能有任何其他的文件等。上方的test1234其實也是層層空文件夾。要刪除帶文件的,需要rm指令。

執行文件路徑的變量: $PATH

查閱文件屬性的指令 ls 完整文件名爲:/bin/ls(絕對路徑),
但是在使用時,在任何目錄下輸入 ls 就一定可以顯示出一些訊息而不會說找不到該 /bin/ls 指令!這是因爲環境變量
PATH 所致!
顯示定義的環境變量:

[root@study ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

當我們在執行一個指令的時候,例如『ls』,系統會依照 PATH 的設定去每個 PATH 定義的目錄下搜尋文件名爲 ls 的可執行文件, 如果在 PATH 定義的目錄中含有多個文件名爲 ls 的可執行文件,那麼先搜尋到的同名指令先被執行!
PATH(一定是大寫)這個變量的內容是由一堆目錄所組成的,每個目錄中間用冒號(:)來隔開, 每個目錄有『順序』之分。仔細觀察可以發現,無論是 root 還是 dmtsai 都有 /bin 或/usr/bin 這個目錄在 PATH 變量內,所以就能夠在任何地方執行 ls 來找到/bin/ls 執行文件了!

簡單說一下自己的理解,並不確定對不對:
指令本質上也是可執行程序,本來運行一個程序應該老老實實的敲上路徑,找到它並運行。但是,環境變量提供了一個解決方案就是,我用這個變量事先連接好一堆文件夾,這些文件夾裏存放的各種指令(其實也是可執行程序)。這樣,我在任何目錄下直接敲指令,也能運行,因爲PATH自己去連接好的目錄裏去找了。所以在表面使用上實現了任何目錄下都能調用常用的指令。

文件與目錄管理

文件與目錄的檢視: ls:

[root@study ~]# ls [-aAdfFhilnrRSt] 文件名或目錄名稱..
[root@study ~]# ls [--color={never,auto,always}] 文件名或目錄名稱..
[root@study ~]# ls [--full-time] 文件名或目錄名稱..

選項與參數(僅列些常用的,其實還有很多):
-a :全部的文件,連同隱藏檔( 開頭爲 . 的文件) 一起列出來(常用)
-A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
-d :僅列出目錄本身,而不是列出目錄內的文件數據(常用)
-l :長數據串行出,包含文件的屬性與權限等等數據;(常用)

複製、刪除與移動: cp, rm, mv

cp (複製文件或目錄)

[root@study ~]# cp [-adfilprsu] 來源文件(source) 目標文件(destination)
[root@study ~]# cp [options] source1 source2 source3 .... directory

**選項與參數(僅列寫常用的):**
-a :相當於 -dr --preserve=all 的意思,至於 dr 請參考下列說明;(常用)
-i :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
-p :連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用);
-r :遞歸持續複製,用於目錄的複製行爲;(常用)
-s :複製成爲符號鏈接文件 (symbolic link),亦即『快捷方式』文件;

示例:

cp ./hehe.txt ./folder1
#將當前文件夾中的hehe.txt文件複製到當前文件夾中的folder1文件夾內。

cp ./hehe.txt ./folder1/hehe_copy.txt
#將當前文件夾中的hehe.txt文件複製到當前文件夾中的folder1文件夾內。並更名爲hehe_copy.txt

-i選項用時最好是加上,因爲啓動交互確認後,會防止誤操作導致的覆蓋等等問題。
-a和-p操作一般用於備份,將文件的屬性也一起copy過去。

-r爲遞歸操作,用於copy文件夾,不然會報cp: 略過目錄。
cp ./folder1 ./folder2
#將當前文件夾下的folder1複製到當前文件夾下的folder2文件夾內。
-s複製爲一個快捷方式。用法跟普通默認的一樣,只是copy的結果是快捷方式。
cp ./hehe.txt ./folder1
#在folder1內創建一個hehe.txt文件的快捷方式。會標示此文件爲快捷方式。

rm (移除文件或目錄)
首先說一下,這個刪除是真正的刪除,不會估計是否目錄爲空等等。就是用於刪除數據的,所以也比較危險。

[root@study ~]# rm [-fir] 文件或目錄
選項與參數:
-f :就是 force 的意思,忽略不存在的文件,不會出現警告訊息;
-i :互動模式,在刪除前會詢問使用者是否動作
-r :遞歸刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

例1:刪除一個文件:
rm ./hehe.txt

例2:刪除前詢問:
rm -i hehe.txt
rm: remove regular file `hehe.txt'? y

例3:用*模糊刪除
rm -i a*.txt
# 刪除a開頭的txt文件。星號代表的是 0 到無窮多個任意字符!也就是說a1.txt甚至是a10000.txt都能被刪掉,不用說對齊位數,因爲*就代表一切字符串。

另外,-r刪除文件夾時,若是root用戶,自動加了-i功能,會詢問,但是若不是root用戶,就不會詢問了,直接刪掉。

mv (移動文件與目錄,或更名)

[root@study ~]# mv [-fiu] source destination
[root@study ~]# mv [options] source1 source2 source3 .... directory
選項與參數:
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,纔會更新 (update)

例1:移動文件
mv b1.txt test1
#將b1.txt移動到test1文件夾2:移動文件並更名
mv b1.txt test1/b1_mv.txt3:移動文件夾
mv test2 test1
#跟文件沒區別,直接動就是了。4:文件更名
mv test2 test3
#將目錄下的test2更名爲test3,本質相當於向本文件夾移動並更名。當然還可以用rename,後面再說。5:多文件移動
mv bashrc1 bashrc2 hehe.txt mvtest2
# 注意!如果有多個來源文件或目錄,則最後一個目標文件一定是『目錄!』
# 意爲將所有的數據移動到該目錄!

強調一遍,在複製刪除刪除操作式,由於涉及到數據文件的變更,所以儘量用-i選項,來確保不會誤操作!!!!

取得一個文件的名稱和路徑:
這個寫程序時經常用。

basename /etc/sysconfig/network
#取得了最後面文件的名稱~
network
dirname /etc/sysconfig/network
#取得了文件所在的目錄~
/etc/sysconfig

6.3 文件內容查閱

查看文件內容:
說白了就是讓其在terminal顯示文件內容。

cat [-AbEnTv]

選項與參數:
-n :打印出行號,連同空白行也會有行號

例1,顯示文檔:
cat haha.txt
im robin
#文檔內容爲一行:im robin2,顯示文檔並添加行號:
cat -n haha.txt
     1  im robin
#內容前會有行號。

touch指令創建新文件:
touch指令有兩個主要的功能就是修改文件時間,和創建文件。暫時先不管修改文件時間了,因爲沒用到感覺。。。

touch hehe.txt
#創建一個hehe.txt文件。

file指令觀察文件的類型:

file haha.txt 
haha.txt: ASCII text
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章