本篇介紹文件拷貝操做,主要講兩個命令:centos
命令 | 對應英文 | 做用 |
---|---|---|
tree[目錄名] | tree | 以樹狀圖列出文件目錄結構 |
cp 源文件 目標文件 | copy | 複製文件或者目錄 |
tree命令能夠將一個目錄結構以樹狀圖的形式展現出來,便於咱們瞭解目錄層級關係。在進行文件操做前,這個命令有時頗有用。服務器
在這以前,須要注意的是,你的Linux環境可能沒有這個命令,好比個人centos服務器環境就沒有,這時你能夠本身安裝這個命令,輸入如下命令:spa
yum install tree
直接輸入tree命令能夠查看當前所在目錄的層級關係:code
//在a目錄下輸入 tree //結果 . └── b └── c └── 123.txt
也能夠指定目錄名,好比回到a目錄上層,再輸入命令:blog
tree a //結果 a └── b └── c └── 123.txt
注意兩次展現結果的區別,一個是從 . 開始,表當前目錄,一個是從 a 開始,表a目錄下。it
有時候一個文件夾裏內容太多,若是把所有層級展現出來,結構可能太長了,這時咱們只展現目錄就好,須要用到選項-d
,使用它就能夠只展現目錄。table
仍是拿上面的a目錄演示,我在b目錄裏再建一個文件:class
touch a/b/test.txt //這種寫法是能夠的
再看一下a目錄結構:test
tree a //結果 a └── b ├── c │ └── 123.txt └── test.txt
如今使用 -d 選項:yum
tree -d a //結果 a └── b └── c └── 123.txt
此時發現,b目錄裏的文件沒顯示了,可是c目錄裏還顯示了。關於這個,也多是個人環境緣由,有些命令包括以前已經提到的命令,在不一樣的Linux環境下可能表現有些許差別(我本身以爲),但功能都同樣,本身多試試吧。
拷貝命令也是很簡單,它的結構是:
cp 源文件路徑 目標文件路徑
好比個人根目錄下,有一個readme.txt文件,我想將它複製到home目錄下,並重命名爲test.txt。若是當前目錄就是根目錄,那麼輸入:
cp readme.txt ~/test.txt //~表示home目錄
此時在home目錄下,就有了test.txt文件。這時,若是你不想重命名,你可能這麼寫:
cp readme.txt ~/readme.txt
但其實,咱們能夠更簡單點:
cp readme.txt ~
這樣也是能夠的。因此記住了,若是不想重命名複製的文件,直接寫目標文件的路徑就好。
cp命令的選項也有好幾個,這裏主要說三個:
命令 | 含義 |
---|---|
-f | 對於已經存在的目標文件直接覆蓋,不會提示 |
-i | 覆蓋文件前提示 |
-r | 拷貝一個目錄,目錄下的全部文件及目錄都拷貝 |
看含義就知道什麼意思了,先看 -f 選項,若是咱們不加這個選項,而後複製一個文件名已經存在的文件:
// home目錄下已經有readme.txt這個文件了,而後再複製一份根目錄的readme.txt cp /readme.txt .
結果:
cp: overwrite ‘./readme.txt’?
顯然咱們須要根據提示選擇是否須要覆蓋。那若是咱們不須要提示的話,就可使用 -f 這個選項了:
cp -f /readme.txt .
結果:
cp: overwrite ‘./readme.txt’?
what? 不是不會提示了嗎,怎麼還有提示?這個選項沒效果?剛開始我也懷疑是個人環境緣由,後來上網查詢才瞭解到,默認cp命令是有別名(alias cp='cp -i')
的,沒法強制覆蓋,即便你用 -f 參數也沒法強制覆蓋文件。此時若是想看到效果,能夠臨時取消cp的alias:
unalias cp
再輸入上述複製命令就不會有提示了。不過顯然在平時使用過程當中,咱們不建議使用-f選項,連cp默認都是使用了 -i 選項,這樣作的好處是防止誤操做啊,全部咱們應該儘可能加上 -i 選項,防止不必的損失。
若是咱們想拷貝一個目錄,那麼必須加上 -r 這個選項,我在根目錄下新建了一個test目錄:
tree test //結果 test └── a ├── 123.txt └── b
如今就在當前目錄拷貝一份,並重命名爲test1:
cp test ./test1 //結果 cp: omitting directory ‘test’
咱們再加上 -f 選項:
cp -r test ./test1
這時沒有提示了,沒有提示就是最好的提示,能夠看到當前目錄下多了一個test1目錄。