成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux系統管理員的Bash指南,11條Bash實踐經驗!

系統 Linux 服務器
在許多系統上,控制臺的默認寬度仍為80個字符。如果你需要在控制臺上調試腳本并且該腳本有很長的行,那么將是一個悲劇。此外,具有較短行的腳本,默認值仍為80個字符,在普通編輯器中也更容易閱讀和理解!

 每個職業都有最常用的工具。對于許多系統管理員來說,shell可能是比較熟悉的。在大多數Linux和其他類Unix系統上,默認的shell是Bash。

Bash是一個相當古老的程序,它起源于20世紀80年代后期。但它建立在更多,更老的shell上,比如C shell(csh)。我們來看看一些基礎知識。

相信你在某些時候,曾無意中以root身份運行命令并導致某種問題?這里有一些非常簡單的技巧可以防止你遇到這樣的問題。

[[238786]]

使用別名

首先,為mv和rm等命令設置別名,指向mv -I和rm -I。這將確保運行rm -f/boot至少要求你確認。在紅帽企業版Linux中,如果你使用root帳戶,則默認設置這些別名。

如果你還要為普通用戶帳戶設置這些別名,只需將這兩行放入主目錄中名為.bashrc的文件中(這些也適用于sudo):

  1. alias mv=’mv -i’ 
  2. alias rm=’rm -i’ 

你的根提示符

你可以采取的另一項措施是防止意外發生,確保你在使用root帳戶時知道。我通常這樣做是為了讓我的正常日常工作中使用的提示能夠很好地突出根提示符。

如果將以下內容放入root的主目錄中的.bashrc文件中,你將看到一個黑色的紅色根提示符,清楚地表明你(或其他任何人)應該謹慎操作。

  1. export PS1=”\[$(tput bold)$(tput setab 0)$(tput setaf 1)\]\u@\h:\w # \[$(tput sgr0)\]” 

實際上,你應該盡可能避免以root用戶身份登錄,而是通過sudo運行大多數系統管理命令,但這是另一回事。

實施了一些小技巧來幫助防止使用root帳戶的“無意的副作用”,讓我們看看Bash可以給你你在日常工作中帶來怎樣的幫助?

控制history文件

你可能知道,當在Bash中按向上箭頭鍵時,你可以查看并重復使用以前的所有命令。這是因為這些命令已保存到主目錄中名為.bash_history的文件中。該歷史文件附帶了一組非常有用的設置和命令。

首先,你可以通過鍵入歷史記錄來查看整個最近的命令歷史記錄,或者你可以通過鍵入歷史記錄,或將其限制為最近30個命令。你可以更好地控制Bash保存的內容以及保存方式。

例如,如果將以下內容添加到.bashrc,則任何以空格開頭的命令都不會保存到歷史記錄列表中:

  1. HISTCONTROL=ignorespace 

如果你需要用命令寫入明文形式的密碼。(是的,這太可怕了,但它仍然會發生。)

如果你不希望在歷史記錄中顯示經常執行的命令,請使用:

  1. HISTCONTROL=ignorespace:erasedups 

這樣,每次使用命令時,都會從歷史記錄文件中刪除之前發生的所有事件,并且只將最后一次調用保存到歷史記錄列表中。

我特別喜歡的歷史記錄設置是HISTTIMEFORMAT設置。這將在歷史記錄文件中添加時間戳前的所有條目。例如,我使用:

  1. HISTTIMEFORMAT=”%F %T “ 

當我輸入五條歷史記錄時,我得到了很好的完整信息,如下所示:

  1. 1009 2018-06-11 22:34:38 cat /etc/hosts 
  2.  
  3. 1010 2018-06-11 22:34:40 echo $foo 
  4.  
  5. 1011 2018-06-11 22:34:42 echo $bar 
  6.  
  7. 1012 2018-06-11 22:34:44 ssh myhost 
  8.  
  9. 1013 2018-06-11 22:34:55 vim .bashrc 

這使我更容易瀏覽我的命令歷史記錄,并找到我兩天前用來建立到家中的SSH隧道。

最好的Bash實踐

在編寫Bash腳本時,我將用最好的11個用法列出來(我是這樣認為的)。

11.Bash腳本可能變得復雜,添加注釋沒那么復雜。因為如果你在周末之后回到工作中,不得不花時間搞清楚你上周五想要做什么的話,別忘了添加注釋。

10.用花括號括起所有變量名,比如$ {myvariable}。養成這個習慣可以使$ {variable} _suffix成為可能,并提高整個腳本的一致性。

9.評估表達式時不要使用反引號;請改用$()語法。可以使用:

  1. for file in $(ls); do 

反之:

  1. for file in `ls`; do 

前一個選項是可嵌套的,更易于閱讀,并使一般的系統管理員感到滿意。不要使用反引號。

8.一致性很好。選擇一種風格并在整個腳本中堅持下去。顯然,我更喜歡人們在反引號中選擇$()語法,并將其變量放在在花括號中。

7.使用適當的shebang作為Bash腳本。因為我正在編寫Bash腳本,只打算用Bash執行它們,所以我經常使用#!/ usr / bin / bash作為我的shebang。不要使用#!/ bin / sh或#!/ usr / bin / sh。你的腳本將執行,但它將以兼容模式運行。可能會產生許多意外的副作用。(當然,除非你想要兼容模式。)

6.比較字符串時,在if語句中引用變量是個好主意,因為如果你的變量是空的,Bash會為這樣的行拋出一個錯誤:

  1. if [ ${myvar} == “foo” ]; then 
  2.  
  3. echo “bar” 
  4.  
  5. fi 

對于這樣的行,將評估為false:

  1. if [ “${myvar}” == “foo” ]; then 
  2.  
  3. echo “bar” 
  4.  
  5. fi 

此外,如果你不確定變量的內容(例如,在解析用戶輸入時),請引用變量以防止解釋某些特殊字符,并確保該變量被視為單個詞,即使它包含空格。

5.我想這是一個品味問題,但我更喜歡使用雙等號(==),即使比較Bash中的字符串。這是一致性的問題,盡管,對于字符串比較,只有一個等號會起作用,我的考慮立即變為“單個等于是一個賦值運算符!”

4.使用適當的退出代碼。確保如果你的腳本無法執行某些操作,則會向用戶顯示已寫入的失敗消息(最好通過解決問題的方法)并發送非零退出代碼:

  1. # we have failed 
  2.  
  3. echo “Process has failed to complete, you need to manually restart the whatchamacallit” 
  4.  
  5. exit 1 

這樣可以更容易地以編程方式從另一個腳本調用腳本并驗證其成功完成。

3.使用Bash的內置機制為變量提供合理的默認值,或者如果未定義你希望定義的變量,則拋出錯誤:

  1. # this sets the value of $myvar to redhat, and prints ‘redhat’ 
  2.  
  3. echo ${myvar:=redhat} 
  4.  
  5. # this throws an error reading ‘The variable myvar is undefined, dear reader’ if $myvar is undefined 
  6.  
  7. ${myvar:?The variable myvar is undefined, dear reader} 

2.特別是如果你正在編寫大型腳本,特別是如果你與其他腳本一起處理該大型腳本,請考慮在函數內部定義變量時使用local關鍵字。local關鍵字將創建一個局部變量,該變量只在該函數中可見。這限制了沖突變量的可能性。

1.每個系統管理員有時必須這樣做:在控制臺上調試一些東西,可以是數據中心的真實服務器,也可以是虛擬化平臺的虛擬服務器。如果你必須以這種方式調試腳本,你會感謝你自己記住這個:不要讓你的腳本中的行太長!

在許多系統上,控制臺的默認寬度仍為80個字符。如果你需要在控制臺上調試腳本并且該腳本有很長的行,那么將是一個悲劇。此外,具有較短行的腳本,默認值仍為80個字符,在普通編輯器中也更容易閱讀和理解!

責任編輯:武曉燕 來源: 代碼灣
相關推薦

2018-08-15 14:00:18

LinuxBash系統管理員

2012-05-21 10:13:12

Linux系統管理

2018-08-01 08:12:34

Linux管理員網絡管理

2019-08-13 19:34:45

容器鏡像DockerLinux

2010-05-07 16:35:44

2012-11-01 11:33:11

IBMdw

2009-05-20 14:51:55

ibmdw系統管理

2013-03-30 21:59:13

系統管理員必備工具iftop

2013-12-09 16:15:08

系統管理員WebminLinux服務

2010-12-27 17:40:31

2011-11-30 09:03:27

2013-06-26 09:29:30

系統管理員

2013-09-29 09:50:21

系統管理員Ubuntu JujuJuju

2010-04-12 09:33:58

系統管理員

2013-12-26 10:47:58

2010-06-10 14:23:01

2014-08-14 09:47:43

Linux管理員

2015-08-17 15:13:05

Linux系統管理員云計算

2013-10-18 09:31:03

Linux 系統Linux 發行版

2019-09-09 14:45:29

系統管理員SRE
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99九九视频 | 韩日一区 | 亚洲国产精品成人无久久精品 | 国产精品久久久久久久三级 | 久久精品亚洲欧美日韩久久 | 国产真实乱对白精彩久久小说 | 91精品久久久久久久久 | av片在线免费看 | 日韩视频―中文字幕 | 一区二区中文字幕 | 日韩欧美精品一区 | 九九热国产精品视频 | 日韩一区三区 | 国产精品二区三区在线观看 | 黄色高清视频 | 精品中文视频 | 97精品久久| 成人av免费播放 | 亚洲国产精品区 | 国产高清视频在线观看 | 久久亚洲高清 | 午夜天堂精品久久久久 | 黄色操视频 | 欧美日韩视频在线播放 | 亚洲精品欧美 | 影音先锋中文字幕在线观看 | 中文字幕 在线观看 | 国产高清精品一区二区三区 | 午夜精品久久久久久久久久久久 | 久久精彩视频 | 亚洲一区二区网站 | 91黄色免费看 | 欧美一区二区三区视频 | 色婷婷亚洲国产女人的天堂 | 国产99久久精品一区二区300 | 亚洲综合在 | 91av精品| 97视频免费 | 欧美 日韩 国产 在线 | 亚洲 欧美 另类 综合 偷拍 | 久久精品国产久精国产 |