shell腳本在平常的Linux系統管理中是必不可少的; shell是系統跟計算機硬件交互時使用的中間介質。 shell是一個命令解釋器,提供用戶和機器之間的交互; 支持特定語法,好比邏輯判斷、循環; 每一個用戶均可以由本身特定的shell; centOS7默認shell爲bash(Bourne Agin shell) 還有zhs、ksh等。
概念:咱們執行過的命令Linux都會記錄,預設能夠記錄1000條命令歷史, 這些命令保存在用戶的家目錄 .bash_history文件中。 # 只有當用戶正常退出當前shell時,在當前shell中運行的命令纔會保存至 .bash_history
查看預設命令條數顯示shell
[root@localhost apache2]# echo $HISTSIZE
1000 #默認1000條apache
清空當前命令歷史 history -cbash
[root@localhost apache2]# history -c
#不會刪除存命令裏面的東西spa
預設值的配置文件,.net
[root@localhost apache2]# vi /etc/profile
46 HISTSIZE=1000 #46行在這裏更改。3d
須要重啓後才生效,要麼source一下就能夠生效。rest
[root@localhost apache2]# echo $HISTSIZE
1000
[root@localhost apache2]# soure /etc/profile
-bash: soure: 未找到命令
[root@localhost apache2]# source /etc/profile
[root@localhost apache2]# !echo
echo $HISTSIZE
5000 #修改爲功code
怎麼樣修改命令歷史顯示時間,修改變量blog
[root@localhost /]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@localhost /]# echo $HISTTIMEFORMAT #echo查看環境變量
%Y/%m/%d %H:%M:%S
[root@localhost /]# history #查看當前命令歷史記錄
1 2018/04/17 21:00:15 vi /etc/profile
2 2018/04/17 21:01:24 echo $HISTSIZE
3 2018/04/17 21:01:56 soure /etc/profile
4 2018/04/17 21:02:11 source /etc/profile
5 2018/04/17 21:02:17 echo $HISTSIZE
6 2018/04/17 21:07:20 cd /etc/yum.repos.d
7 2018/04/17 21:07:22 ls
8 2018/04/17 21:07:36 vi dvd.repo
9 2018/04/17 21:09:35 cd ..
10 2018/04/17 21:10:47 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
11 2018/04/17 21:11:18 echo HISTTIMEFORMAT
12 2018/04/17 21:11:24 echo $HISTTIMEFORMAT
13 2018/04/17 21:11:51 history字符串
想要永久生效,編輯配置文件/etc/profile,添加環境變量進去
找到46行,在46行下添加環境變量
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
重啓或者source一下。
[root@localhost /]# source /etc/profile
永久生效,chattr +a ~/.bash_history 添加權限只能追加,不能修改刪除
[root@localhost /]# chattr +a ~/.bash_history
!!:連續兩個!表示執行上一條命令,示例以下:
!n:這裏的n是數字,表示執行命令歷史中的第n條命令,例如 !17 表示執行命令歷史的第17個命令,示例以下:
按tab鍵能夠幫咱們補全一個指令、一個路徑或者一個文件名。 連續按兩次tab鍵,系統則會把全部的命令或者文件都列出來。
安裝一個yum包,bash-completion,安裝完後,須要重啓一下才管用 reboot。
[root@localhost ~]# systemctl res
rescue reset-failed restart
[root@localhost ~]# systemctl restart
別名alias,自定義別名
[root@localhost ~]# alias restartnet='systemctl restart network.service'
[root@localhost ~]# alias #查看別名是否設置成功,restartnet
alias目前系統預設的別名在:.bashrc 下
- 其餘alias自定義別名,存放於 /etc/profile.d/下 - 如何取消自定義別名:unalias restartnet
在bash下,能夠使用*來匹配零個或多個字符,用?匹配一個字符
.
示例,查找全部以.txt結尾的文件
[root@localhost do]# ls *.txt
1.txt 2.txt 3.txt
[root@localhost do]# ls [23].txt
2.txt 3.txt
概念:輸入重定向用於改變命令的輸入,輸出重定向用於改變命令的輸入。 輸出重定向更爲經常使用,它常常用於將命令的結果輸入到文件中,而不是屏幕上。 輸入重定向的命令是 < 輸出重定向的命令是 > 還有錯誤重定向命令2>以及之u家重定向命令 >>
輸出重定向> ,把前面的命令追加到後面的文件裏去,原內容刪除,格式以下:
[root@localhost do]# cat 1.txt
[root@localhost do]# echo "123123" >1.txt
[root@localhost do]# cat 1.txt
123123
[root@localhost do]# echo "123" >1.txt
[root@localhost do]# cat 1.txt
123
追加文字 >>,把前面的命令 追加到後面的文件去。
[root@localhost do]# echo "123" >>1.txt
[root@localhost do]# cat 1.txt
123
123
假如說運行一個錯誤的命令,若是報錯的話 指向到一個文件裏。 2>
[root@localhost do]# lsaaaa 2> a.txt #在這裏,若是沒有報錯的話,不會保存進去。
[root@localhost do]# cat a.txt
-bash: lsaaaa: 未找到命令
[root@localhost do]# ls 2> a.txt
1.txt 2.txt 3.txt a.txt
2>追加劇定向到某個文件裏。
[root@localhost do]# lsaaaa 2>> a.txt
[root@localhost do]# cat a.txt
-bash: lssad: 未找到命令
-bash: lsaaaa: 未找到命令