![]() |
![]() |
![]() |
![]() |
![]() |
語法:ln [-otpiton][--option] source target_link_file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
ln/ (link)建立連結/ Any |
-s | 建立符號連結(Symbolic Link),如無此選項預設為硬連結 (Hard Link) |
-b | 如要建立的連結檔已存在,會先自動備份已存在的檔案(備份檔字尾加〝~〞) | |
-f | 如要建立的連結檔已存在,覆蓋舊檔 | |
--help | 指令自帶說明 |
$ ls -lgGh /usr/share/dict/ ←檢查目錄 "/usr/share/dict/" 大小 -rw-r--r--. 1 4.8M May 16 2010 linux.words ←目錄大小 4.8M $ ln -s /usr/share/dict/ s_link ←建立符號連結檔〝s_link〞連結到〝/usr/share/dict/〞 $ ls -lgGh s_link ←查看一下符號連結檔〝s_link〞的大小 lrwxrwxrwx. 1 16 Jul 12 22:25 s_link -> /usr/share/dict/ ←其符號連結只佔 16 byte |
$ cd ~ ←cd 到家目錄來實驗 $ echo '12345' > source ←建立一檔案〝source〞內容為〝12345〞 $ ln -sf source s_link ←建立符號連結檔〝s_link〞連結到工作目錄內的檔案〝source〞 $ cat s_link ←驗證一下軟連結檔〝s_link〞內容和〝source〞是否相同 12345 $ mv s_link /tmp ←實驗一下將軟連結檔〝s_link〞移到目錄 /tmp 下 $ cat /tmp/s_link ←驗證一下軟連結檔〝s_link〞內容 cat: /tmp/s_link: No such file or directory ←找不到檔案 $ ln -sf ~/source s_link ←用絕對路徑再實驗上述步驟 $ mv -f s_link /tmp $ cat /tmp/s_link ←驗證一下 12345 ←如用絕對路徑,把軟連結檔移到其他目錄就不會有問題了 $ rm ~/source ←把來源檔殺掉 $ cat /tmp/s_link ←驗證一下來源檔不見了,軟連結檔會如何? cat: /tmp/s_link: No such file or directory ←找不到檔案了 |
$ ln -s /etc s_link2dir ←建立符號連結檔〝s_link2dir〞連結到目錄〝/etc〞 $ ls -lgG s_link2dir ←用指令 ls 看一下〝s_link2dir〞有無連結到目錄〝/etc〞 lrwxrwxrwx 1 4 2011-09-13 16:49 s_link_dir -> /etc $ cd s_link2dir ←看一下可不可以進入符號連結的目錄 |
$ cp /etc/services /tmp ←複製 /etc/services 到 /tmp 目錄下準備作為實驗的來源檔 $ ln /tmp/services h_link ←建立硬連檔〝h_link〞硬連結到來源檔〝/tmp/services〞(ln 沒選項為硬連結) $ ls -li /tmp/services h_link ←把兩個檔案列出看看 1880233 -rw-r--r-- 2 aaa aaa 362047 2011-09-13 17:09 h_link ←兩個檔案除檔名外都一樣 (上面故意用綠字 mark 為 inode 編號,紅字為 link 數) 1880233 -rw-r--r-- 2 aaa aaa 362047 2011-09-13 17:09 /tmp/services $ rm /tmp/services ←把來源檔殺掉看看 $ ls -li h_link ←列出硬連結檔看看有無影響 1880233 -rw-r--r-- 1 aaa aaa 362047 2011-09-13 17:09 h_link ←來源檔殺掉了,不會影響硬連結檔(但 link 數變 1) $ cat h_link ←驗證一下來源檔不見了,硬連結檔可否讀出? |
語法:cp [-otpiton][--option] source traget | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
cp/ (copy)檔案複製/ Any |
-a | 完全複製(包含其檔案擁有者,連結,目錄,時間)同等 -dpR (常用於備份) |
-b | 如目的檔已存在會先自動備份已存在的檔案(備份檔字尾加〝~〞) | |
-d | 如來源為符號連結檔,複製後的檔也為符號連結檔 | |
-f | 如複製的檔案已存在,不詢問直接覆蓋舊檔 | |
-i | 如複製的檔案已存在,覆蓋舊檔之前會要求詢問 | |
-l | 用硬連結取代複製 | |
-p | 複製檔案時連其檔案擁有者,時間戳記,權限也一併複製 | |
-r | 遞回(recursive)複製,將來源目錄下所有的檔案及子目錄一併複製 | |
-R | 同 -r | |
-s | 用符號連結取代複製 | |
-S字串 | 同 -b 但可指定備份檔字尾字串 | |
-u | 更新(只複製來源檔 mtime 時間比目的檔 mtime 時間新或目的地沒有的檔案) | |
-v | 顯示複製過程 | |
--help | 指令自帶說明 |
$ cp file1 file2 ←將 file1 複製到 file2 $ cp /dev/null file1 ←將 file1 內容清空 $ cp /dir/file ./ ←將檔案 /dir/file 複製到工作目錄 $ cp file ../ ←將工作目錄的檔案複製到其父目錄 $ cp -r dir1/ dir2/ ←將來源目錄 dir1 下所有的檔案及子目錄一併複製到目錄 dir2 內 $ cp file1 file2 file3 dir ←如果來源檔不只一個,目的一定要為目錄,此例為將 file1~file3 複製到目錄 dir 內 $ cp -b /dir/file ./ ←如果工作目錄 file 已存在,file 會先備份為 file~ 再進行複製的動作 $ cp -S'_backuped' file1 file2 ←如果 file2 已存在,file2 會先備份為 file2_backuped 再進行複製的動作(指定備份檔字尾字串) $ cp -auv dir1/ dir2/ ←更新目錄 dir2 (來源為 dir1)且顯示更新的過程(此例時常用於備份) $ cp -s file1 file2 ←同等於指令 ln -s file1 file2,建立符號連結檔 file2 $ cp -l file1 file2 ←同等於指令 ln file1 file2, 建立硬連結 $ cp -i file1 file2 ←將 file1 複製為 file2 但如 file2 已存在,覆蓋舊檔之前會要求詢問 |
$ ls -l /etc/fstab ←查看 /etc/fstab 的擁有者和群組 -rw-r--r-- 1 root root 608 2011-09-16 00:21 /etc/fstab ←擁有者,群組,兩者目前都屬〝root〞所有 $ cp /etc/fstab ./ ←複製 /etc/fstab 到工作目錄 $ ls -l fstab ←查看工作目錄檔案 fstab 的擁有者和群組 -rw-r--r-- 1 aaa aaa 608 2012-02-10 12:50 fstab ←擁有者/群組變建立者所有 |
語法:cp [-otpiton][--option] file/directory | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
rm/ (remove)刪除檔案/ Any |
-f | 不詢問直接刪除檔案 |
-i | 刪除檔案之前會要求詢問 | |
-r | 遞回(recursive)刪除,將來源目錄下所有的檔案及子目錄一併刪除 | |
-R | 同 -r | |
-v | 顯示刪除過程 | |
--help | 指令自帶說明 | |
$ rm file ←刪除檔案 file $ rm 'file 1' ←刪除檔案〝file 1〞(如檔名有空格要用引號括起來) $ rm file1 file2 file3 ←刪除檔案可連殺 $ rm -ri dir/ ←刪除目錄和目錄內的所有檔案,並要求每個檔案詢問 $ rm -rf dir ←不詢問直接刪除目錄和目錄內的所有檔案 $ rm ./-10degree ←刪除檔案〝-10degree〞 |
語法:mv [-otpiton][--option] source target | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
mv/ (move)檔案搬移/ Any |
-b | 如目的檔案已存在,會先自動備份已存在的檔案(備份檔字尾加〝~〞) |
-f | 如目的檔案已存在,不詢問直接覆蓋舊檔 | |
-i | 如目的檔案已存在,覆蓋舊檔之前會要求詢問 | |
-S字串 | 同 -b 但可指定備份檔字尾字串 | |
-u | 只搬移更新檔(只搬移來源檔 mtime 時間比目的檔 mtime 時間新或目的地沒有的檔案) | |
-v | 顯示搬移過程 | |
--help | 指令自帶說明 | |
$ mv file1 file2 ←將 file1 搬移到 file2,此例同等於將 file1 更名為 file2 $ mv dir1/ dir2/ ←將目錄 dir1(包含 dir1 內所有的檔案和子目錄)搬移到 dir2,此例同等於目錄更名 $ mv -i file ../ ←將 file1 搬移到其父目錄,如目地檔存在並要求詢問 $ mv -b file dir/ ←將 file1 搬移到目錄 dir,如目地檔存在,覆蓋之前先備份(備份檔字尾加〝~〞) |
$ echo > "fileA" ←製造個檔案〝 "fileA" 〞 $ echo > ""fileB"" ←製造個檔案〝 ""fileB"" 〞 $ ls ←確認一下 fileA fileB ←檔案的引號不見了? $ echo > \"fileC\" ←加跳脫字元再製造個檔案〝 "fileC" 〞看看 $ ls fileA fileB "fileC" ←〝fileC〞有引號耶 $ rm \"fileC\" ←加跳脫字元才可操作語法衝突的檔案 |
$ echo -e 'I\x27m a student' ←加跳脫字元使轉變功能為 ASCII 碼(ASCII 碼 27HEX為單引號) I'm a student \ls ←指令之前加跳脫字元代表〝除去別名〞(大部份發行版 ls 是 'ls --color=auto' 的別名,如去除別名輸出就不會五顏六色) |