以前寫過C++代碼,一直沒有系統的學習過shell的文法,每次寫腳本的時候都是用到什麼就查什麼,很不友善,是以決定在此全面的學習一下shell。
------------------------------------------------------------------------------------------------------
常用指令行下的快捷鍵:
ctrl d 退出目前shell 同exit
bash 打開一個子shell
ctrl a 光标移動到本行最前
ctrl e 光标移動到本行最後
ctrl z 指令轉到背景
ctrl s 暫停螢幕輸出
ctrl q 恢複螢幕輸出
ctrl k 從光标所在處删除到結尾
ctrl u 删除整行
esc f 光标移到下一個單詞的開始處
esc b 光标移到目前單詞的開始處
-----------------------------------------------------------------------------------------------------
檢視終端支援哪些shell類型:cat /etc/shells
檢視目前使用的bash類型:which bash
locale -a 檢視支援的語言
locale -a | grep zh 檢視中文語言的支援
将英文界面改成中文:
1.安裝中文包 必須用yum安裝
2.vim /etc/sysconfig/i18n 或者 system-config-language(要有圖形界面)
----------------------------------------------------------------------------------------
bash環境設定檔案:
全局
/etc/profile 為系統的每個使用者設定環境資訊,當使用者第一次登陸時,該檔案被執行。并從/etc/profile.d目錄的配置檔案中搜尋shell的設定。
/etc/bashrc 每個運作bash shell的使用者都會執行此檔案,當bash shell被打開時,該檔案被讀取。繼承/etc/profile檔案中的變量。
使用者
~/.bashrc 包含專用于你的bash shell的bash資訊,當登陸時以及每次打開新的shell時,該檔案被讀取。互動式non-login方式進入bash運作。
~/.bash_profile 互動式login的方式進入bash運作。通常會先執行調用 ~/.bashrc檔案。
Bash其他設定檔案:
~/.bash_logout 每次退出bash shell時執行
~/.bash_history 記錄bash shell的曆史記錄,及時執行了history -c後檔案中也仍然存在
/etc/profile.d/*.sh
環境變量
檢視環境變量: env
檢視環境變量和局部變量:set
設定執行腳本的環境變量:
PATH=$PATH:/tmp 在原來路徑的基礎上加上目錄就可以 這樣執行tmp下的腳本的時候 就不用指定絕對路徑或者切換到tmp下就可以執行腳本
set常見用法:
-f 使路徑名替換(比對)無效
-n 讀取指令,但不執行(多用于腳本文法檢查)
-o option
emacs 使用emacs風格指令行的快捷鍵
ignoreeof當EOF(ctrl+d)被讀取時,不退出shell
vi 使用vi風格指令行的快捷鍵
-v 在指令被讀取時,列印指令(用于調試腳本)
-x 在替換被應用之後列印指令(用于調試腳本和檢查shell替換)
-C 不允許shell在重定向中損壞檔案
系統變量都是在使用者登入的時候建立的
登入shell 環境變量都是存在于以下幾個檔案中的
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
即 su - 使用者
每個使用者的家目錄裡面都有一個logout檔案在退出bash shell時執行
非登入shell
~/.bash_profile --> ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
即 su 使用者
别名
定義别名:alias la="ls -a" 這樣在終端輸入la就相當于輸入ls -a
取消别名:unalias la
hash 用來顯示,添加和清除哈希表
hash table是shell在解釋指令的時候首先會查找的對象,當指令表不在hash table中時,才會去PATH中設定的路徑尋找指令,然後加以解釋執行。同時也會将之放入hash table中,當下次執行同名指令時。不需要尋找PATH,shell以此來提高指令的執行效率。
hash指令常用參數:
-l 顯示記憶的指令
-r 清除記憶的指令包括路徑
-p filename 向哈希表中增加内容
-d filename 從哈希表中删除内容
-t command 顯示指定指令的完整路徑
在啟動服務的時候/etc/init.d/sshd start 太過于麻煩 可以hash -p /etc/init.d/sshd bbb
這樣啟動的時候就可以bbb start hash的優先級是最高的(高于别名)
優先級:hash --> 别名 --> 關鍵字