歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux文件與目錄管理 - ls, cp, mv

Linux文件與目錄管理 - ls, cp, mv

日期:2017/2/28 13:59:36   编辑:Linux教程

Linux文件與目錄管理 - ls, cp, mv

[root@linuxidc ~]# ls [-aAdfFhilnrRSt] 目錄名稱
[root@linuxidc ~]# ls [--color={never,auto,always}] 目錄名稱
[root@linuxidc ~]# ls [--full-time] 目錄名稱
選項與參數:
-a :全部的文件,連同隱藏檔( 開頭為 . 的文件) 一起列出來(常用)
-A :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
-d :僅列出目錄本身,而不是列出目錄內的文件數據(常用)
-f :直接列出結果,而不進行排序 (ls 默認會以檔名排序!)
-F :根據文件、目錄等資訊,給予附加數據結構,例如:
*:代表可運行檔; /:代表目錄; =:代表 socket 文件; |:代表 FIFO 文件;
-h :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來;
-i :列出 inode 號碼,inode 的意義下一章將會介紹;
-l :長數據串列出,包含文件的屬性與權限等等數據;(常用)
-n :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在帳號管理提到!)
-r :將排序結果反向輸出,例如:原本檔名由小到大,反向則為由大到小;
-R :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來;
-S :以文件容量大小排序,而不是用檔名排序;
-t :依時間排序,而不是用檔名。
--color=never :不要依據文件特性給予顏色顯示;
--color=always :顯示顏色
--color=auto :讓系統自行依據配置來判斷是否給予顏色
--full-time :以完整時間模式 (包含年、月、日、時、分) 輸出
--time={atime,ctime} :輸出 access 時間或改變權限屬性時間 (ctime)
而非內容變更時間 (modification time)

[root@linuxidc ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination)
[root@linuxidc ~]# cp [options] source1 source2 source3 .... directory
選項與參數:
-a :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
-d :若來源檔為連結檔的屬性(link file),則復制連結檔屬性而非文件本身;
-f :為強制(force)的意思,若目標文件已經存在且無法開啟,則移除後再嘗試一次;
-i :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
-l :進行硬式連結(hard link)的連結檔創建,而非復制文件本身;
-p :連同文件的屬性一起復制過去,而非使用默認屬性(備份常用);
-r :遞回持續復制,用於目錄的復制行為;(常用)
-s :復制成為符號連結檔 (symbolic link),亦即『捷徑』文件;
-u :若 destination 比 source 舊才升級 destination !
最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行!

范例一:用root身份,將家目錄下的 .bashrc 復制到 /tmp 下,並更名為 bashrc
[root@linuxidc ~]# cp ~/.bashrc /tmp/bashrc
[root@linuxidc ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆蓋,y為覆蓋
# 重復作兩次動作,由於 /tmp 底下已經存在 bashrc 了,加上 -i 選項後,
# 則在覆蓋前會詢問使用者是否確定!可以按下 n 或者 y 來二次確認呢!

范例二:變換目錄到/tmp,並將/var/log/wtmp復制到/tmp且觀察屬性:
[root@linuxidc ~]# cd /tmp
[root@linuxidc tmp]# cp /var/log/wtmp . <==想要復制到目前的目錄,最後的 . 不要忘
[root@linuxidc tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp
# 注意上面的特殊字體,在不加任何選項的情況下,文件的某些屬性/權限會改變;
# 這是個很重要的特性!要注意喔!還有,連文件創建的時間也不一樣了!
# 那如果你想要將文件的所有特性都一起復制過來該怎辦?可以加上 -a 喔!如下所示:

[root@linuxidc tmp]# cp -a /var/log/wtmp wtmp_2
[root@linuxidc tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2
# 了了吧!整個數據特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性!


范例三:復制 /etc/ 這個目錄下的所有內容到 /tmp 底下
[root@linuxidc tmp]# cp /etc/ /tmp
cp: omitting directory `/etc' <== 如果是目錄則不能直接復制,要加上 -r 的選項
[root@linuxidc tmp]# cp -r /etc/ /tmp
# 還是要再次的強調喔! -r 是可以復制目錄,但是,文件與目錄的權限可能會被改變
# 所以,也可以利用『 cp -a /etc /tmp 』來下達命令喔!尤其是在備份的情況下!

范例四:將范例一復制的 bashrc 創建一個連結檔 (symbolic link)
[root@linuxidc tmp]# ls -l bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:02 bashrc <==先觀察一下文件情況
[root@linuxidc tmp]# cp -s bashrc bashrc_slink
[root@linuxidc tmp]# cp -l bashrc bashrc_hlink
[root@linuxidc tmp]# ls -l bashrc*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc <==與原始文件不太一樣了!
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc_hlink
lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc

范例五:若 ~/.bashrc 比 /tmp/bashrc 新才復制過來
[root@linuxidc tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性,是在目標文件與來源文件有差異時,才會復制的。
# 所以,比較常被用於『備份』的工作當中喔! ^_^

范例六:將范例四造成的 bashrc_slink 復制成為 bashrc_slink_1 與bashrc_slink_2
[root@linuxidc tmp]# cp bashrc_slink bashrc_slink_1
[root@linuxidc tmp]# cp -d bashrc_slink bashrc_slink_2
[root@linuxidc tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc
lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:32 bashrc_slink_1 <==與原始文件相同
lrwxrwxrwx 1 root root 6 Sep 24 14:33 bashrc_slink_2 -> bashrc <==是連結檔!
# 這個例子也是很有趣喔!原本復制的是連結檔,但是卻將連結檔的實際文件復制過來了
# 也就是說,如果沒有加上任何選項時,cp復制的是原始文件,而非連結檔的屬性!
# 若要復制連結檔的屬性,就得要使用 -d 的選項了!如 bashrc_slink_2 所示。

范例七:將家目錄的 .bashrc 及 .bash_history 復制到 /tmp 底下
[root@linuxidc tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個數據一次復制到同一個目錄去!最後面一定是目錄!

范例五:若 ~/.bashrc 比 /tmp/bashrc 新才復制過來
[root@linuxidc tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性,是在目標文件與來源文件有差異時,才會復制的。
# 所以,比較常被用於『備份』的工作當中喔! ^_^

范例六:將范例四造成的 bashrc_slink 復制成為 bashrc_slink_1 與bashrc_slink_2
[root@linuxidc tmp]# cp bashrc_slink bashrc_slink_1
[root@linuxidc tmp]# cp -d bashrc_slink bashrc_slink_2
[root@linuxidc tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc
lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:32 bashrc_slink_1 <==與原始文件相同
lrwxrwxrwx 1 root root 6 Sep 24 14:33 bashrc_slink_2 -> bashrc <==是連結檔!
# 這個例子也是很有趣喔!原本復制的是連結檔,但是卻將連結檔的實際文件復制過來了
# 也就是說,如果沒有加上任何選項時,cp復制的是原始文件,而非連結檔的屬性!
# 若要復制連結檔的屬性,就得要使用 -d 的選項了!如 bashrc_slink_2 所示。

范例七:將家目錄的 .bashrc 及 .bash_history 復制到 /tmp 底下
[root@linuxidc tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個數據一次復制到同一個目錄去!最後面一定是目錄!

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

范例一:復制一文件,創建一目錄,將文件移動到目錄中
[root@linuxidc ~]# cd /tmp
[root@linuxidc tmp]# cp ~/.bashrc bashrc
[root@linuxidc tmp]# mkdir mvtest
[root@linuxidc tmp]# mv bashrc mvtest
# 將某個文件移動到某個目錄去,就是這樣做!

范例二:將剛剛的目錄名稱更名為 mvtest2
[root@linuxidc tmp]# mv mvtest mvtest2 <== 這樣就更名了!簡單~
# 其實在 Linux 底下還有個有趣的命令,名稱為 rename ,
# 該命令專職進行多個檔名的同時更名,並非針對單一檔名變更,與mv不同。請man rename。

范例三:再創建兩個文件,再全部移動到 /tmp/mvtest2 當中
[root@linuxidc tmp]# cp ~/.bashrc bashrc1
[root@linuxidc tmp]# cp ~/.bashrc bashrc2
[root@linuxidc tmp]# mv bashrc1 bashrc2 mvtest2
# 注意到這邊,如果有多個來源文件或目錄,則最後一個目標檔一定是『目錄!』
# 意思是說,將所有的數據移動到該目錄的意思!

ls 命令:15個Linux面試級問題--第一集 http://www.linuxidc.com/Linux/2015-03/114895.htm

ls 命令:十條面試級問題--第二集 http://www.linuxidc.com/Linux/2015-04/115732.htm

Copyright © Linux教程網 All Rights Reserved