8.1 shell介紹
8.2 命令歷史
8.3 命令補全和別名
8.4 通配符
8.5 輸入輸出重定向
8.1 shell介紹
shell是一個命令解釋器,提供用戶和機器之間的交互
支持特定語法,比如邏輯判斷、循環(if for whell)
每個用戶都可以有自己特定的shell
CentOS7默認shell爲bash(Bourne Agin Shell)
還有zsh、ksh等yum list |grep zsh 搜索yum 中是否有zsh
# yum list |grep ksh
8.2 命令歷史
shell的屬性 特性
我們輸入的命令可以用向上的方向鍵來查看歷史命令 ,這些歷史命令存儲在用戶的家目錄下
1. # ls /root/.bash_history 歷史命令保存在用戶家目錄的.bash_history文件中
2. # history 查看存儲了多少命令history -c 清空內存裏面的命令歷史 ,並不會刪除配置文件.bash_history中的歷史命令
這個文件裏最大存儲爲1000條命令
1000條命令是由系統自帶的環境變量決定的
3. # echo $HISTSIZE 環境變量HISTSIZE 決定了歷史命令的保存數量
我們剛敲過的命令暫時是存在內存裏面的,不會保存在歷史命令文件中,只有退出終端後 纔會保存在歷史命令文件中
4.變量HISTSIZE 去哪裏更改呢? 在 /etc/profile 中更改
HISTSIZE=1000
5. # source /etc/profile 更改數量之後需要運行這個命令纔會使我們更改的配置文件生效
6. # HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 定義格式 會記錄日期和時間
Y--年份 m--月份 d--日期 H--小時 M--分鐘 S--秒
如何更改命令格式的具體步驟哦~~~~
如果讓記錄時間和日期的歷史命令生效需要把這個命令放在 ---- # vi /etc/profile 中然後------把 # HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 放在HISTSIZE 下----- # source /etc/profile---重新打開終端--# echo $ HISTTIMEFORMAT---# history讓命令歷史永久保存 我們可以給它增加一個隱藏的權限
7. # chattr +a ~/.bash_history 永久保存
給.bash_history加一個a權限,不能刪除,可以追加
只有當用戶正常退出當前shell時,在當前shell中運行的命令纔會保存至.bash_history文件中
正常退出 輸入 exit 或者 logout 可以正常退出 如果直接關閉服務器我們輸出的歷史命令是不會保存的
8.# !! :連續兩個!表示執行上一條命令(輸入的最後一個命令)!n n代表數字 運行第n條命令
# !echo: !echo表示執行命令歷史中最近一次以echo開頭的命令(從下往上找)
8.3 命令補全和別名
補全
1. tab鍵
不僅可以補全命令 也可以補全路徑(命令開頭 如果多的話要按兩下,)
2.# yum install -y bash-completion 參數補全需要安裝bash-completion
安裝完包之後 還需要重啓一下電腦 參數補全纔可以生效reboot 重啓
別名
1.alias 給命令重新起個名字
alias 別名='原本命令' 給命令更改別名
# unalias 別名 取消自定義的別名
alias 查詢alias 用法
2.配置別名的文件在什麼地方 第一個在用戶的家目錄下 # .bashrc 還有一些是在 /etc/profile.d/
8.4 通配符
1.# ls *.txt 星號用來匹配零個或多個任意字符
2.# ls ?. txt 問號表示一個字符
3.# ls [0-3].txt -------- [ ]裏面表示範圍,只要是在這個範圍內都列出來
4.# ls {1,2,,3}.txt ------------{ }這個也表示範圍,不過裏面的數字或者是字母要用 ,隔開8.5 輸入輸出重定向
> 輸出 <輸入
cat 1.txt >2.txt 把1.txt的內容重定向到2.txt裏面 ( 2.txt裏面的文件就會刪除掉 重新寫入1.txt的內容 ,1.txt內容不變)
cat 1.txt >>2.txt 把1.txt的內容追加到2.txt裏面 ( 2.txt裏面的文件不會刪除並且追加寫入1.txt的內容 ,1.txt內容不變)
2> 錯誤重定向
2>>錯誤追加重定向
&> 正確和錯誤wc -l < 1.txt 把1.txt的內容輸入到wc-l這條命令裏面去
右邊是文件 左邊只能是命令