JavaShuo
欄目
標籤
shell介紹,命令歷史,命令補全和別名,通配符,輸入輸出重定向,管道符和做業控制
時間 2019-12-17
標籤
shell
介紹
命令
歷史
補全
別名
通配符
輸入
輸出
重定向
管道
控制
欄目
Unix
简体版
原文
原文鏈接
shell介紹
可使用 yum list |grep zsh 或者 yum list |grep ksh
這樣能夠搜索 zsh 和 ksh ,有須要的話能夠安裝
總之,默認使用的就是 .bash shell
命令歷史
輸入過的命令會被保存在一個文件內
在shell界面,使用 上方向鍵 能夠往上查看以前輸入過的命令
這個保存命令的文件地址在用戶家目錄下面
例子:root 用戶的家目錄就是 /root
保存過往命令的文件名稱是 .bash_history
那麼root用戶保存過往命令的文件路徑就在 /root/.bash_history
使用 history 命令就能夠查看記錄了多少條過往命令
上圖能夠看到,輸入的最後一條命令是 history
序號是1003,說明.bash_history已經記錄了1003條過往命令
不過 .bash_history 最多隻能存儲1000條命令
往上翻,能夠看到,命令是從序號 4 開始的
由於記錄到1003條命令,但只能存1000條命令,因此最前面的3條命令被刪除了
有一個系統內置的環境變量 HISTSIZE
使用上圖命令,能夠看到返回的值是 1000
因此 .bash_history 最大記錄的命令數量爲1000
使用 history -c 命令能夠清空當前 .bash_history 的內容
不過 history -c 只是清空內存中的內容,寫進硬盤的內容並不會被清空
使用終端時輸入的命令都是保存在內存裏面的
退出終端的時候纔會被寫入硬盤
HISTSIZE 環境變量能夠被修改
能夠在 /etc/profile 文件中修改
vi 打開 profile 文件,而後找到上圖中的這個變量
將變量數值修改成本身想要的數值,而後保存退出
不過如今修改尚未生效,須要執行命令 source /etc/profile
這樣修改纔會生效,可使用 echo $HISTSIZE 查看是否生效
或者退出終端,而後從新進入後也會生效
若是想把命令輸入的時間也記錄進 .bash_history
可使用上圖的命令,首先賦值給環境變量 HISTTIMEFORMAT
"%Y%m%d %H:%M:%S " 表明時間的格式:年月日 時:分:秒
使用 echo $HISTTIMEFORMAT 查看格式的值是否改變了
能夠看到下面返回的值是 "%Y/%m/%d %H:%M:%S "
系統默認 HISTTIMEFORMAT 的值爲空,因此新建一個終端這個變量的值是爲空的
如圖,能夠看到,再使用 history 命令查看記錄在內存裏面的過往命令
每一條過往命令都增長了使用時間的記錄
若是但願永久保留這個設置,而不是每次打開終端都要從新設置一遍
能夠在 /etc/profile 文件裏面設置這一個變量
用 vim 打開 profile
如圖,找到 HISTSIZE,在它的下面增長一行,HISTTIMEFORMAT
就把以前設置變量的格式複製到這裏,而後保存退出
而後須要 source /etc/profile 一下使其生效
而後從新進入終端
能夠發現,默認 HISTTIMEFORMAT 的值已是以前設置的格式了
上圖命令是對 .bash_history 文件追加 a 權限
增長 a 權限後,這個文件就只能被追加信息,而不會被刪除信息
這樣就能夠無限的保存命令到這個命令歷史文件裏面了
可是若是不正常退出終端的話,有可能過往命令會保存不全
正常退出終端須要使用命令 logout 或者 exit
命令 !! 會執行上一條命令,也就是說命令歷史裏面記錄的最後一條命令
好比使用 ls 命令後,再使用 !! 命令
那麼就會再執行一次 ls 命令,由於上一條命令是 ls
命令 !n ,n表明數字
使用命令 history 查看命令歷史,每一條命令都有一個id號碼
例子,使用命令 !768 那麼就會執行命令歷史裏面id爲768的命令
命令 !word ,word表明單詞
好比在命令歷史裏面,總共使用了3次 ls /root 命令
而後使用命令 !ls
那麼就會執行命令歷史裏面最後一次 ls 命令
也可使用 !vim 或者 !echo
那麼也會執行命令歷史裏面最後一次使用 vim 或者 echo 的命令
命令補全和別名
tab 補全命令或者路徑
例子,輸入 ls 按兩下tab
系統會列出全部以 ls 開頭的系統命令出來
上圖是全部系統內以 ls 開頭的命令
若是輸入圖中的 lsinit 而後按一下 tab
系統會自動補全後面缺失的 rd 變成 lsinitrd
總結,輸入一個命令或者路徑
好比 ls 或者 /ro
若是存在多個命令以 ls 開頭或者路徑以 /ro 開頭
那麼按兩下 tab 就能夠把全部目標列出來
若是隻存在一個目標,那麼按一下tab就能夠把剩餘的部分補全
如圖,輸入 /ro 而後按一下tab,系統會自動補全爲 /root/
還能夠補全命令的參數,不過須要下載一個包
使用上圖所示命令安裝包,能夠得到補全命令參數的功能
安裝完包以後,須要先退出終端再從新鏈接纔會生效
如上圖,輸入 systemctl res 而後按兩下 tab
下面出現三個參數選項,rescue, reset_failed, restart
或者輸入 systemctl rest 而後按一下tab
就是自動補全爲 systemctl restart
這就是能夠自動補全命令參數的功能
上圖是使用別名
如圖,alias restartnet = 'systemctl restart network.service'
這樣就把'systemctl restart network.service' 這條命令取了一個別名叫作 restartnet
之後只要運行 restartnet 就等因而運行了'systemctl restart network.service'這條命令
如圖,使用 alias 命令就能夠查看系統內全部的別名
能夠看到剛纔取的別名 restartnet 的信息
關於alias別名信息保存的文件位置有兩個
用戶家目錄下的 .bashrc 文件和 /etc/profile.d 目錄內的文件
有一些alias信息記錄在用戶家目錄的 .bashrc 文件內
如上圖,還有一些alias信息記錄在/etc/profile.d目錄內的文件內
紅色箭頭指到的幾個文件都存在相關的alias信息
總結,alias信息主要在這兩個地方記錄
通配符
星號 * 就是通配符,表明任意長度的任意字符,包括字符數字符號等
如圖,使用命令 ls *.txt
就把目錄下面全部的 .txt 文件顯示出來了
由於 * 表明任意長度的字符
因此 *.txt 就表示 任意長度字符 + .txt
因此 ls *.txt 就會列出全部 任意長度字符 + .txt 的文件
還有一個通配符是問號 ?
問號 ? 跟星號 * 的區別是*表明任意長度,?只表明一位字符
如上圖,ls *.txt 會列出全部 .txt文件
若是使用 ls ?.txt 只會列出 1.txt,2.txt,3.txt
不會列出 aa.txt ,由於 aa 是兩位字符,? 只表明一位字符
如圖,還有一種通配符用法是 方括號+數字或者字母
ls [0-3].txt 能夠顯示0到3任意一個數字 + .txt 的文件
ls [13].txt 能夠顯示名稱爲 1.txt 和 3.txt 的文件
ls [0-9a-z].txt 能夠顯示 0-9任意一個數字 或者 a-z任意一個字母 + .txt 的文件
還能夠加上大寫字母如 ls [0-9a-zA-Z].txt 能夠把屬於方括號範圍內的字母或數字的.txt文件所有顯示出來
如圖,還可使用花括號,做用跟方括號相似,可是書寫格式不一樣
花括號必須寫逗號 , 用來間隔不一樣的項
輸入輸出重定向
上圖命令就是重定向,cat 1.txt > 2.txt
意思是把 1.txt 文件的內容寫入 2.txt 裏面,2.txt裏面原來的內容會被刪除
上圖命令就是追加
追加是指,把 1.txt 的內容寫入 2.txt
可是 2.txt 原來的內容不會被刪除,1.txt的內容寫在2.txt內容的後面
如圖, 2> 就是錯誤重定向的符號
重定向通常是把正確執行的信息重定向到一個文件裏面
lsaaa 這個命令不存在,因此係統返回一個錯誤信息
若是使用重定向符號 > ,由於這條命令是錯誤的,並無正確執行
因此重定向是沒法生效的
可是系統返回了一個錯誤信息,2> 符號能夠把這條系統返回的錯誤信息重定向到一個文件裏面
上圖能夠看到,把lsaaa的錯誤信息 2> 到 a.txt 裏面
cat a.txt 查看內容,能夠看到內容就是系統返回的錯誤信息
還可使用 追加錯誤重定向 ,符號是 2>>
錯誤重定向會把文件原來的內容刪除,而後把錯誤信息寫入進去
追加錯誤重定向 不會把原文件信息刪除
而是把錯誤信息追加到原文件內容的後面
如圖,再運行一次 lsaaa 2>> a.txt
a.txt 以前已經記錄了一條 lsaaa的錯誤信息
如今追加一條錯誤信息
cat a.txt 內容,能夠看到有兩條錯誤信息
重定向 和 錯誤重定向 是能夠同時使用的
重定向 > + 錯誤重定向 2> = &>
重定向 與 錯誤重定向 同時使用的符號就是 &>
如圖,ls [12].txt aaa.txt &> a.txt
這條命令是顯示 1.txt和2.txt,還有aaa.txt
1.txt,2.txt都存在,因此能夠正確執行
aaa.txt這個文件不存在,因此係統會返回錯誤信息
如今一條命令裏面,既要把正確返回的信息記錄下來
又要把系統返回的錯誤信息記錄下來
就須要用到 &> 符號,由於 &> == > + 2>
cat a.txt 查看內容,能夠看到,正確返回的信息跟錯誤信息都記錄了
一樣,也能夠 正確錯誤重定向追加,符號是 &>>
符號 &>> == >> + 2>>
如圖,從新運行一遍以前的命令,可是符號從 &> 改成 &>>
這樣就把 正確錯誤的信息 追加到 a.txt 之中了
使用cat查看 a.txt 內容
能夠看到,此次的正確錯誤信息被追加到上次的信息後面
還能夠這樣寫,就是分別把 正確的信息 重定向到 1.txt
錯誤的信息 重定向到 a.txt
cat 分別查看 1.txt 和 a.txt 內容
能夠看到正確記錄了 正確返回信息 跟 錯誤返回信息
這樣就把 正確返回 和 錯誤返回 分別重定向到不一樣的文件裏面了
wc -l 1.txt 能夠查看文本文檔的行數
wc -l < 1.txt 是輸入重定向
就是把文件內容重定向到命令後面,只對命令有效,不能文件對文件
幾乎不會用到,作個瞭解就行
管道符和做業控制
管道符 | ,做用就是把左邊命令的結果,做爲右邊命令的做用對象
如圖,cat 1.txt |wc -l
首先左邊命令 cat 1.txt 會輸出一些文本
輸出的文本會做爲 wc -l 的做用對象
wc -l 的做用是顯示文本的行數
cat 1.txt 輸出了一個文本對象
wc -l 會對這個文本對象產生做用
也就是說顯示這個文本對象的行數
ctrl + z 能夠暫停一個任務
好比在編輯一個文件,可是須要查看另一個文件
這時候能夠不保存退出,而是暫停當前任務
如圖,正在編輯 1.txt
使用 ctrl + z 暫停當前任務
能夠看到,出現一行顯示 已中止 的信息
如圖,編輯 2.txt 而後使用 ctrl + z 暫停任務
出現中止信息,前面的序號是 2 , 1.txt的中止信息前面的序號是 1
如今已經有兩個任務被暫停了
使用命令 jobs 就能夠查看有多少任務被暫停了
結果顯示了兩個被暫停的任務信息
如今若是想回到被暫停的任務裏面,繼續任務
可使用 fg + 任務id 的辦法回到任務
若是隻有一個任務,直接 fg 就能夠回到任務
若是想回到 任務2 可使用 fg 2
若是想回到 任務1 可使用 fg 1
還可使用 bg 命令把任務放到後臺去
fg 命令是把任務放到前臺來
bg 就能夠把命令放到後臺去
進入後臺的命令能夠繼續運行,由於不在前臺
因此可能沒法看到
把編輯 2.txt 的任務放到後臺去了
使用 bg 2 ,由於這個任務的id是2
若是隻有一個任務,直接 bg 就能夠放到後臺了
顯示信息能夠看到,任務不是中止的,暫停任務會顯示任務已中止的信息
不管把任務放到前臺仍是後臺,任務都會從中止狀態恢復
存在多個任務的時候,直接fg或者bg,目標對象是最後一個任務
還可使用命令方式直接後臺運行
sleep 100 能夠暫停系統100秒,什麼事都不幹
在前臺的時候,效果是命令行消失,不能輸入命令
100 秒後才恢復,在後臺的話就沒什麼做用了
直接使用命令 sleep 100 & 命令後面加上符號 &
這樣命令 sleep 100 會直接在後臺運行
其它命令也能夠加 & 使命令直接在後臺運行
jobs 只能在當前終端查看
開第二個終端使用jobs沒法看到上一個終端的相關信息
相關文章
1.
shell介紹、命令歷史、命令補全和別名、通配符和輸入輸出重定向
2.
shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向
3.
shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向
4.
8.1 shell介紹 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出重定向
5.
23次課(shell介紹、命令歷史、命令補全和別名、 通配符、輸入輸出重定向)...
6.
shell介紹、歷史命令、命令補全和別名、通配符、輸入輸出重定向
7.
shell介紹,命令歷史,命令補全和別名,通配符,輸入輸出重定向
8.
shell介紹,命令歷史,命令補全和別名 ,通配符, 輸入輸出重定向
9.
shell介紹 、命令歷史、命令補全和別名 、通配符 、輸入輸出重定向
10.
shell介紹、命令歷史、 命令補全和別名 、通配符 、輸入輸出重定向
更多相關文章...
•
Rust 輸出到命令行
-
RUST 教程
•
SQL 通配符
-
SQL 教程
•
Docker 清理命令
•
Java Agent入門實戰(一)-Instrumentation介紹與使用
相關標籤/搜索
命令
自定製命令
14-輸入/輸出
傳輸控制
linux操做命令
Vim命令大全
通配符
命令模式
下命令
HTTP/TCP
Unix
Docker命令大全
XLink 和 XPointer 教程
MyBatis教程
命令
數據傳輸
數據業務
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
Android Studio3.4中出現某個項目全部亂碼的情況之解決方式
2.
Packet Capture
3.
Android 開發之 仿騰訊視頻全部頻道 RecyclerView 拖拽 + 固定首個
4.
rg.exe佔用cpu導致卡頓解決辦法
5.
X64內核之IA32e模式
6.
DIY(也即Build Your Own) vSAN時,選擇SSD需要注意的事項
7.
選擇深圳網絡推廣外包要注意哪些問題
8.
店鋪運營做好選款、測款的工作需要注意哪些東西?
9.
企業找SEO外包公司需要注意哪幾點
10.
Fluid Mask 摳圖 換背景教程
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
shell介紹、命令歷史、命令補全和別名、通配符和輸入輸出重定向
2.
shell介紹、命令歷史、命令補全和別名、通配符、輸入輸出重定向
3.
shell介紹 命令歷史 命令補全和別名 通配符 輸入輸出重定向
4.
8.1 shell介紹 命令歷史 8.3 命令補全和別名 8.4 通配符 8.5 輸入輸出重定向
5.
23次課(shell介紹、命令歷史、命令補全和別名、 通配符、輸入輸出重定向)...
6.
shell介紹、歷史命令、命令補全和別名、通配符、輸入輸出重定向
7.
shell介紹,命令歷史,命令補全和別名,通配符,輸入輸出重定向
8.
shell介紹,命令歷史,命令補全和別名 ,通配符, 輸入輸出重定向
9.
shell介紹 、命令歷史、命令補全和別名 、通配符 、輸入輸出重定向
10.
shell介紹、命令歷史、 命令補全和別名 、通配符 、輸入輸出重定向
>>更多相關文章<<