1. 程式人生 > >rm,環境變數path,cp,mv,文件檢視,chmod,chown,umaks

rm,環境變數path,cp,mv,文件檢視,chmod,chown,umaks

rm 指令

  • rm 可以刪除檔案和目錄
  • 輸入rm指令,刪除 1.txt 檔案,系統詢問是否刪除,輸入 y 就成功刪除了
  • tree 可以檢視路徑分級
  • rm 命令使用 -f 引數,系統就不會詢問是否刪除,而是直接刪除
  • 星號 * 表示通配,在/tmp/aminglinux/2/3 目錄下面有 1.txt 和 2.txt,
  • 如果想同時刪除2兩個檔案而不是一個一個刪除,可以使用萬用字元 * 表示所有,
  • *.txt 表示目錄下所有的 .txt 檔案,
  • 如果不寫 .txt 直接寫 * 那就表示所有檔案,不只是 .txt 檔案
  • !tree 表示使用上一個tree命令,
  • 比如說,上一次使用了 tree /tmp/aminglinux,
  • 那麼下一次使用 !tree 就等同於上一次的 tree命令
  • ! + tree 或者 touch 等命令,表示使用最近一次使用過的 tree 或者 touch 命令
  • rm 命令無法直接刪除目錄,需要使用 -r 引數
  • 使用 -r 引數後,系統會詢問是否進入目錄,是否刪除檔案,是否刪除目錄,全部輸入 y
  • rm -r /tmp/aminglinux/2/3/ 雖然是刪除目錄,但是 linux 系統無法直接刪除有檔案的目錄
  • 所以系統會詢問是否刪除目錄內的檔案,再詢問是否刪除目錄,只有空目錄可以被刪除
  • 如果想取消系統詢問,直接刪除,可以使用 -f 引數
  • 如 rm -rf /tmp/aminglinux/2 這樣就不會詢問直接刪除目錄
  • 如圖,使用 v 引數可以顯示系統刪除目錄的過程
  • 當刪除一個不存在的目錄時,如果使用了 f 引數,系統將不會提示目錄不存在

環境變數

  • which 可以檢視一個命令所在的路徑,還有它的別名
  • 使用 echo $PATH 可以檢視環境變數
  • 圖片第二行是環境變數的路徑,用符號 : 對路徑進行分割
  • 在使用 which rm 的時候,會遍歷環境變數裡面顯示路徑的目錄
  • 如果 rm 命令的檔案存在於環境變數顯示路徑的目錄裡面,則會顯示rm檔案的路徑
  • 使用 which 的時候,如果目標檔案不存在於環境變數目錄裡面,就無法找到
  • 環境變數目錄是可以修改的,比如增加一個 /tmp/ 目錄進入環境變數
  • 使用 PATH=$PATH:/tmp/ 就可以將 /tmp/ 目錄新增進入環境變數
  • 下面可以看到最後一個 : 後面多了 /tmp/
  • ls2檔案就在 /tmp/ 目錄內,本來是找不到的,現在環境變數增加了 /tmp/ 目錄就可以找到了
  • 重啟之後,環境變數會恢復成預設的路徑,新增的/tmp/會消失
  • PATH=$PATH:/tmp/ 並不是永久改變環境變數,重啟後修改就會消失
  • 如果想修改的環境變數一直生效,可以編輯檔案 vi /etc/profile
  • 這個檔案每次重啟都會重新載入,在這個檔案裡面寫入 PATH=$PATH:/tmp/
  • 那麼每次重啟載入這個檔案時都會執行這條指令,重啟後環境變數就會增加這個目錄
  • 如果想要恢復預設的路徑,不想要/tmp/目錄在環境變數裡面
  • 如上圖,複製原來預設的環境變數的路徑,然後直接 PATH = xxx/xxx/(預設路徑) 回車
  • 然後再把 etc/profile/ 檔案裡面新增的 PATH=$PATH:/tmp/ 刪除以免重啟改變預設環境變數

cp 命令

  • cp 命令可以複製檔案和目錄
  • 複製目錄的時候,需要使用 -r 引數
  • 上圖,將/tmp/aminglinux/ 目錄複製並改名為aming1,兩個目錄內容一致,名稱不一致
  • tree !$ ,!表示最近一條指令,$表示最後一個引數
  • tree 之前的一條指令是 cp -r /tmp/aminglinux /tmp/aming1/
  • 這條指令的最後一個引數就是 /tmp/aming1/
  • !$ 組合在一起表示最近一條指令的最後一個引數,那就是 /tmp/aming1/
  • 所以 tree !$ == tree /tmp/aming1/
  • cp 指令是一個別名,cp == cp -i , 指令位置在/usr/bin/cp
  • i 引數是安全引數,複製的時候如果有同名檔案,系統會詢問是否覆蓋同名檔案
  • 如果不使用-i引數的話,複製的時候系統就不會詢問是否覆蓋,而是直接覆蓋
  • 上圖 cp -r /tmp/aminglinux/ /tmp/aming1/
  • 執行命令後系統並沒有詢問是否覆蓋檔案,因為/tmp/aming1/目錄已經存在
  • 所以將 /tmp/aminglinux/ 目錄複製為 /tmp/aming1/ 目錄時並不會覆蓋
  • 而是將 aminglinx/ 目錄直接複製到 /tmp/aming1 目錄下面
  • 如果再執行一次同樣的cp命令,那麼系統就會詢問是否覆蓋檔案
  • 因為 /tmp/aming1/ 目錄已經存在,所以會將 aminglinux/ 目錄複製到/tmp/aming1/下面
  • 因為已經執行過一次該指令,所以/tmp/aming1/下面已經存在aminglinux/目錄
  • 所以會詢問是否覆蓋該目錄,第一次執行/tmp/aming1/下面為空,不會詢問覆蓋
  • 第二次執行/tmp/aming1/下面存在相同目錄所以會詢問是否覆蓋
  • 總結,cp複製目錄的時候,如果目標目錄已經存在,就會將源目錄放到目標目錄下面
  • 如果目標目錄不存在,那麼就會複製一份源目錄並將名稱改為目標目錄名稱

mv 命令

  • mv 可以移動檔案
  • 上圖,使用 mv 命令更改檔名稱,將.cfg 改為 .cfg.1
  • 上圖,使用 mv 將 tmp 目錄下的 1.txt 檔案移動到 /root/目錄下並改名為 2.txt
  • 上圖使用 mv 命令 將 ls2 檔案移動到 aming/ 目錄下
  • 上圖重複執行 mv ls2 aming/ 系統詢問是否覆蓋
  • 因為 mv 是系統別名,使用which可知 mv 是帶 -i 引數的,如果不帶-i則系統不會詢問是否覆蓋,而是直接覆蓋
  • 上圖 mv aming/ aming2/
  • aming2/ 目錄不存在,那麼mv命令就會把 aming/ 改名成為 aming2/
  • mv aming2/ aminglinux/
  • aminglinux/ 目錄存在,那麼mv命令就會把aming2/移動到aminglinux目錄下面

文件檢視 cat more less head tail<