bash基礎(chǔ)特性

Linux系統(tǒng)上的文件類型:

  1. -:常規(guī)文件,即f
  2. d:directory虚青,目錄文件
  3. b:block device它呀,塊設(shè)備文件[已block為單位,支持隨機(jī)訪問]
  4. c:character device, 字符設(shè)備[已character纵穿,支持線性訪問]
    major number: 主設(shè)備號(hào)下隧,標(biāo)識(shí)設(shè)備類型,進(jìn)而確定要加載的驅(qū)動(dòng)程序
    minor number: 次設(shè)備好谓媒,標(biāo)識(shí)同一種類型中的不同設(shè)備
    早期設(shè)備號(hào)是8位二進(jìn)制(0-255)表示淆院,現(xiàn)在好像是16位
  5. symbolic link:符號(hào)鏈接文件
  6. p:pipe命名管道,
  7. s:socket 套接字文件

基本命令:
??命令類型:
????外部命令:文件系統(tǒng)有與之對(duì)應(yīng)的二進(jìn)制執(zhí)行程序
????內(nèi)部命令: 一般是shell自帶
????type COMMAND:
??????內(nèi)部:buildin
??????外部:顯示為命令文件路徑篙耗;
????????注意:命令還可以有別名迫筑,別名可以與原名相同,此時(shí)原名被隱藏宗弯。此時(shí)如果需要運(yùn)行原命令脯燃,則使用\COMMAND
????命令別名:
??????獲取所有命令的別名:
????????alias
??????定義別名:
????????alias NAME='COMMAND'
????????注意:進(jìn)對(duì)當(dāng)前shell有效
??????撤銷別名:
????????unalias NAME
????which命令:
??????顯示命令絕對(duì)路徑
??????which --skip-alias 忽略別名
????whereis命令:
??????顯示命令地址,man手冊地址
??????whereis -b 僅搜索二進(jìn)制程序路徑
??????whereis -m 僅搜索使用手冊文件路徑
????who命令:
??????顯示誰在登錄
??????who -b 系統(tǒng)此次啟動(dòng)的時(shí)間
??????who -r 運(yùn)行級(jí)別
????w命令:
??????增強(qiáng)版的who命令


bash的基礎(chǔ)特性

  1. 命令歷史:shell進(jìn)程會(huì)在會(huì)話中保存此```
    本地初始化的項(xiàng)目 與 github 版本不一致, 導(dǎo)致無法提交

$ git pull origin master

  • branch master -> FETCH_HEAD
    fatal: 拒絕合并無關(guān)的歷史
    解決方法

在pull 時(shí)候, 添加–allow-unrelated-histories參數(shù) 即可.

$ git pull origin master --allow-unrelated-histories
來自 https://github.com/itaken/python-login-demo

  • branch master -> FETCH_HEAD
    Merge made by the 'recursive' strategy.
    LICENSE | 21 +++++++++++++++++++++
    1 file changed, 21 insertions(+)
    create mode 100644 LICENSE
    -  history  歷史命令列表
    - 定制history功能蒙保,可通過環(huán)境變量實(shí)現(xiàn)
        - HISTSIZE : shell 進(jìn)程可保留的命令歷史的條數(shù)
        - HISTFILE : 保留歷史記錄的文件
        - HISTFILESIZE : 文件的大小
    -  命令語法
        - history [-c] [-d 偏移量] [n] 
        -  history -anrw [文件名] 
        - history -ps 參數(shù) [參數(shù)...]
        - -c: 清空命令歷史
        - -d offset: 刪除指定歷史命令
        - -r: 從文件讀取歷史命令至歷史列表中
        - -w: 把歷史列表中的命令追加至歷史文件中
        - history n:顯示最近的n條命令
    - 使用歷史列表中的命令
        - !n : 使用歷史列表中的第n條命令(中間沒有空格)
        - !! : 在一次執(zhí)行上一次命令
        - **!STRING** : 再一次執(zhí)行命令列表中最近一個(gè)與STRING開頭的命令
        - **注意命令的重復(fù)執(zhí)行有時(shí)需要冪等性支持**
    - 調(diào)用上一條命令最后一個(gè)參數(shù)
        - **esc+.** 
        - **!$**
        - **alt+.**
    - 控制命令歷史記錄的方式:
        - HISTSCONTROL : 
            - ignoredups: 忽略重復(fù)的命令
            - ignorespace: 忽略已空白字符的命令
            - ignoreboth: 以上兩者同時(shí)生效
    - 修改環(huán)境變量的值
        - NAME='value' 該方式僅對(duì)當(dāng)前進(jìn)程有效
2. 命令補(bǔ)全
3. 目錄管理命令
    - mkdir: make dir
        - -p : 自動(dòng)按需創(chuàng)建父目錄
        - -v :   顯示詳細(xì)創(chuàng)建過程
        - -m : 設(shè)置權(quán)限
    - rmdir : remove empty directories
        - -p : 刪除某目錄后辕棚,如果其父目錄為空則一并刪除
        - -v : 顯示詳細(xì)過程
    - 問題1:如何創(chuàng)建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a ,tmp/x/y1/b
    - 問題2:如何創(chuàng)建 a_c, a_d, b_c, b_d;
---
###bash 基礎(chǔ)特性:命令行展開
- ~ : 自動(dòng)展開為用戶的家目錄,或制定用戶的家目錄
- {} : 可承載已逗號(hào)分割的路徑列表邓厕,并能夠展開為多個(gè)路徑逝嚎,花括號(hào)還可以嵌套
    - 例如: /tmp/{a,b}    相當(dāng)于 /tmp/a       /tmp/b
- 問題1: mkdir -pv /tmp/x/{y1/{a,b},y2}
- 問題2:mkdir -pv {a,b}_{c,d}
- 問題3:創(chuàng)建如下目錄結(jié)構(gòu):
    - /tmp/mysysroot/
        - bin
        - sbin
        - etc
            - sysconfig
                - network-scripts
        - usr
            - bin
            - sbin
            - local
                - bin
                - sbin
                - etc
                - lib
            - lib
            - lib64
        - var
            - cache
            - log
            - run

mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
tree /tmp/mysysroot

tree : 顯示目錄樹狀結(jié)構(gòu)
---
bash 基礎(chǔ)特性:命令的執(zhí)行狀態(tài)結(jié)果
- 命令執(zhí)行的狀態(tài)結(jié)果
    - bash通過狀態(tài)返回值來輸出此結(jié)果
        - 成功: 0
        - 失敗: 1-255
    - 命令完成之后,其狀態(tài)返回值保存于bash的特殊變量$?中详恼;  
- 命令正常執(zhí)行時(shí)补君,有的還會(huì)有命令返回值
    - 根據(jù)命令及功能不同,結(jié)果各不相同
- 引用命令的執(zhí)行結(jié)果
    - $(COMMAND)
    - 或 `COMMAND`
---
### bash 基礎(chǔ)特性:引用
- 強(qiáng)引用: ''   ,其內(nèi)部的任何子串都直接顯示
- 弱引用:""  昧互, 進(jìn)行變量替換
- 命令引用: ``或$()
---
### bash 基礎(chǔ)特性:快捷鍵
- ctrl + a: 跳轉(zhuǎn)至命令行首部
- ctrl + e: 跳轉(zhuǎn)至命令行尾部
- ctrl + u: 刪除命令行首至光標(biāo)處所有內(nèi)容
- ctrl + k: 刪除命令行尾至光標(biāo)出所有內(nèi)容
- ctrl + l : 清屏
---
### bash基礎(chǔ)特性 globing: 文件名通配
- 一種匹配模式 : 元字符
    - * : 匹配任意長度的任意字串
    - ? : 匹配
    - [] : 匹配指定范圍內(nèi)的任意單個(gè)字符
        - 有幾種特殊格式
            - [a-z] , [A-Z]:  默認(rèn)不區(qū)分大小寫
            - [0-9] : 所有數(shù)字
            - [a-z0-9] : 所有數(shù)字和字母
            - [[:upper:]] : 所有大寫字母    **外城中括號(hào)表示范圍挽铁,與上面三個(gè)例子中括號(hào)意思一致**
            - [[:lower:]] : 所有小寫字母
            - [[:alpha:]] : 所有字母
            - [[:digit:]] : 所有數(shù)字
            - [[:alpha:][:digit:]] : 所有數(shù)字和所有字母
            - [[:alnum:]] : 所有數(shù)字和所有字母
            - [[:space:]] : 所有空白字符
            - [[:punct:]] : 所有標(biāo)點(diǎn)符號(hào)
    - [^] : 匹配指定范圍外的任意單個(gè)字符
        - 例如: [^[:upper:]] : 匹配大寫字母之外的所有字符;[^0-9] : 匹配所有數(shù)字之外的所有字符敞掘、 [^[:alnum:]] : 匹配所有非正常字符的任意字符
    - 練習(xí)
        1. 顯示/var 目錄下所有l(wèi)開頭叽掘,已一個(gè)小寫字母結(jié)尾,且中間出現(xiàn)一位任意字符的文件或目錄
        2. 顯示/etc目錄下已任意一位數(shù)字開頭玖雁,且已非數(shù)字結(jié)尾的文件或目錄
        3. 顯示/etc目錄下已非字母開頭更扁,后面根一個(gè)字母及其它任意長度任意字符的文件或目錄
        4. 復(fù)制/etc目錄下所有已m開頭已非數(shù)字結(jié)尾的文件或目錄,至/tmp/xiang目錄
        5. 復(fù)制/usr/share/man 目錄下所有已man開頭赫冬,后跟一個(gè)數(shù)字結(jié)尾的文件或目錄至/tmp/man目錄下
        6. 復(fù)制/etc目錄下所有已.conf結(jié)尾且已m浓镜、n、r劲厌、p開頭的文件或目錄至/tmp/conf.d/目錄下
        ---
        1. ls -d /var/l?[[:lower:]]
        2. ls /etc/[0-9]*[^0-9] 或者 ls /etc/[0-9]*[^[digit]]
        3. ls /etc/[^[:alpha:]][[:alpha:]]* -d  或 ls /etc/[^a-z][a-z]*
        4. cp /etc/m*[^[:digit:]] -r /tmp/benbenxiang
        5. cp /usr/share/man/man[0-9] -r /tmp/benbenxiang/
        6. cp /etc/[mnrp]*.conf -r /tmp/benbenxiang/conf.d/
    ---
### bash基礎(chǔ)特性:IO重定向及管道
程序:指令+數(shù)據(jù)
可用于輸入的設(shè)備:
    文件竖哩、鍵盤設(shè)備、網(wǎng)卡等
可用于輸出的設(shè)備:
    文件系統(tǒng)上的常規(guī)文件脊僚、網(wǎng)卡等。
程序有三種數(shù)據(jù)流:
&emsp;&emsp;&emsp;&emsp;輸入的數(shù)據(jù)流: <-- 標(biāo)準(zhǔn)輸入(stdin), 默認(rèn)情況是鍵盤
&emsp;&emsp;&emsp;&emsp;輸出數(shù)據(jù)流: --> 標(biāo)準(zhǔn)輸出(stdout),默認(rèn)顯示器
&emsp;&emsp;&emsp;&emsp;錯(cuò)誤輸出流: --> 錯(cuò)誤輸出(stderr),默認(rèn)顯示器

fd file descriptor: 文件描述符
&emsp;&emsp;&emsp;&emsp;標(biāo)準(zhǔn)輸入:0
&emsp;&emsp;&emsp;&emsp;標(biāo)準(zhǔn)輸出:1
&emsp;&emsp;&emsp;&emsp;錯(cuò)誤輸出:2

**IO重定向**
&emsp;&emsp;&emsp;&emsp;輸出重定向:>  
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;  特性:覆蓋輸出重定向
&emsp;&emsp;&emsp;&emsp;輸出重定向:>>
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;特性:追加輸出
&emsp;&emsp;&emsp;&emsp;set -C : 僅對(duì)當(dāng)前進(jìn)程有效
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;禁止覆蓋輸出重定向至已存在的文件
&emsp;&emsp;&emsp;&emsp; 強(qiáng)行覆蓋輸出: >|
&emsp;&emsp;&emsp;&emsp;set +C : 關(guān)閉上述特性
&emsp;&emsp;&emsp;&emsp;錯(cuò)誤輸出重定向(覆蓋):2> 
&emsp;&emsp;&emsp;&emsp;錯(cuò)誤輸出重定向(追加):2>> 

&emsp;&emsp;&emsp;&emsp;合并正常輸出流和錯(cuò)誤輸出流
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (1):&> (覆蓋)或 &>> (追加)
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; (2)  :COMMAND > /path/somefile 2>&1
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;:COMMAND >> /path/somefile 2>&1

&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;特殊設(shè)備: /dev/null   :數(shù)據(jù)黑洞

&emsp;&emsp;&emsp;&emsp;輸入重定向:< 
&emsp;&emsp;&emsp;&emsp;tr 命令
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;tr [option]... SET1 [SET2]
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;吧輸入的數(shù)據(jù)當(dāng)中的自負(fù),凡是在SET1定義范圍內(nèi)出現(xiàn)的辽幌,統(tǒng)統(tǒng)對(duì)位轉(zhuǎn)換為SET2出現(xiàn)的字符增淹。
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;用法1:
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;tr SET1 SET2 < /PATH/FROM/SOMEFILE
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;用法2:
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;tr -d SET1 < /PATH/FROM/SOMEFILE
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;**注意: 不修改源文件**
&emsp;&emsp;&emsp;&emsp; << : Here Document (此處創(chuàng)建文檔)
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;cat << EOF ... EOF
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;cat > /PATH/TO/SOMEFILE << EOF ... EOF

&emsp;&emsp;&emsp;&emsp;管道:  鏈接程序,實(shí)現(xiàn)將前一個(gè)命令的輸出直接定向后一個(gè)程序當(dāng)作輸入數(shù)據(jù)流
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; COMMAND | COMMAND2 | COMMAND3 | ...

&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;tee命令:COMMAND | tee /PATH/TO/SOMEFILE | tr 'a-z' 'A-Z'
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;tee將輸入流輸出一份到文件乌企,并且又輸出一份到管道虑润。

&emsp;&emsp;&emsp;&emsp;練習(xí)1: 把/etc/passwd文件的前6行的信息轉(zhuǎn)換為大寫字母并輸出
&emsp;&emsp;&emsp;&emsp; head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
**命令總結(jié):tr tee**












?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市加酵,隨后出現(xiàn)的幾起案子拳喻,更是在濱河造成了極大的恐慌,老刑警劉巖猪腕,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗澈,死亡現(xiàn)場離奇詭異,居然都是意外死亡陋葡,警方通過查閱死者的電腦和手機(jī)亚亲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腐缤,“玉大人捌归,你說我怎么就攤上這事×朐粒” “怎么了惜索?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剃浇。 經(jīng)常有香客問我巾兆,道長,這世上最難降的妖魔是什么偿渡? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任臼寄,我火速辦了婚禮,結(jié)果婚禮上溜宽,老公的妹妹穿的比我還像新娘吉拳。我一直安慰自己,他們只是感情好适揉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布留攒。 她就那樣靜靜地躺著,像睡著了一般嫉嘀。 火紅的嫁衣襯著肌膚如雪炼邀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天剪侮,我揣著相機(jī)與錄音拭宁,去河邊找鬼洛退。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杰标,可吹牛的內(nèi)容都是我干的兵怯。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼腔剂,長吁一口氣:“原來是場噩夢啊……” “哼媒区!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起掸犬,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤袜漩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后湾碎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宙攻,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胜茧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粘优。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呻顽,死狀恐怖雹顺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情廊遍,我是刑警寧澤嬉愧,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站喉前,受9級(jí)特大地震影響没酣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卵迂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一裕便、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧见咒,春花似錦偿衰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宝当,卻和暖如春视事,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庆揩。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工俐东, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跌穗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓虏辫,卻偏偏與公主長得像瞻离,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乒裆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容