自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux Shell 從入門到刪除根目錄跑路指南

系統(tǒng) Linux 系統(tǒng)運(yùn)維
shell作為一門 linux 下使用廣泛的系統(tǒng)語言,語法簡單,上手容易,但是想要用好,少犯錯誤,也不是那么容易的一件事,可謂雖是居家旅行之良藥,但也是殺人滅口之利器~

shell作為一門 linux 下使用廣泛的系統(tǒng)語言,語法簡單,上手容易,但是想要用好,少犯錯誤,也不是那么容易的一件事,可謂雖是居家旅行之良藥,但也是殺人滅口之利器~

今天就來聊聊 linux 下一個常見的問題:如何避免誤刪目錄。下文會詳細(xì)的講述不同的場景下誤刪目錄,以及相應(yīng)的解決方案。

1、變量為空導(dǎo)致誤刪文件

  1. base_path=/usr/sbin 
  2. tmp_file=`cmd_invalid` 
  3. # rm -rf $base_path/$tmp_file 

這種情況下如果 cmd 執(zhí)行出錯或者返回為空,后果將是災(zāi)難性的,那如何防范呢?

(1)利用 shell 的變量擴(kuò)展功能,如果變量為空賦給默認(rèn)值或者拋出異常退出腳本:

  1. echo ${base_path:?var is empty}/${tmp_file:?var is empty}  
  2. -bash: tmp_file: var is empty 

(2)人肉判斷變量是否為空:

  1. [[ ${tmp_file} == "" ]] && echo 1 
  2. [[ -z ${tmp_file} ]] && echo 1 

(3)如果變量未定義還可以開啟 set 選項(xiàng):

  1. # cat a.sh 
  2. set -u 
  3. b= 
  4. echo $b 
  5. echo $a 
  6. echo 1 
  7. # bash a.sh 
  8. a.sh: line 4: a: unbound variable 

2、路徑含有空格導(dǎo)致誤刪文件

史上最經(jīng)典的要數(shù)下面這個bumblebee項(xiàng)目了,這個項(xiàng)目本來不出名,不過,程序在其安裝腳本install.sh里的一個bug讓這個項(xiàng)目一下子成了全世界最矚目的項(xiàng)目。

那我們該如何防范這種問題呢?

(1)良好的編程習(xí)慣:變量加引號防止擴(kuò)展

  1. path="/usr/local /sbin"  
  2. # rm -rf $path  
  3. rm -rf "$path" 

(2)對變量進(jìn)行語義檢查

比如檢測是否含有空格等特殊字符,不通用,不推薦這么做

3、目錄或文件含有特殊字符導(dǎo)致誤刪文件

  1. ll  
  2. 總用量 8  
  3. drwxrwxr-x 2 work work 4096 11月 24 18:57 '~'  
  4. -rw-rw-r-- 1 work work 34 11月 24 19:49 a.sh  
  5. # rm -rf ~ 

那我們該如何防范這種問題呢?

(1)良好的編程習(xí)慣:變量加引號防止擴(kuò)展

  1. rm -rf "~" 

(2)如果不確定,刪除之前 echo 或 find 一下,看變量被擴(kuò)展成啥了

  1. echo rm -rf "~"  
  2. rm -rf ~  
  3. echo rm -rf ~  
  4. rm -rf /home/work 

4、cd 切換目錄失敗,導(dǎo)致文件被誤刪

  1. cd ooxx_path_not_exsit  
  2. rm -rf *.exe 

恭喜這種情況下你的當(dāng)前目錄下匹配文件都會被誤刪,那我們該如何防范這種問題呢?

(1)使用邏輯短路操作

  1. cd path && rm -rf *.exe 

(2)檢測 path 是否存在

  1. [[ -d ~ ]] && echo 1  

5、***解決方案

不要使用 root 操作系統(tǒng)資源,這樣至少不會刪除系統(tǒng)文件。

6、在登錄 shell 下使用友好的提示符

友好的命令提示符能時刻提醒操作者當(dāng)前在哪個路徑下,避免錯誤的路徑下操作文件。

 

OK,本文到此就結(jié)束了,列舉了一些常見的case和解決方案,希望能對大家有所啟發(fā),如果有其他的 case 和建議也歡迎交流~

責(zé)任編輯:武曉燕 來源: 開源社區(qū)博客
相關(guān)推薦

2018-03-07 16:55:16

Linux命令刪除根目錄

2024-07-03 10:09:29

2012-02-29 00:49:06

Linux學(xué)習(xí)

2024-09-06 17:45:55

Linux磁盤

2023-05-09 08:34:51

PythonWith語句

2017-03-25 20:30:15

2014-04-21 15:01:15

2012-01-18 09:46:32

Shell

2012-11-27 15:41:41

2017-09-11 10:09:59

刪庫DBA淘汰

2011-01-10 13:21:45

linuxsamba

2012-11-27 15:46:51

堆棧溢出

2025-01-07 14:42:09

2017-06-26 09:15:39

SQL數(shù)據(jù)庫基礎(chǔ)

2018-09-21 16:30:55

2010-01-11 10:05:18

Linux刪除目錄

2023-11-08 08:32:16

2025-02-24 10:07:10

2016-11-23 18:52:04

根目錄日志代碼

2013-06-06 13:42:48

OSPF入門配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號