天天看點

shell破冰

以前寫過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 --> 别名 --> 關鍵字