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

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

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

    jasmine214--love

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

    shell 基礎(chǔ)知識整理

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

    1.     環(huán)境變量,相當(dāng)于全局變量。

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

    $ 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.     環(huán)境變量配置文件,包含/etc/profile~/.bashrc文件。

    1/etc/profile:在登錄時,操作系統(tǒng)定制用戶環(huán)境時使用的第一個文件,此文件為系統(tǒng)的每個用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時,該文件被執(zhí)行。

    2~/.bashrc:該文件包含專用于你的bash shellbash信息,當(dāng)?shù)卿洉r以及每次打開新的shell,該該文件被讀取。

    3)最常用的環(huán)境變量PATH

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

        $ 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  給腳本傳遞的參數(shù);$?  命令的執(zhí)行結(jié)果;

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

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

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

    If [    ]; then

    else

    fi

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

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

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

    -bash: ll:找不到命令

     

    $ ll >kiki 2>&1

     

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

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

        7)定制shell環(huán)境

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

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

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

     

        8eval 替換命令:然而當(dāng)在它前面放上eval時,其結(jié)果是shell在執(zhí)行命令行之前掃描它兩次。

        9) alias :命令別名,

            $ alias ll='ls -al'

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

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

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

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

     

     

    4.     變量整數(shù)聲明

    $ declare -i sum=100+50

    $ echo $sum

     

    5.     過濾器

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

    輸入:源程序
    預(yù)處理:負(fù)責(zé)宏展開和去掉注釋等工作。
    編譯:進行詞法分析、語法分析、語義分析、代碼優(yōu)化和代碼產(chǎn)生。
    匯編:負(fù)責(zé)把匯編代碼轉(zhuǎn)換成機器指令,生成目標(biāo)文件。
    鏈接:負(fù)責(zé)把多個目標(biāo)文件、靜態(tài)庫和共享庫鏈接成可執(zhí)行文件/共享庫。
    輸出:可執(zhí)行文件/共享庫。

     

    2)     復(fù)合過濾器







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

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

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

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

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

       

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

    $ season[1]=spring

    $ season[2]=summer

    $ echo ${season[1]}

     

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

    $ history 100

    $ history –c

     

    8.     打印輸出。轉(zhuǎn)義字符使能輸出-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參數(shù)代表是以.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,參數(shù)的代表是以.tar作為擴展名

     

     

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

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

    11.  更改權(quán)限;

    $chmod a+x  kiki.sh 

    12.  Makefilesed的使用

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

     

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

    14.   

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

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

    $ sudo cp -rf xufuli/  kiki/     完整拷貝目錄結(jié)構(gòu)到另一個文件夾

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

    $chmod a+x  kiki.sh              更改權(quán)限

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

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

     

    主站蜘蛛池模板: 色影音免费色资源| 亚洲视频欧洲视频| 成熟女人特级毛片www免费| 久久九九久精品国产免费直播| 亚洲乱码在线观看| 日韩在线观看免费| 亚洲人精品亚洲人成在线| 无码乱人伦一区二区亚洲| 95老司机免费福利| 青柠影视在线观看免费高清| 羞羞的视频在线免费观看| 亚洲成在人线在线播放无码| 亚洲人成在线免费观看| 国产精品二区三区免费播放心 | 希望影院高清免费观看视频| 在线观看亚洲AV每日更新无码| 亚洲一级二级三级不卡| 亚洲精品成人片在线播放| 国产亚洲精品成人a v小说| 四虎影视免费永久在线观看 | 亚洲色大成网站www尤物| 亚洲国产午夜电影在线入口| 亚洲精品成人av在线| 亚洲AV区无码字幕中文色| 亚洲国产成人片在线观看| 亚洲韩国精品无码一区二区三区| 中文字幕亚洲一区二区va在线| 亚洲一级黄色视频| 亚洲欧洲久久久精品| 亚洲综合精品网站在线观看| 亚洲国产成人五月综合网| 亚洲精品线路一在线观看| 国产国拍亚洲精品福利 | 亚洲av永久中文无码精品| 亚洲色欲色欱wwW在线| 亚洲熟女综合一区二区三区| 亚洲另类无码专区丝袜| 亚洲AV成人一区二区三区观看 | 59pao成国产成视频永久免费| 99国产精品免费视频观看| 久久www免费人成看片|