查看使用的shell種類
echo $SHELL
centos ubuntu使用的bash
echo輸出命令
echo打印到屏幕上。
echo [選項] [輸出內(nèi)容]
選項: -e:支持反斜線控制的字符轉(zhuǎn)換
| 控制字符 | 作用 |
|---|---|
| \a | 輸出警告音 |
| \b | 退格鍵,向左刪除鍵 |
| \n | 換行符 |
| \r | 回車符 |
| \t | 制表符,Tab鍵 |
| \v | 垂直制表符 |
| \0??? | 按照八進(jìn)制ASCII碼表輸出字符 |
| \x?? | 按照十六進(jìn)制ASCII碼表輸出字符 |
echo "hello world"
[root@bogon ~]# echo -e "hello\b"
hello
[root@bogon ~]# echo -e "hell o\b"
hell o
[root@bogon ~]# echo -e "hell o\b a "
hell a
[root@bogon ~]# echo -e "\x68\x65\x6c\x6c\x6f"
hello
輸出顏色
# 30m:黑色 31m:紅色 32m:綠色 33m:黃色 34m:藍(lán)色 35m:洋紅 36m:青色 37m:白色
echo -e "\e[1;31m哈哈哈\e[0m"
第一個腳本
vi hello.sh
然后編輯腳本
# !/bin/bash
# 這是第一個shell腳本
echo -e ”\e[1;34m 天上掉下個豬八戒\e[0m“
腳本執(zhí)行
方法一:賦予執(zhí)行權(quán)限,直接運(yùn)行
chmod 755 hello.sh
./hello.sh
方法二:通過bash調(diào)用執(zhí)行腳本
bash hello.sh
命名別名
# 查看系統(tǒng)中所有的命令別名
alias
# 設(shè)定命令別名,重啟計算機(jī)之后失效
alias 別名 = '原命令'
alias ls = 'ls --color=never'
# 別名永久生效與刪除別名
# 寫入環(huán)境變量配置文件
vi ~/.bashrc
# 刪除別名
unalis 別名(臨時刪除)
命令生效順序:
- 第一順位執(zhí)行用絕對路徑或相對路徑執(zhí)行的命令
- 第二順位執(zhí)行別名
- 第三順位執(zhí)行bash的內(nèi)部命令
- 第四順位執(zhí)行按照$PATH環(huán)境變量定義的目錄查找順序找到的第一個命令
常用快捷鍵
| 快捷鍵 | 作用 |
|---|---|
| ctrl+c | 強(qiáng)制終止當(dāng)前命令 |
| ctrl+l | 清屏 |
| ctrl+a | 將光標(biāo)移動到行首 |
| ctrl+e | 將光標(biāo)移動到行尾 |
| ctrl+u | 將光標(biāo)所在位置刪除到行首 |
| ctrl+z | 把命令放入后臺 |
| ctrl+r | 在歷史命令中搜索 |
歷史命令
查看歷史命令
history [選項] [歷史命令保存文件]
選項:
-c:清空歷史命令
-w:將緩存中的歷史命令寫入歷史命令保存文件~/.bash_history
歷史默認(rèn)命令會保存1000條,可以在環(huán)境變量配置文件/etc/profile中進(jìn)行修改(HISZIZE字段)
歷史命令的調(diào)用
- 使用上下箭頭調(diào)用以前的歷史命令
- 使用"!n" 重復(fù)執(zhí)行第n條歷史命令
- 使用"!!"重復(fù)執(zhí)行上一條命令
- 使用"!字串" 重復(fù)執(zhí)行最后一條以該字串開頭的命令
命令與文件補(bǔ)全
在bash中,命令與文件補(bǔ)全使用tab鍵,一次或兩次。
輸出輸入重定向
標(biāo)準(zhǔn)輸入輸出
| 設(shè)備 | 設(shè)備文件名 | 文件描述符 | 類型 |
|---|---|---|---|
| 鍵盤 | /dev/stdin | 0 | 標(biāo)準(zhǔn)輸入 |
| 顯示器 | /dev/stdout/1 | 標(biāo)準(zhǔn)輸出 | |
| 顯示器 | /dev/stderr/2 | 標(biāo)準(zhǔn)錯誤輸出 |
輸出重定向
| 類型 | 符號 | 作用 |
|---|---|---|
| 標(biāo)準(zhǔn)輸出重定向 | 命令 > 文件 | 以覆蓋的方式,把命令的正確輸出輸出到指定的文件或設(shè)備當(dāng)中 |
| 標(biāo)準(zhǔn)輸出重定向 | 命令 >> 文件 | 以追加的方式,把命令的正確輸出輸出到指定的文件或設(shè)備當(dāng)中 |
| 標(biāo)準(zhǔn)錯誤輸出重定向 | 錯誤命令 2>文件 | 以覆蓋的方式,把命令的錯誤輸出輸出到指定的文件或設(shè)備當(dāng)中 |
| 標(biāo)準(zhǔn)錯誤輸出重定向 | 錯誤命令 2>>文件 | 以追加的方式,把命令的錯誤輸出輸出到指定的文件或設(shè)備當(dāng)中 |
| 正確輸出和錯誤輸出同時保存 | 命令>文件 2>&1 | 以覆蓋的方式,把正確輸出和錯誤輸出都保存在同一個文件當(dāng)中 |
| 正確輸出和錯誤輸出同時保存 | 命令>>文件 2>&1 | 以追加的方式,把正確輸出和錯誤輸出都保存在同一個文件當(dāng)中 |
| 正確輸出和錯誤輸出同時保存 | 命令&>文件 | 以覆蓋的方式,把正確輸出和錯誤輸出都保存在同一個文件當(dāng)中 |
| 正確輸出和錯誤輸出同時保存 | 命令&>>文件 | 以追加的方式,把正確輸出和錯誤輸出都保存在同一個文件當(dāng)中 |
| 正確輸出和錯誤輸出同時保存 | 命令>>文件1 2>>文件2 | 把正確輸出追加到文件1中,把錯誤輸出追加到文件 |
2中
輸入重定向
命令<文件,把文件作為命令的輸入
命令<<標(biāo)識符,把標(biāo)識符之前的內(nèi)容作為命令的輸入
wc [選項] [文件名]
選項:
-c:統(tǒng)計字節(jié)數(shù)
-w:統(tǒng)計單詞數(shù)
-l:統(tǒng)計行數(shù)
wc本身統(tǒng)計行數(shù),單詞數(shù),字節(jié)數(shù),ctrl+d
多命令順序執(zhí)行
| 多命令執(zhí)行符 | 格式 | 作用 | |||
|---|---|---|---|---|---|
| ; | 命令1;命令2 | 多個命令順序執(zhí)行,命令之間沒有任何邏輯聯(lián)系 | |||
| && | 命令1&&命令2 | 邏輯與 當(dāng)命令1執(zhí)行正確,命令2執(zhí)行 當(dāng)命令1執(zhí)行不正確,命令2不執(zhí)行 |
|||
| 命令1 | 命令2 | 邏輯或 當(dāng)命令1執(zhí)行正確,命令2不執(zhí)行 當(dāng)命令1執(zhí)行不正確,命令2執(zhí)行 |
# 命令正確執(zhí)行打印yes,錯誤執(zhí)行打印no
命令 && echo yse || echo no
ls && echo yes || echo no
管道符
# 命令1的正確輸出作為命令2的操作對象
命令1 | 命令2
ll -a /etc/ | more
netstat -an |grep ESTABLISHED |wc -l
通配符
?,*,[abc],[0-9],[^0-9](非數(shù)字)
| 符號 | 作用 |
|---|---|
| '' | 單引號。單引號中的所有特殊符號都沒有含義 |
| "" | 雙引號。雙引號中特殊符號都沒有特殊含義,"$","`",""是例外 |
| `` | 反引號。反引號括起來的內(nèi)容是系統(tǒng)命令,在bash中會先執(zhí)行它。作用同$() |
| $() | 引用系統(tǒng)命令 |
| # | 注釋 |
| $ | 用于調(diào)用變量的值,格式為 $name |
| 轉(zhuǎn)義符。跟在\之后的特殊符號將失去特殊意義,變?yōu)槠胀ㄗ址?/td> |