linux 命令都是bash,Linux 命令分类_bash基础特性
1.歷史命令
history
在內(nèi)存中緩存當(dāng)前終端使用過(guò)的命令,
與其相關(guān)的幾個(gè)環(huán)境變量的配置:
HISTSIZE??? :在內(nèi)存中緩存命令的個(gè)數(shù)(history 中命令的個(gè)數(shù))
HISTFILE? ? :? 存在歷史命令的文件(~/.bash_history,存放命令的文件)
HISTFILESIZE:? 命令歷史文件中存放命令的個(gè)數(shù)(~/.bash_history存放命令個(gè)數(shù))
history 10????? 顯示最近的10條記錄
history -a? 手動(dòng)追加當(dāng)前的歷史命令到記錄文件
hisroty命令的加載和~/.bash_history命令是怎么記錄的?
調(diào)用歷史中的命令:
!#: 重復(fù)執(zhí)行第#條指令;
!!: 重復(fù)執(zhí)行上一條命令
!string? :重復(fù)執(zhí)行與string匹配的最近一條命令
調(diào)用上一條命令的最后一個(gè)參數(shù):
!$:
ESC, .
Alt+.
控制歷史命令的記錄方式:
環(huán)境變量:HISTCONTROL
ignoredups:忽略重復(fù)的命令;連續(xù)且相同方為“重復(fù)”;
ignorespace:忽略所有以空白開(kāi)頭的命令;
ignoreboth:ignoredups, ignorespace;
修改環(huán)境變量值的方式:export 變量名="值"
變量賦值:把賦值符號(hào)后面的數(shù)據(jù)存儲(chǔ)于變量名指向內(nèi)存空間;
2.命令補(bǔ)全
bash命令執(zhí)行:
內(nèi)部命令:
外部命令:bash根據(jù)PATH定義的路徑,自左向右在每個(gè)路徑下搜索以給定命令開(kāi)頭的文件,第一次找到即為要執(zhí)行的命令;
TAB補(bǔ)全:使用Tab鍵,補(bǔ)全用戶(hù)給定字符串開(kāi)頭的命令,只有一條命令的時(shí)候直接補(bǔ)全,有多條的時(shí)候,再次點(diǎn)擊Tab,則給提示所有相符的命令
3.路徑補(bǔ)全
路徑補(bǔ)全
把用戶(hù)給出的字符串當(dāng)做路徑開(kāi)頭,并在其指定上級(jí)目錄下搜索以指定的字符串開(kāi)頭的文件名;
如果惟一:則直接補(bǔ)全;
否則:再次Tab,給出列表;
4.命令行展開(kāi)
~:當(dāng)前用戶(hù)的家目錄
~USERNAME:? 給定用戶(hù)的家目錄
{}?? :可承載一個(gè)以逗號(hào)分割的列表,將其展開(kāi)為多個(gè)路徑
/tmp/{a,b}? = /tmp/a? ,? /tmp/b
5.命令執(zhí)行狀態(tài)
成功
失敗
bash使用特殊變量$?保存最近一條命令的執(zhí)行狀態(tài)結(jié)果:
0:成功
1-255:失敗
程序執(zhí)行有兩類(lèi)結(jié)果:
程序的返回值;
程序的執(zhí)行狀態(tài)結(jié)果;
6.別名
1.命令別名 -alias
通過(guò)alias命令實(shí)現(xiàn)
(1)查看當(dāng)前shell進(jìn)程中可以使用的全部別名? alias
(2) alias? NAME = VALUE 定以別名,僅對(duì)當(dāng)前shell或子shell有效
永久有效的命令,需要在配置文件中配置
(1)對(duì)當(dāng)前用戶(hù)有效?? ~/.bashrc
(2) 對(duì)所有用戶(hù)有效?? /etc/bashrc (不是所有系統(tǒng)都一樣)
NOTE:
編輯配置文件后不是立即生效,如果想立即生效,需要重新讀取配置文件
source? /path/to/file
.?? /path/to/file
撤銷(xiāo)別名 unalias
unalias [-a] NAME [NAME...]
NOTE:
別名和原來(lái)的名稱(chēng)相同,如果想要執(zhí)行原來(lái)的命令,使用:"/COMMAND"
7.glob (globbing)
bash中實(shí)現(xiàn)文件名”通配“
通配符: *?? ?? [ ]
(1)? *? ? 任意數(shù)量的字符?? :? 0+
a*b??? a-b之間可以任意數(shù)量的字符,可以沒(méi)有,也可以很多個(gè)
(2)? 任意單個(gè)字符?? : 1
a?b??? a-b之間有且一個(gè)字符
(3)[ ] ? 匹配指定范圍內(nèi)的任意單個(gè)字符 :? 指定范圍? 1
[0-9] :? 0-9之間任意單個(gè)字符
[a-z]:不區(qū)分字符大小寫(xiě)
(4) [^]? 匹配指定范圍之外的任意單個(gè)字符 : 指定范圍之外 1
[^0-9]?? 0-9之外的字符
[^a-z] ?? 非大寫(xiě)和小寫(xiě)字母字符
專(zhuān)用字符集合:(使用的時(shí)候需要外加 '[ ]')
[:digit:]:任意數(shù)字,相當(dāng)于0-9
[:lower:]:任意小寫(xiě)字母
[:upper:]: 任意大寫(xiě)字母
[:alpha:]: 任意大小寫(xiě)字母
[:alnum:]:任意數(shù)字或字母
[:space:]:
[:punct:]:標(biāo)點(diǎn)符號(hào)
練習(xí):
1、顯示/var目錄下所有以l開(kāi)頭,以一個(gè)小寫(xiě)字母結(jié)尾,且中間出現(xiàn)至少一位數(shù)字的文件或目錄;
# ls -d /var/l*[0-9]*[[:lower:]]
2、顯示/etc目錄下,以任意一位數(shù)字開(kāi)頭,且以非數(shù)字結(jié)尾的文件或目錄;
# ls -d /etc/[0-9]*[^0-9]
3、顯示/etc/目錄下,以非字母開(kāi)頭,后面跟了一個(gè)字母及其它任意長(zhǎng)度任意字符的文件或目錄;
# ls /etc/[^[:alpha:]][[:alpha:]]*
4、復(fù)制/etc目錄下,所有以m開(kāi)頭,以非數(shù)字結(jié)尾的文件或目錄至/tmp/mageedu目錄中;
# cp -a /etc/m*[^0-9] /tmp/mageedu
5、復(fù)制/etc目錄下,所有以.d結(jié)尾的文件或目錄至/tmp/magedu.com目錄中;
# cp -a /etc/*.d /tmp/magedu.com
6、復(fù)制/etc目錄下,所以有.conf結(jié)尾,且以m,n,r,p開(kāi)頭的文件或目錄至/tmp/mageedu.com目錄中;
# cp -a /etc/[mnrp]*.conf? /tmp/mageedu.com
8、bash的快捷鍵
Ctrl+l: 清屏,相當(dāng)于clear命令;
Ctrl+a:跳轉(zhuǎn)至命令開(kāi)始處;
Ctrl+e:跳轉(zhuǎn)至命令結(jié)尾處;
Ctrl+c:取消命令的執(zhí)行;
Ctrl+u: 刪除命令行首至光村所在處的所有內(nèi)容;
Ctrl+k: 刪除光標(biāo)所在處至命令行尾部的所有內(nèi)容;
9、bash的的I/O重定向及管道
為了更好理解,我新建了一篇文章。
總結(jié)
以上是生活随笔為你收集整理的linux 命令都是bash,Linux 命令分类_bash基础特性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下启动solr命令,如何自动启
- 下一篇: linux基础概念