<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jasmine214--love

    只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
    posts - 731, comments - 60, trackbacks - 0, articles - 0

    shell 基礎知識整理

    Posted on 2010-11-27 09:45 幻海藍夢 閱讀(432) 評論(0)  編輯  收藏 所屬分類: Linux

    1.     環境變量,相當于全局變量。

    定義變量;打印變量; 將自定義變量轉成環境變量;顯示所有環境變量;取消某個or多個環境變量or 本地變量;一個命令把自定義變量轉成環境變量;顯式所有本地變量;本地變量設成只讀,即不可寫; env 結合grep的管道命令用來顯示希望查看的某個環境變量。

    $ name=kiki

    $ echo $(name)  or   $ echo ${age}  or  $echo $name

    $ export name

    $ env

    $ unset name  age

    $ export name="kiki"

    $ set

    $ readonly age="83"

    $ env | grep HOME

     

    2.     環境變量配置文件,包含/etc/profile~/.bashrc文件。

    1/etc/profile:在登錄時,操作系統定制用戶環境時使用的第一個文件,此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。

    2~/.bashrc:該文件包含專用于你的bash shellbash信息,當登錄時以及每次打開新的shell,該該文件被讀取。

    3)最常用的環境變量PATH

    比如:修改環境變量,把交叉編譯器的路徑加入到PATH。在linux系統下,如果你下載并安裝了應用程序,很有可能在鍵入它的名稱的時候出現“command not found”的提示內容。如果每次都到安裝目標文件夾內找到可執行文件來進行操作就太繁瑣了,這就涉及到環境變量PATH的設置問題,而PATH的設置也是LINUX下定制環境變量的一個組成部分。

        $ echo $PATH

    /opt/fp_le/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/wangzhonghua/bin

    $ echo $PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

    $ echo $PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

     

    3.     /etc/profile文件的shell思想

    1)     特殊變量:$0 腳本名;$n  給腳本傳遞的參數;$?  命令的執行結果;

    2)     比較控制符:真假[-eq  ]   –eq,-neq, -ge,-gt,-le,-lt; 可以比較某個變量和某個值[ !=  ][ = ];也可以比較是否是目錄,還可以比較文件:空串[ -z ],and[ -a ],執行[  -x   ]某個文件可執行-x, 是否link [ -l ];是否只讀[ -r ];(1. w是否是空串,w是否可執行。2.-f 表示正規文件,-w表示可寫。

    3)     當前用戶的識別號:id –ru (real user);當前用戶的姓名 id –un; 當前用戶的名字:hostname;當前用戶是誰及何時登陸的:who am i

    If條件表達式與 [  ]&& 有相同的功能,但是&&只能達到一半的條件。

    If [    ]; then

    else

    fi

    4)     shell的函數: 函數名(){},不需要提供參數,在執行函數的時候提供參數即可。

    5)     管道| 與重定向 有追加和覆蓋兩種 >,>> :把一個命令的輸出作為另一個命令的輸入。重定向有標準輸出和標準錯誤輸出兩種。

    wiki@wiki-desktop:/home/xufuli/backup/svnsync$ ll >kiki

    -bash: ll:找不到命令

     

    $ ll >kiki 2>&1

     

    6)     轉義序列: \n換行;\t調一個tab鍵。(),[]需要轉義的。

    ~$ last | awk '{print $1 "\n" $3}'

        7)定制shell環境

            $ shopt -s cdspell,自動糾正cd 拼寫錯誤。

            Checkwinsizebash在每個命令后檢查窗口大小,如果有必要,就更新LINESCOLUMNS的值;

            Histappend;當shell退出時,歷史清單將添加到以HISTFILE變量的值命名的文件中,而不是覆蓋文件

     

        8eval 替換命令:然而當在它前面放上eval時,其結果是shell在執行命令行之前掃描它兩次。

        9) alias :命令別名,

            $ alias ll='ls -al'

        8linux特殊文件:/dev/null, linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。這一點非常有用,當我們不需要回顯程序的 所有信息時,就可以將輸出重定向到/dev/null。用來使終端不顯示任何信息。

        9case  條件語句的用法 以及腳本執行的追蹤 –n檢查語法問題;-vshow出腳本再執行;-x 跟蹤執行每一步:

            #!/bin/bash

      2

      3 case  $1 in

      4 "spring") echo "in spring";;

      5 "summer") echo "in summer";;

      6 "winter") echo "in winter";;

      7 esac

    7)     awk編程的了解,awk是一種編程語言,用于在linux/unix下對文本和數據進行處理。數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk的處理文本和數據的方式是這樣的,它逐行掃描文件,從第一行到最后一行,尋找匹配的特定模式的行,并在 這些行上進行你想要的操作。如果沒有指定處理動作,則把匹配的行顯示到標準輸出(屏幕),如果沒有指定模式,則所有被操作所指定的行都被處理。awk分別 代表其作者姓氏的第一個字母。因為它的作者是三個人,分別是Alfred AhoBrian KernighanPeter Weinberger

    $ awk '{print $2;}' testfile 表示打印每一行的第二列,自動變量$1$2分別表示第 一列、第二列等,類似于Shell腳本的位置參數,而$0表示整個當前行。

     

     

    4.     變量整數聲明

    $ declare -i sum=100+50

    $ echo $sum

     

    5.     過濾器

    1)     管道過濾器:編譯器就是基于管道過濾器模式設計的:

    輸入:源程序
    預處理:負責宏展開和去掉注釋等工作。
    編譯:進行詞法分析、語法分析、語義分析、代碼優化和代碼產生。
    匯編:負責把匯編代碼轉換成機器指令,生成目標文件。
    鏈接:負責把多個目標文件、靜態庫和共享庫鏈接成可執行文件/共享庫。
    輸出:可執行文件/共享庫。

     

    2)     復合過濾器







    sed 是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為模式空間pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。

    $ sed '2,$d' example    刪除example文件的第二行到末尾所有行

    $ sed 's/test/mytest/g' example 文件中所有都替換在整行范圍內把test替換為mytest。如果沒有g標記,則只有每行第一個匹配的test被替換成mytest

    $ sed -e '1,5d' -e 's/test/check/' example      (-e)選項允許在同一行里執行多條命令。如例子所示,第一條命令刪除15行,第二條命令用check替換test。命令的執 行順序對結果有影響。如果兩個命令都是替換命令,那么第一個替換命令將影響第二個替換命令的結果。

    @sed -i 's/\[SVN_VER\]/$(SVN_REVISION)/g'  $(ONU_INSTALL)/version 在指定文件中當前行前插入一行,此行的內容用某某替換某某。

       

    6.     數組,set顯示的所有變量中是這樣的,season=([1]="spring" [2]="summer") ;打印數組變量值

    $ season[1]=spring

    $ season[2]=summer

    $ echo ${season[1]}

     

    7.     history 歷史命令,顯示最近100條命令;清除所有歷史命令;

    $ history 100

    $ history –c

     

    8.     打印輸出。轉義字符使能輸出-e,推薦用雙引號保持變量特性;

    $ echo -e  " kiki \n mina"

     

    9.     打包(音譯) tar文件 tarball

    @tar -jcvf $(ONU_FIRMWARE_BIN)-$(SVN_REVISION).$@.tar.bz2 $(ONU_FIRMWARE_BIN)-$(SVN_REVISION).$@.bin $(ONU_FIRMWARE_BIN)-$(SVN_REVISION).$@.bin.upf  j參數代表是以.tar.bz2作為擴展名

    @tar -cf $(ONU_FIRMWARE_BIN)-$(SVN_REVISION).$@.bin.tar $(ONU_FIRMWARE_BIN)-$(SVN_REVISION).$@.bin.upf Lib/images/App4315.tkf Lib/images/Pers4315.tkf  不用j,z,參數的代表是以.tar作為擴展名

     

     

    10.  shell 查找技巧:find xargs(參數替換) 用來刪除所有某種特點的文件。

    $ find -name "xufuli" | xargs rm –rf  通過管道將find的結果作為輸入,通過xargs作為rm命令的參數

    11.  更改權限;

    $chmod a+x  kiki.sh 

    12.  Makefilesed的使用

    @sed -i 's/\[SVN_VER\]/$(SVN_REVISION)/g'  $(ONU_INSTALL)/version 在指定文件中當前行前插入一行,此行的內容用某某替換某某。

     

    13.  文件測試功能file: $ file nullLog.sh用來測試文件是否是可執行文件。可執行文件是指二進制文件。

    14.   

    15.  Makefile中一些極好的shell命令

    $ sudo rm -rf country/           刪除父子所有文件夾目錄

    $ sudo cp -rf xufuli/  kiki/     完整拷貝目錄結構到另一個文件夾

    $ find -name "xufuli" | xargs rm –rf        在當前目錄查找名為xufuli的目錄和文件,通過管道將find的結果作為輸入,通過xargs作為rm命令的參數

    $chmod a+x  kiki.sh              更改權限

    $chmod 755 $(ROOTFS_PATH)/home/www/html_asb/cgi-bin/*

    @sed -i 's/\[SVN_VER\]/$(SVN_REVISION)/g'  $(ONU_INSTALL)/version 在指定文件中當前行前插入一行,此行的內容用某某替換某某。

     

    主站蜘蛛池模板: 日本免费在线观看| 久久不见久久见免费影院| 亚洲精品日韩中文字幕久久久| 免费毛片在线看片免费丝瓜视频| 国产亚洲视频在线观看| 亚洲av无码国产精品色午夜字幕| 中文字幕无码不卡免费视频| 日韩毛片在线免费观看| 99久久亚洲综合精品成人网| 尤物永久免费AV无码网站| 国产免费阿v精品视频网址| 亚洲偷偷自拍高清| 亚洲熟妇av一区二区三区| 无人在线观看完整免费版视频 | a级毛片免费全部播放无码| 亚洲人成毛片线播放| 久久久久亚洲av毛片大| 免费无码AV电影在线观看| jizz中国免费| 亚洲人成人网站18禁| 亚洲视频在线一区| 亚洲国产91精品无码专区| 2021国内精品久久久久精免费 | 在线观看人成视频免费| 日韩精品在线免费观看| 久久久久久亚洲av无码蜜芽| 久久亚洲春色中文字幕久久久| 亚洲精品偷拍视频免费观看| 中文字幕精品亚洲无线码一区| 我的小后妈韩剧在线看免费高清版| 2022免费国产精品福利在线 | 你是我的城池营垒免费看 | 无码人妻一区二区三区免费手机 | 一级看片免费视频| 伊人亚洲综合青草青草久热| 在线观看免费精品国产| 免费做爰猛烈吃奶摸视频在线观看| 99精品视频在线观看免费专区| ssswww日本免费网站片| 免费国产黄网站在线看| 亚洲av中文无码字幕色不卡|