2,408 瀏覽數

Linux – cp / mv / rm

這三個指令會放在在最前面介紹不是沒原因的,通常在介紹 Linux 時會從這幾個指令開始.

  1. cp – Copy files
    複製檔案以及目錄時使用.
  2. mv – Rename files
    搬移檔案目錄可以使用這指令.他的作用就如同 cp + rm.
  3. rm – Delete files
    移除檔案目錄時使用,在 Linux 下可沒有資源回收桶請小心使用該指令.

在使用 cp -f 時你會發現雖然我使用參數 -f 但是目的端位址已經有相同檔案存在系統還是會在詢問一次 cp: overwrite file ?,這到底是怎麼一回事,不是已經使用了參數 -f 嗎??原來是受到 alias (別名) 的影響,我們現看看目前有哪些 alias. 

[root@benjr ~]# alias
alias cp='cp -i'
alias l.='ls -d .* –color=tty'
alias ll='ls -l –color=tty'
alias ls='ls –color=tty'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
alias mv='mv -i'
alias rm='rm -i'alias which='alias | /usr/bin/which –tty-only –read-alias –show-dot –show-tilde'

你會看到 cp 其實會被 cp -i 所取代,所以就算我們加入參數 -f 但實際還是受到另外一個參數 -i (interactive) 所影響.所以解決方式有2種,

  • 第一是取消 alias,採用的指令是 unalias cp.

    [root@benjr ~]# unalias cp
    

    使用 unalias 可以暫時取消這別名的功能.不過每次開機都需要手動做一次,因為所有的 alias 皆定義在使用者的家目錄 .bashrc 檔案裡面,所以要移除 alias 必須要從這邊做起,或是自行定義屬於自己的 alias 只要把定義寫在使用者的家目錄 .bashrc 檔案裡面.

  • 方式二是直接使用 cp 的絕對路徑.就不會受到 alias 的影響.

    [root@benjr ~]# /bin/cp -f * test/
    

網友的想法

  1. 自動參照通知: Linux – File | Benjr.tw

發表迴響