《Linux Shell腳本攻略》讀書筆記1
- Shell是系統用戶界面,提供用戶與內核進行交互操作的一種接口。Shell是一種命令解釋器,它解釋用戶輸入的命令并把他們送到內核
- Bash是目前多數GNU/Linux系統默認的shell環境
- sudo (Super user do) sudo <command><arguments>
- shebang:
#!
(sharp/hash:#
; bang:!
) - 當啟動shell時,它一開始會執行一組命令來定義諸如提示文本、顏色等各類設置。這組命令來自位于用戶主目錄中的腳本文件~/.bashrc。
- 在Bash中,每個命令或是命令序列是通過使用分號或換行符來分隔的。
-
echo
是用于終端打印的基本命令:-
echo xxx
不能打印;
-
echo 'xxx'
不能打印變量 -
echo “xxx”
不能打印特殊字符,需要轉義
-
-
printf
格式化輸出,需要手動添加換行,%-5s:-
-
: 左對齊 -
5
: 輸入最小寬度 -
s
: 輸出字符串
-
- echo "
\e[1;31m
xxxx\e[0m
":\e[1;31
將顏色設為紅色,\e[0m
將顏色重新置回。 - 在bash中,每個變量的值都是字符串
- 在一些特殊的變量會被shell環境和操作系統環境用來出儲存一些特別的值,這些變量就被稱為環境變量。
cat /proc/$PID/environ
- pgrep命令獲得進程id:
pgrep gedit # 獲取gegit的進程ID
-
tr
(translate)命令,簡化sed工具:- 主要功能:①替換②刪除。
tr '\0' '\n' #用'\n'替換'\0'
- tr [option] ["string1"] ["string2"] < file:
- 默認選項 - 替換操作
- c - 將string1字符的補集替換為string2
- d - 刪除
- s - 重復出現,只保留一個
- 變量賦值
var=value
- 如果value不包含任何空白字符(例如空格),那么它就不需要使用引號進行引用,否則必須使用單引號或雙引號
- 注意=兩遍不要留空格: val=value是賦值,val==value是相等操作
- 環境變量是未在當前進程中定義,而從父進程中繼承而來的變量。
- export命令用來設置環境變量。
- PATH通常定義在
/etc/environment
或/etc/profile
或~/.bashrc
中。 -
${#變量}
是變量長度 -
$SHELL
or$0
是所用shell -
UID
是一個重要的環境變量,可以用來檢查當前腳本是以超級用戶還是以普通用戶的身份運行的。 -
PS1
環境變量用來定制提示文本。默認的shell提示文本是在文件~/.bashrc中的某一行。 chsh -s /bin/zsh #修改SHELL
- eval 首先掃描名兩行進行所有的置換,然后再執行該命令。
prepend() { [ -d "$2" ] && eval $1=\"$2$\{$1:+':'\$$1\}\" && export $1 ; }
其中,${parameter:+expression}
如果parameter有值且不為空,則使用expression的值 - 反引號``和$()功能相似。解釋命令行,開子shell執行命令,然后用結果替換。反引號以及其中的命令。
- 在Bash shell環境中,可以要利用let、(( ))和[ ]執行基本的算術操作,在進行高級操作時,expr和bc這兩個工具也會非常有用。
- bc是一個用于數學運算的高級工具。
-
echo "scale=2;3/8" | bc
#0.37 scale設定小數精度 -
echo "obase=2;$no"| bc
obase結果進制為2進制 -
echo "obase=10;ibase=2;$no | bc"
將2進制數轉化為十進制
-