乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux Shell基礎(chǔ)

       qweertt4747 2017-02-07

      一 概述
      1 Shell是一個命令行解釋器,它為用戶提供了一個向內(nèi)核發(fā)送請求以便運行程序的界面系統(tǒng)級程序
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      Shell還是一個功能強大的編程語言,易編寫,易調(diào)試,靈活性較強,Shell是解釋執(zhí)行的腳本語言,在Shell中可以直接調(diào)用Linux系統(tǒng)命令

      2 Shell的分類
      Bourne Shell:從1979年起Unix就開始使用Bourne Shell,Bourne Shell的主文件名為sh
      C Shell :主要在BSD版的Unix系統(tǒng)中使用,其語法和C語言相似而得名
      Shell的兩種主要語法類型有Bourne 和C ,這兩種語法彼此不兼容,Bourne家族主要包括sh,ksh,Bash,psh,zsh,C家族主要包括csh,tcsh
      Bash與sh兼容,現(xiàn)在使用的Linux就是使用Bash作為用戶的基本Shell
      Linux支持的Shell我們可以通過查看/etc/shells文件進行查看
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      我們也可以直接切換shell,比如切換成sh
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      再切回來
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      二 腳本執(zhí)行方式
      echo 輸出命令
      echo 選項 輸出內(nèi)容
      -e 支持反斜杠控制的字符轉(zhuǎn)換
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      我們來看幾個例子
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      \b代表刪除左側(cè)字符
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      \t是制表符,也就是Tab鍵
      \n是換行符
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      \xhh 按照十六進制ASCII碼表輸出字符,其中hh是兩位十六進制數(shù)
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      輸出顏色
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      好了,下面來寫我們的第一個shell腳本
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      注意第一行不是注釋,代表我接下來寫的是shell腳本
      然后我們執(zhí)行
      有兩種方式,一種是先給該文件賦予執(zhí)行權(quán)限
      chmod 755 hello.sh
      然后再執(zhí)行./hello.sh
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      另外一種直接bash hello.sh
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      三 Bash的基本功能
      1 歷史命令與命令補全
      history 這個命令可以查看用戶敲的歷史命令,注意,這里只是緩存
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      -w 把緩存中的歷史命令寫入歷史命令保存文件~/.bash_history
      -c 會清楚歷史記錄

      歷史命令默認會是1000條,可以在/etc/profile中進行修改
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      歷史命令的調(diào)用
      使用上,下箭頭調(diào)用以前的歷史命令
      使用!n執(zhí)行第n條歷史命令
      使用!!執(zhí)行上一條歷史命令
      使用!字符串,執(zhí)行最后一條以該字符串開頭的命令

      在Bash中,命令與文件補全是非常方便與常用的功能,我們只需要在輸入命令或文件時,按TAB鍵就會自動補全,如果遇到多個文件匹配,按兩次TAB鍵,所有匹配的就都會顯示出來

      2 命令別名與常用快捷鍵
      我們可以用alias查看系統(tǒng)中已經(jīng)設(shè)定了哪些別名
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      可以看到這里都是系統(tǒng)已經(jīng)設(shè)置好的別名,我們平時在執(zhí)行cp的時候其實執(zhí)行的是cp -i
      執(zhí)行l(wèi)l的時候執(zhí)行的是ls -l –color=auto
      那么我們可以用alias 別名=’原命令’ 來設(shè)置別名
      比如我想設(shè)置vim的別名為vi,以后我打vi命令的時候就其實就是用的vim
      alias vi=’vim’
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      我們可以看到設(shè)置成功了
      命令執(zhí)行時的順序
      第一順位執(zhí)行用絕對路徑或相對路徑執(zhí)行的命令
      第二順位執(zhí)行別名
      第三順位執(zhí)行Bash的內(nèi)部命令
      第四順位執(zhí)行按照PATH環(huán)設(shè),執(zhí), PATH的環(huán)境變量是什么呢,我們用echo 看一下
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      這些路徑就是環(huán)境變量,有點類似windows的環(huán)境變量
      刪除別名用unalias 別名 很簡單
      我們用命令設(shè)置的別名,如果重啟就會失效,那么如果想讓別名永久生效,需要修改/root/.bashrc文件
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      Bash常用快捷鍵
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      藍色的是一般用的比較多的,需要掌握

      3 輸入輸出重定向
      標(biāo)準(zhǔn)輸入輸出
      設(shè)備 設(shè)備文件名 文件描述符 類型
      鍵盤 /dev/stdin 0 標(biāo)準(zhǔn)輸入
      顯示器 /dev/stdout 1 標(biāo)準(zhǔn)輸出
      顯示器 /dev/stderr 2 標(biāo)準(zhǔn)錯誤輸出

      輸出重定向
      類型 符號 作用
      標(biāo)準(zhǔn)輸出重定向 命令 > 文件 以覆蓋的方式把命令的正確輸出輸出到指定文件或設(shè)備中
      命令 >> 文件 以追加的方式把命令的正確輸出輸出到指定文件或設(shè)備中
      舉個例子 ls > abc 把ls的輸出結(jié)果保存到abc這個文件中
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      date >> abc 把date的輸出結(jié)果追加到abc這個文件中
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      標(biāo)準(zhǔn)錯誤輸出重定向 錯誤命令 2> 文件 以覆蓋的方式把命令的錯誤輸出輸出到指定文件或設(shè)備中
      錯誤命令 2>> 文件 以追加的方式把命令的錯誤輸出輸出到指定文件或設(shè)備中
      lsd 2> bcd
      lsd 2>> bcd
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      在實際使用中,上面兩張形式用的比較少,因為我要是都知道這個命令是錯的了,還打印輸出到文件干嘛,直接改了就行了,所以實際應(yīng)用中,下面的情況用的比較多

      正確輸出和錯誤輸出同時保存
      命令 > 文件 2>&1 以覆蓋的方式把命令的正確輸出和錯誤輸出同時保存到文件中
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      也就是輸出重定向到文件中的時候,不管命令正確還是錯誤輸出都保存
      命令 >> 文件 2>&1 以追加的方式把命令的正確輸出和錯誤輸出同時保存到文件中
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      命令 &> 文件 等同于命令 > 文件 2>&1
      命令 &>> 文件 等同于命令 >> 文件 2>&1
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      命令 >>文件1 2>>文件2 把正確的輸出追加到文件1中,把錯誤的輸出追加到文件2中

      輸入重定向
      命令 < 文件 把文件作為命令的輸入
      我們先說下wc命令
      這個命令的意思是統(tǒng)計字節(jié)數(shù),單詞數(shù),行數(shù)
      -c 統(tǒng)計字節(jié)數(shù) -w 統(tǒng)計單詞數(shù) -l統(tǒng)計行數(shù) 什么都不加就都統(tǒng)計
      wc命令執(zhí)行后,隨便輸入,以Ctrl+Shift +D結(jié)束
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      3行,4個單詞,17個字節(jié)
      我們可以用wc < abc來統(tǒng)計abc文件中的行數(shù),單詞數(shù),字節(jié)數(shù)
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      命令<<標(biāo)示符
      。。。
      標(biāo)示符
      把標(biāo)示符之間內(nèi)容作為輸入
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      4 多命令順序執(zhí)行與管道符
      命令1;命令2 多個命令順序執(zhí)行,命令之間沒有任何邏輯關(guān)系
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      命令1&&命令2 邏輯與 當(dāng)命令1正確執(zhí)行,命令2才會執(zhí)行
      當(dāng)命令1執(zhí)行不正確,命令2不會執(zhí)行
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      命令1 || 命令2 邏輯或 當(dāng)命令1執(zhí)行不正確,命令2才會執(zhí)行
      當(dāng)命令1執(zhí)行正確,命令2不會執(zhí)行
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      來看一個經(jīng)常用到的例子
      命令&& echo yes || echo no 這樣就可以判斷命令是否正確執(zhí)行
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      管道符
      命令1 | 命令2
      命令1的正確輸出作為命令2的操作對象
      ll -a /etc/ | more
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      ll -a /etc/ | grep “abrt”
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      grep 選項 “搜索內(nèi)容” 文件名
      -i 忽略大小寫
      -n 輸出行號
      -v 反向查找
      –color=auto 搜索出的關(guān)鍵字用顏色顯示

      5 通配符和其他特殊符號
      ? 匹配一個任意字符
      * 匹配0個或多個任意字符
      []匹配括號中的任意一個字符 [abc]代表或者是a,或者是b,或者是c
      [-]匹配括號中的任意一個字符,-代表范圍 [a-z] a到z的任意一個字符
      [^] 邏輯非 [^0-9]匹配一個不是數(shù)字的字符
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      其他特殊符號
      ” 單引號 在單引號中的所有特殊字符,都沒有特殊含義
      “”雙引號 在雙引號中的特殊字符,沒有特殊含義,但是”\”,調(diào),轉(zhuǎn) () 用來引用系統(tǒng)變量
      “反引號 反引號括起來的內(nèi)容是系統(tǒng)命令,在Bash中會先執(zhí)行它,作用和()使 (),因為反引號容易看錯
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫在shell腳本中代表注釋
      $調(diào)用變量的值
      \轉(zhuǎn)義字符,跟在\之后的特殊符號將失去特殊意義

      先來看看單引號和雙引號的區(qū)別
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫
      $name 是調(diào)用name變量的值,但是用單引號括起來就失去這個意義
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      反引號于$()
      Linux下GCC編譯過程及靜態(tài)鏈接庫和動態(tài)鏈接庫

      好了,Linux Shell基礎(chǔ),腳本執(zhí)行方式和Bash基本功能就總結(jié)到這里,如有問題,歡迎指正,謝謝。

      本文永久更新鏈接地址http://www./Linux/2016-11/137252.htm

      linux

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多