Linux shell基礎(一)
Linux shell基礎(一)
1.遠端登入主機
ssh 賬號@IP/主機名
ssh mark@192.168.0.99
2.Socket檔案是內部程式通訊的一種特殊檔案,可作為和遠端主機通訊的管道
如: mysql -S /tmp/mysql.socket
3.續行符號
先鍵入\ =>Enter
./configure \
--with-apache=../apache_$ApacheVersion \
--with-mysql=$MYSQLHOME &&
4.字符集合[]
所列字元範圍中的某一個字元
[a-zA-Z0-9] - 代表字元範圍
5.括號擴充套件{}
{a,b,c}\*{d,e,f}
a*d a*e ...
6.轉向輸入和轉向輸出
命令或Script. < 輸入檔案 > 輸出檔案
sort < unsort_input.txt > sorted_output.txt
7.登陸(login)
登陸主機,login shell 先執行/etc/profile,接著bash檢查使用者的
主目錄中是否有.bash_profile 或 .bash_login 或 .profile,若有
則會讀取並執行其中一個檔案,執行順序:
.bash_profile
.bash_login
.profile
滿足其中一個即可
8.列出登陸主機後,最近執行過的命令
fc -l
fc -l Number //列出大於或等於 指定編號歷史命令
9.read 一次讀取一行資料放入陣列中
read -a arr < echo ${arr[2]}
dfe
9.讀取引數,結合成一個新指令,在進行變數代換後,執行
log="ls -al /data/*.sh"
eval $log
10.locate 關鍵詞
由檔名資料庫中,找出包含有"關鍵詞"的檔案路徑
locate lsof
11.tr 轉換或刪除字元
tr k K < dataf1
執行結果:dataf1的k換成K字元
tr -d k
執行結果:k字元全刪除
12.xargs
由標準輸入,安排要執行的命令和引數
find . -name '*.txt' | xargs -n 2 diff
13.在寫Script時,為了怕變數寫錯,造成排錯困難,可以規定:
變數要進過設定的程式才能使用,如下:
#!/bin/bash
shopt -s -o nounset <echo $Infomix
改成如下:
#!/bin/bash
shopt -s -o nounset
declare Infomix=50 //declare 定義變數,不會提示 nounset 變數
echo $Infomix
14.在shell Script中,$放在變數名之前,如果需要顯示$,
用 \--表示轉義
用 ''--也可以得到
I=8
echo \$I 或 echo '$I' //'' 單引號作用:一個所見即所得的字串(即寫什麼,就是顯示什麼)
15.IFS
定義分隔符,default value:空格符,tab字元,換行字元(newline)
#!/bin/bash
PL="root:x:0:0:root:/root:/bin/bash"
IFS=':' //分隔符
j=0 //定義行數
for i in $PL
do
j=$((j+1))
echo 第$j個欄位是$i
done
16.陣列
B=(123 [8]=188 266)
echo ${B[@]} //取出陣列元素
echo ${#B[@]} //資料個數
unset B //取消陣列
unset B[0] //取消陣列某個元素
17.利用here document,打包C的原始碼
#!/bin/bash
echo "正在產生hello.c...."
echo
cat < hello.c
#include
int main(){
printf("Hello world!\n");
return 0;
}
EOF
echo "編譯hello.c...."
echo
#編譯Hello.c,產生執行檔案
gcc -o hello hello.c
#若編譯成功,就執行。
if [ $? -eq 0];then
echo "執行hello...."
echo
./hello
else
echo 'Complile ERROR:hello.c'
fi
18.高階變數主題
變數擴充套件
命令替換
算術擴充套件
在Bash Shell中,$算符會觸發上述3種擴充套件,形式如下:
${變數名稱}---變數擴充套件---${filename}
$(命令)---命令替換---$(ls /)
$((算術表示式))---算術擴充套件---$((9+9))
19.測試變數 存在與否用法
${待測變數-預設值}
待測變數,若不存在,返回 預設值;存在,返回 待測變數
unset myname
r=${$myname - 'fuck'}
echo $r
20.${待測變數:-預設值} 與上面相比 多了:測試變數 不存在 或 其值為空,返回 預設值
IamHappy='Feel so good'
r=${IamHappy:+'true'}
echo $r
21. 多檔案搜尋方式:
fgrep.sh
#!/bin/bash
exec grep -F ${1+"$@"}
fgrep.sh Mem /proc/meminfo /root/test.txt
$1=Mem 非空,則,${1+"$@"}傳回$@,此變數值等於所有位置引數組合起來的:
Mem /proce/meminfo /root/test.txt
grep -F Mem /proce/meminfo /root/test.txt
整理:
${待測變數:-預設值}---回傳結果-定是非空值---測不存在或空值
${待測變數:=預設值}---給空值變數設一個預設值---測不存在或空值
${待測變數:?預設值}---檢查條件是否完備---測不存在或空值
${待測變數:+預設值}---判斷某事是否為真---測試存在且非空
移除:,只測存在性,不測空值
記憶法:
:)---空---測試空
-)---負向---測不存在
=)---設值---給空值變數設一個預設值
?)---有問題---檢查條件是否完備後再來執行吧
+)---正向---測試存在
22.字串擷取
語法一:${變數:位置起點}
myname="sheller man"
substr=${myname:4}
echo $substr
語法二:${變數:位置起點:長度}
filename="/etc/apache2"
dir1=${filename:1:3}
echo $dir1
1.遠端登入主機
ssh 賬號@IP/主機名
ssh mark@192.168.0.99
2.Socket檔案是內部程式通訊的一種特殊檔案,可作為和遠端主機通訊的管道
如: mysql -S /tmp/mysql.socket
3.續行符號
先鍵入\ =>Enter
./configure \
--with-apache=../apache_$ApacheVersion \
--with-mysql=$MYSQLHOME &&
4.字符集合[]
所列字元範圍中的某一個字元
[a-zA-Z0-9] - 代表字元範圍
5.括號擴充套件{}
{a,b,c}\*{d,e,f}
a*d a*e ...
6.轉向輸入和轉向輸出
命令或Script. < 輸入檔案 > 輸出檔案
sort < unsort_input.txt > sorted_output.txt
7.登陸(login)
登陸主機,login shell 先執行/etc/profile,接著bash檢查使用者的
主目錄中是否有.bash_profile 或 .bash_login 或 .profile,若有
則會讀取並執行其中一個檔案,執行順序:
.bash_profile
.bash_login
.profile
滿足其中一個即可
8.列出登陸主機後,最近執行過的命令
fc -l
fc -l Number //列出大於或等於 指定編號歷史命令
9.read 一次讀取一行資料放入陣列中
read -a arr < echo ${arr[2]}
dfe
9.讀取引數,結合成一個新指令,在進行變數代換後,執行
log="ls -al /data/*.sh"
eval $log
10.locate 關鍵詞
由檔名資料庫中,找出包含有"關鍵詞"的檔案路徑
locate lsof
11.tr 轉換或刪除字元
tr k K < dataf1
執行結果:dataf1的k換成K字元
tr -d k
執行結果:k字元全刪除
12.xargs
由標準輸入,安排要執行的命令和引數
find . -name '*.txt' | xargs -n 2 diff
13.在寫Script時,為了怕變數寫錯,造成排錯困難,可以規定:
變數要進過設定的程式才能使用,如下:
#!/bin/bash
shopt -s -o nounset <echo $Infomix
改成如下:
#!/bin/bash
shopt -s -o nounset
declare Infomix=50 //declare 定義變數,不會提示 nounset 變數
echo $Infomix
14.在shell Script中,$放在變數名之前,如果需要顯示$,
用 \--表示轉義
用 ''--也可以得到
I=8
echo \$I 或 echo '$I' //'' 單引號作用:一個所見即所得的字串(即寫什麼,就是顯示什麼)
15.IFS
定義分隔符,default value:空格符,tab字元,換行字元(newline)
#!/bin/bash
PL="root:x:0:0:root:/root:/bin/bash"
IFS=':' //分隔符
j=0 //定義行數
for i in $PL
do
j=$((j+1))
echo 第$j個欄位是$i
done
16.陣列
B=(123 [8]=188 266)
echo ${B[@]} //取出陣列元素
echo ${#B[@]} //資料個數
unset B //取消陣列
unset B[0] //取消陣列某個元素
17.利用here document,打包C的原始碼
#!/bin/bash
echo "正在產生hello.c...."
echo
cat <
#include
int main(){
printf("Hello world!\n");
return 0;
}
EOF
echo "編譯hello.c...."
echo
#編譯Hello.c,產生執行檔案
gcc -o hello hello.c
#若編譯成功,就執行。
if [ $? -eq 0];then
echo "執行hello...."
echo
./hello
else
echo 'Complile ERROR:hello.c'
fi
18.高階變數主題
變數擴充套件
命令替換
算術擴充套件
在Bash Shell中,$算符會觸發上述3種擴充套件,形式如下:
${變數名稱}---變數擴充套件---${filename}
$(命令)---命令替換---$(ls /)
$((算術表示式))---算術擴充套件---$((9+9))
19.測試變數 存在與否用法
${待測變數-預設值}
待測變數,若不存在,返回 預設值;存在,返回 待測變數
unset myname
r=${$myname - 'fuck'}
echo $r
20.${待測變數:-預設值} 與上面相比 多了:測試變數 不存在 或 其值為空,返回 預設值
IamHappy='Feel so good'
r=${IamHappy:+'true'}
echo $r
21. 多檔案搜尋方式:
fgrep.sh
#!/bin/bash
exec grep -F ${1+"$@"}
fgrep.sh Mem /proc/meminfo /root/test.txt
$1=Mem 非空,則,${1+"$@"}傳回$@,此變數值等於所有位置引數組合起來的:
Mem /proce/meminfo /root/test.txt
grep -F Mem /proce/meminfo /root/test.txt
整理:
${待測變數:-預設值}---回傳結果-定是非空值---測不存在或空值
${待測變數:=預設值}---給空值變數設一個預設值---測不存在或空值
${待測變數:?預設值}---檢查條件是否完備---測不存在或空值
${待測變數:+預設值}---判斷某事是否為真---測試存在且非空
移除:,只測存在性,不測空值
記憶法:
:)---空---測試空
-)---負向---測不存在
=)---設值---給空值變數設一個預設值
?)---有問題---檢查條件是否完備後再來執行吧
+)---正向---測試存在
22.字串擷取
語法一:${變數:位置起點}
myname="sheller man"
substr=${myname:4}
echo $substr
語法二:${變數:位置起點:長度}
filename="/etc/apache2"
dir1=${filename:1:3}
echo $dir1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-763735/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux shell 基礎Linux
- Linux shell基礎3Linux
- Linux shell基礎1Linux
- Linux shell基礎2Linux
- Linux基礎入門(一)初識ShellLinux
- Linux學習(Shell基礎)Linux
- Linux基礎五(shell指令碼)Linux指令碼
- Linux學習-shell基礎02Linux
- Linux 的shell基礎教學Linux
- shell和命令操作基礎一
- 《前端運維》一、Linux基礎--04Shell變數前端運維Linux變數
- 《前端運維》一、Linux基礎--05Shell運算子前端運維Linux
- shell基礎
- Linux基礎之Shell與變數Linux變數
- Linux shell 指令碼基礎介紹Linux指令碼
- Linux 筆記分享四:Shell 基礎Linux筆記
- Linux shell基礎知識_8(下)Linux
- Linux的shell基礎教學(轉)Linux
- 《前端運維》一、Linux基礎--06Shell流程控制前端運維Linux
- shell基礎學習總結(一)
- shell基礎教程二十四: shell基礎教程: Shell檔案包含
- Linux基礎命令---enable開啟shell命令Linux
- 玩轉Linux – shell 程式設計基礎Linux程式設計
- shell 基礎命令
- shell基礎(轉)
- Shell基礎教程七:Shell字串字串
- Linux必須掌握的shell指令碼基礎Linux指令碼
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- Linux系統程式設計(12)——shell基礎Linux程式設計
- shell基礎篇(二)-shell變數變數
- shell基礎應用
- 9.Shell基礎
- Shell基礎-管道符
- [shell基礎]——變數變數
- [shell基礎]——echo命令
- [shell基礎]——sed命令
- [shell基礎]——find命令
- [shell基礎]——uniq命令