01這些命令真的很重要嗎?
檔案及目錄的路徑切換、顯示、創建、復制、移動和洗掉操作的常用姿勢,必會!因為這些命令是使用 Linux 系統進行作業的基礎,是擺脫小白的第一步,是構建大廈的基石!
發現鍋鍋真是個話癆啊!那鍋鍋就不要臉了真就再比比兩句啦,承蒙不要嫌棄(=_=),這篇文章不是 Linux 相關命令使用字典或百科全書,這一篇文章里總結作業實踐中會用到的關于檔案和目錄操作常用的基礎命令,這些命令真的很重要!
02路徑切換和顯示:cd、ls、pwd
- cd (全稱 Change directory) 命令在 Linux 中是所有命令的基礎依賴,
- ls 是離不開 cd 的基友,用來查看當前檔案夾下有哪些檔案和目錄,ls (全稱 List files),
- pwd 看看自己身在何處,cd 切來切去,忘了自己身在何處,那就列印下當前的所在的作業路徑,這就是 pwd (Print working directory),
cd
- cd / # 進入主機根目錄,
- cd ~ # 進入用戶根目錄,
- cd .. # 回傳爸爸(上級)目錄,注 . 代表當前目錄,
- cd ../.. # 回傳爺爺(上級的上級)目錄,可以以此類推,
- cd – # 回傳上次目錄,來回在兩個目錄中切換時很好用,
- cd /home/root/temp # 使用絕對路徑,從根目錄開始,到temp目錄,
ls
-
ls # 顯示當前目錄下所有檔案和目錄,
-
ls -l # 顯示檔案詳情(檔案名稱、檔案型別、權限、擁有者、檔案大小等詳細列出),
-
ll # 等同 ls -l,
-
ls -al # 等同 [ll -a] 顯示所有檔案及詳情,(ls內定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出),
-
ls -lh # 等同 [ll -h] 以適合的單位顯示檔案大小,如kb、Mb、Gb,-h 這個引數在linux中很有用,基本所有需要統計大小的命令中都可以用它,如df -h, du -h,free -h,
-
ls -lhs # 對檔案或者目錄進行從大到小的排序
-
ls -lrt #按照檔案修改時間升序,從上到倒下時間越來越近
詳細解釋:
-l use a long listing format 以長串列方式顯示(詳細資訊方式)
-t sort by modification time 按修改時間排序(最新的在最前面)
-r reverse order while sorting (反序) -
ls -lt #按照時間降序(默認:最新修改的排在前面)
pwd
- pwd # 查看當前所在路徑,
- pwdx pid #可配合查找應用的安裝路徑,如查找 zookeeper 的安裝路徑 ,[ps –ef|grep zookeeper],找到 pid (行程號),接著 [pwdx pid],即可找到 zookeeper 安裝路徑,
03創建:touch、mkdir
- touch (含義觸碰)創建一個空檔案,
- mkdir (全稱 Make directory) 建立目錄,創建一個空目錄,
touch
- touch info.log #在當前目錄下創建一個 info.log 的空檔案,
- touch {01..10}info.log #注:是兩個點號,批量創建檔案,01info.log、02info.log、...、10info.log
mkdir
- mkdir dirs #在當前目錄下創建空目錄 dirs,
- mkdir log temp data # 同時創建多個同級目錄,目錄名以空格分開,
- mkdir -p parent/child/logs #一次性創建多級目錄,在當前目錄下創建 parent 目錄,在 parent 目錄下創建 child 目錄,在 child 目錄下創建 logs 目錄,
04復制、移動和洗掉:cp、mv、rm
- cp (全稱 copy)復制,
- mv (全稱 move)移動,
- rm (全稱 remove)洗掉,
cp
- cp info.log tempInfo.log #將 info.log 檔案拷貝一份,拷貝后的檔案名為 tempInfo.log,
- cp -R parent tempParent #將 parent 目錄拷貝一份,拷貝后的目錄名為 tempParent,一般加引數 -R(或引數-r,-r/R 表示遞回),因為目錄下一般會有子目錄,否則無法成功拷貝,
mv
- mv /home/docker/info.log /home/temp/info.log #這個示例里檔案名沒變,就是搬移下檔案位置,
- mv /home/docker/info.log /home/temp/tmp.log #這個示例里,搬移了檔案位置且變更了檔案名,
- mv info.log tmp.log #這個示例里等同于對檔案進行了重命名,
- mv a b c /tmp #一次移動多個檔案或到某個目錄下
rm
- rm [檔案名] #洗掉檔案,檔案不存在會有報錯提示,
- rm -f [檔案名] # (常用命令)洗掉檔案,-f,忽略報錯資訊,不提示,
- rm -rf [目錄名] # (常用命令)遞回洗掉目錄,
- rm -rf [檔案1] [檔案2] [目錄1] [目錄2] # (常用命令)洗掉多個檔案和目錄,
- rm -rf .log # 洗掉當前目錄所有.log后綴結尾的檔案, 是匹配符表示匹配所有字符,
- rm -i *.log # 洗掉所有以結尾log檔案時,會逐一詢問按 y 確認洗掉,n 不洗掉,
05跑路命令?千萬不要作死自己!
- rm -rf / # 這個命令絕逼不能操作??,洗掉根目錄下的檔案,就是系統中的所有檔案都要被洗掉,如果是線上服務機器操作了,那就悲劇了!誤操作了怎么辦?趕快ctrl+c、ctrl+z 能保住多少是多少吧,
- rm -rf / home/apps/logs/ # 這也是個天坑命令!目的是洗掉日志文,結果書寫時“多了一個空格”的bug,看懂了么?這就變成了 [rm -rf /] !
- 埋藏隱患的日志清理 shell 腳本!腳本關鍵內容如下,
cd ${log_path}
rm -rf *
目的是:進入到日志目錄,然后把日志都洗掉,隱患:當目錄不存在時,悲劇就發生了!
不跑路,有啥規避方案?
- 在生產環境把 [rm -rf] 命令替換為 [mv],再寫個腳本程式定期清理,模擬回收站的功能,
- 把日志清理 shell 腳本,改用邏輯與 && 進行連接,
cd ${log_path}
rm -rf *
改用邏輯與 && 進行連接,合并成一句,前半句邏輯失敗,后半句命令不執行:
cd ${log_path} && rm -rf *
完整的日志清理 shell 腳本如下:
#!/bin/bash
base_home="/home/apps"
log_path=${base_home}/logs
cd ${log_path} && rm -rf *
06小結
- 總結了檔案及目錄的路徑切換、顯示、創建、復制、移動和洗掉操作的常用姿勢,
- cp、rm都用到了-r/R引數,即 recursion,遞回的意思,如果不加這個引數,好多時候操作會失敗,
- 在操作 cd 、ls、cp、mv、touch、mkdir、rm 等命令時,如果沒有指定路徑,默認在當前目錄下進行操作,如果指定目錄,則脫離不了以下幾類目錄符號:
/ #主機根目錄 ~ #用戶目錄 ./ #相對目錄,本級目錄 ../ #相對目錄的上級目錄 ../.. #相對目錄,爺爺目錄,其他類推 - #上次目錄 /xxx/xx2/xx3 # 絕對目錄,從根目錄開始 - 刪庫跑路命令【rm -rf】,以及如何規避!
「不甩鍋的碼農」原創,轉載請注明來源,未經授權禁止商業用途!同名 GZH 請關注!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412777.html
標籤:Linux
