1. 程式人生 > >4月20日

4月20日

linux

8.1 shell介紹

一、什麽是shell

1shell是一個命令解釋器,提供用戶和機器之間的交互

2、支持特定語法,比如邏輯判斷、循環

3、每個用戶都可以有自己特定的shell

4CentOS7默認shellbashBourne Agin Shell

5、 還有zshksh

bash它是shBourne Shell)的增強版本,Bourn Shell 是最早行起來的一個shell,創始人叫Steven Bourne,為了紀念他所以叫做Bourn Shell,檢稱sh

看系統是否有安裝zshksh,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@aminglinux-01 ~]

# yum list |grep zsh

zsh.x86_64 5.0.2-25.el7 installed

autojump-zsh.noarch 22.3.0-3.el7 epel

zsh.x86_64 5.0.2-28.el7 base

zsh-html.x86_64 5.0.2-28.el7 base

zsh-lovers.noarch 0.9.0-1.el7 epel

[root@aminglinux-01 ~]# yum list |grep ksh

ksh.x86_64 20120801-34.el7 base

mksh.x86_64 46-5.el7 base

python-XStatic-Rickshaw.noarch 1.5.0.0-4.el7 epel

python-moksha-common.noarch 1.2.3-2.el7 epel

python-moksha-hub.noarch 1.5.3-2.el7 epel

python-moksha-wsgi.noarch 1.2.2-2.el7 epel

8.2 命令歷史

一、命令歷史:

1history命令 //查看之前使用的命令。

2.bash_history //存儲使用過的命令文件,在root的家目錄下

3、變量HISTSIZE 默認值1000 //存儲使用命令數值為1000

4/etc/profile中修改變量HISTSIZE //修改存儲命令數值

5HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " //記錄命令的使用時間

6、永久保存 chattr +a ~/.bash_history

7!! //執行上一條命令

8!n //n表示數字 比如:!176 這樣它就會執行命令歷史裏的176這條命令

9!echo //echo表示你需要找命令歷史裏從下往上找以word開頭的第一條命令執行它。

1.1 history命令

我們敲過的命令,linux是會有記錄的,預設可以記錄1000條歷史命令,這些命令保存在用戶的家目錄中的.bash_history文件中。只有正常退出當前shell時,在當前shell中運行的命令才會保存至.bash_history文件中。

技術分享圖片

1.2 清空當前命令歷史 history -c

技術分享圖片

(使用命令history -c 命令可以清空內存中的命令,

文件.bash_history裏的配置文件命令不會清空)

1.3 查看預設命令條數顯示命令: echo $HISTSIZE

技術分享圖片

1.4 修改記錄的歷史數,可以使用命令:

vim /etc/profile 中修改變量HISTSIZE:

技術分享圖片

技術分享圖片

1.4.1 修改後使用命令 :source /etc/profile 讓它生效,

然後再用命令:echo $HISTSIZE 來查看修改結果

技術分享圖片

1.5 記錄命令的使用時間,可以輸入以下變量即可(只限當前窗口的shell):

HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ”

技術分享圖片

1.5.1 如果要在其他的窗口shell中也生效,可以進入 /etc/profile 中添加一行HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S ” 即可

(保存退出後source /etc/profile一下生效):

技術分享圖片

1.6 永久生效,不讓別人刪除命令:chattr +a ~/.bash_history 添加權限只能追加,不能修改刪除

註意:如果執行了這條命令後,你並沒有正常退出終端,就會導致保存的命令不全。

1.7 !! 表示執行上一條指令

技術分享圖片

1.8 !n 表示執行命令歷史中n條指令,如!593條命令

技術分享圖片

1.9 !echo 表示執行命令歷史中最近一次 ‘echo’ 為開頭的命令

8.3 命令補全和別名

一、命令補全和別名:

1tab鍵,敲一下,敲兩下

2、參數補全,安裝bash-completion

3alias別名給命令重新起個名字

4、 各用戶都有自己配置別名的文件 ~/.bashrc //存放別名的路徑地址

ls /etc/profile.d/ //存放別名的路徑地址

自定義的alias放到~/.bashrc //自定義後別名存放的地址

1.1 命令補全:

tab鍵,它可以幫你補全一個命令,也可以幫你補全一個路徑或者一個文件名。

連續按兩次tab鍵,系統則會把所有的指令或者文件名都列出來

技術分享圖片

1.2 參數補全,安裝bash-completion ,命令:yum install -y bash-completion

需要重啟一下才管用 reboot

1.3 alias別名

通過alias把一個常用的並且很長的指令別名一個簡潔易記的指令。如果不想用了,還可以用unalias解除別名功能。直接敲alias會看到目前系統預設的alias.

技術分享圖片

1.4 alias目前系統預設的別名在:.bashrc

技術分享圖片

其他alias自定義別名,存放於 /etc/profile.d/

8.4 通配符

一、通配符:

1ls *.txt //表示查找.txt通配文件

2ls ?.txt //表示一個任意的字符

3ls [0-9].txt //列出滿足條件範圍內的文件

4ls {1,2}.txt //用花括號列出你需要的文件

1.1 1.2bash下,可以使用 * 來匹配零個或多個字符,而用 ? 匹配一個字符

技術分享圖片

1.3 也可以使用[0-9a-zA-Z]範圍來匹配,如 : ls [1-3].txt

1.4 用花括號列出你需要的文件 ,ls {1,2345}.txt

技術分享圖片

8.5 輸入輸出重定向

輸入重定向用於改變命令的輸入輸出重定向用於改變命令的輸出

輸出重定向更為常用,它經常用於將命令的結果輸入到文件中,而不是屏幕上。

輸入重定向的命令是<,

輸出重定向的命令是> ,

追加重定向 >> ,

2>是錯誤重定向,

2>>錯誤追加重定向

>+2> 等於 &>)

一、 輸入輸出重定向,試驗

1cat 1.txt >2.txt //>它會把命令產生的正確信息輸出到指定文件裏去,刪除之前文件內容重寫。

2cat 1.txt >> 2.txt //>>把前面命令輸出內容重定向追加到後面命令裏去,不刪除舊的。

3ls aaa.txt 2> err //它會把命令產生的錯誤信息輸出到指定文件裏去

4ls aaa.txt 2>> err // 錯誤信息輸出追加重定向

5wc -l < 1.txt //查看一個文件的行數

1.1 輸出重定向> ,把前面的命令追加到後面的文件裏去,原內容刪除重寫

技術分享圖片

1.2 追加重定向 >>把前面命令輸出內容重定向追加到後面命令裏去,不刪除舊的。

技術分享圖片

1.3 2>是錯誤重定向,它會把命令產生的錯誤信息輸出到指定文件裏去,沒有產生錯誤就無效

技術分享圖片

1.4 2>>錯誤追加重定向,追加一次錯誤信息到文件,&>正確定向和錯誤 定向到一個文件

技術分享圖片

1.5 輸入重定向的命令是<,左邊必須是命令 ,不可以文件到文件 <

以下是查看文件行數是幾行

技術分享圖片



4月20日