• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            面對現實,超越自己
            逆水行舟,不進則退
            posts - 269,comments - 32,trackbacks - 0

            1$表示普通用戶,#表示超級用戶(root user)。超級用戶是Linux系統中權限最高的用戶。

            2shell通常以#!起始,例如:#!/bin/bash

            3、運行腳本的兩種方式:1、將腳本作為sh的命令行參數。2、將腳本作為具有執行權限的可執行文件。

                      例如:$ sh script.sh Or $ sh /home/path/script.sh

                      注:如果將腳本作為sh的命令行參數運行,那腳本中#!就沒什么用處了。

                      腳本的可執行權限可以通過以下方式設置:$ chmod a+x script.sh    執行:./script.sh  #當前目錄下  $ /home/path/script.sh #使用腳本完整路徑

            4、在bash中每個命令或是命令序列式通過使用分號或換行符來分隔的。例如: $ cmd1;cmd2  等同于   $ cmd1   $ cmd2

            5echo用于終端打印的基本命令,在echo 的雙引號形式中打印!需要用轉義字符/!轉義。

            6、可以用printf輸出,格式與C相同。

            7、echo中可以用 -n忽略結尾的換行符,如果需要使用轉義序列,則采用 echo -e"包含轉義序列的字符串"這種形式。

            8、打印色彩輸出, \e[1;31 將顏色設置為紅色,\e[0m 將顏色重新置回,例如: echo -e "\e[1;31m This is red txt \e[0m"

            9、設置背景,例如:echo -e "\e[1;42m Green Background \e[0m"

            10、可以用env命令在終端查看所有于此終端相關的環境變量,對于每個進程,在起運行時的環境變量可以使用下面的命令查看, cat /proc/$PID/environ

                  使用pgrep命令獲取進程的ID$ pgrep gedit #gedit為進程名稱

                  替換可以使用tr命令,環境變量之間由null字符(\0)分割,如果將\0替換成\n 如下:$ cat /proc/12501/environ | tr '\0' '\n'

            11、設置環境變量,用export,如: HTTP_PROOXY=http://192.168.20.1:134  export HTTP_PROOXY 直接設置:export PATH="$PATH:/home/user/bin"

            12、獲取字符串的長度:length=${#var}

            13、識別當前shell版本:echo $SHELL or echo $0

            14、檢查是否為超級用戶(UID環境變量):if [ $UID -ne 0 ]; then   echo Non root user. Please run as root else echo "Root user" fi

                   注:root用戶的UID0.

            15、數學運算:在Bash shell環境中,可以利用let, (())[]執行基本的算術操作,而在進行高級操作時,exprbc這兩個工具也會非常有用。

                  使用let時,變量名之前不需要再添加$,如:no1=4; no2=5; let result=no1+no2 echo $result

                  自加操作:let no1++   自減操作:let no1--

                  簡寫形式:let no+=6  let no-=6

                  其他方法:result=$[ no1 + no2 ] result=$[ $no1 + 5]

                                result=$(()no1 + 50)

                                result='expr 3 + 4'

                                result=$(expr $no1 + 5)

                  以上這些方法只能用于整數運算,而不支持浮點數??梢越柚?/span>bc工具執行浮點數運算。

                  如:echo "4 * 0.56" | bc

                  設定小數精度:echo "scale=2;3/8" | bc

                  禁制轉換:no=100 echo "obase=2;$no" | bc Result:1100100

                                no=1100100 echo "obase=10;ibase=2;$no" | bc Result:100

                  計算平方以及平方根: echo "sqrt(100)" | bc  #Square root

                                               echo "10^10" | bc      #Square

                                                                                                                             

            16、重定向

                  系統預留的三個標準描述符:stdin(0)、stdout(1)、stderr(2)

                 1> >>的區別

                  $echo "hello world" > temp.txt會將temp.txt中的內容先清空,然后再添加hello world。

                  而如果是 $echo "hello world" > temp.txt 則直接在文本尾部添加。

             

                 2)將標準輸入、輸出以及err 重定向到文件

                  比如:cmd 2>stderr.txt 1>stdout.txt

                   cmd 2>&1 output.txt cmd &> output.txt

                  "&"在這里代表標準輸出和標準錯誤,這里無論是正常輸出還是錯誤信息都寫到filename中了。

                  重新定義標準輸入,輸出,和錯誤的文件標識符

                  重新定義文件標識符可以用i>&j命令,表示把文件標識符i重新定向到j,你可以把"&"理解為"取地址"。

                 3)自定義描述符

                  exec 3<input.txt #使用文件描述符3打開并讀取文件

                  echo hello world >input.txt

                  #echo 123456789 >filename   把字符串寫到文件filename

                  #exec 3<>filename           把文件filename打開,并指定文件標識符為3

                  #read -n 4 <&3              從文件中讀4個字符,句柄已經指到第四個字符末尾

                  #echo -n . >&3              在第5個字符處寫一個點,覆蓋第5個字符,-n表示不換行

                  #exec 3>&-                                        關閉文件標識符3

             

            17、數組array_var={0 1 2 3 4 5}   打印數組元素內容:$ echo ${array_var[0]} or  $ index=5  $ echo ${array_var[$index]}

                  打印數組中所有值:$ echo ${array_var[*]} or $ echo ${array_var[@]}

                  打印數組長度:$ echo ${#array_var[*]}

                  列出數組索引:$ echo ${!array_var[*]} or $ echo ${!array_var[@]}

                      

            18、一步按回車鍵的方式讀取字符“n”:read -n numbers_of_chars variable_name   如:$ read -n 4 var    $ echo $var

                  用不回顯的方式讀取密碼:read -s var    顯示提示信息:read -p "Enter Input:" var   在特定時限內讀取輸入:read -t timeout var 

                  用定界符結束輸入:read -d delim_char var   如:$ read -d ":" var

                              

            19、比較符號:-eq 等于   -ne不等于  -gt大于   -lt小于  -ge大于等于   -le小于等于

             

            20、字符串比較:[[ $str1 = $str2 ]] 另一種寫法:[[ $str1 == $str2 ]]  [[ -z $str1 ]] 空字符串返回真   [[ -n $str1 ]] 非空返回真

             

            21$$ shell 本身的PID ;

                  $! shell最后運行的后臺ProcessPID ;

                  $? 最后運行的命令的結束代碼(返回值);

                  $- 使用set命令設定的flag一覽;

                  $* 所有參數列表。如"$*"["]括起來的情況、以"$1$2...$n"的形式輸出所有參數;

                  $@ 所有參數列表。如"$@"["]括起來的情況、以"$1" "$2"..."$n"的形式輸出所有參數;

                  $# 添加到shell的參數個數

                  $0 shell本身的文件名

                  $1~$n 添加到shell的各參數值。$1是第1參數、$2是第2參數...

                              

            22if語句命令:

                               if 條件

                               then

                                 Command

                               else

                                 Command

                               fi             別忘了這個結尾

                              

                               if [ -f file ] 如果文件存在

                               if [ -d ... ] 如果目錄存在

                               if [ -s file ] 如果文件存在且非空 if [ -r file ] 如果文件存在且可讀 if [ -w file ]  如果文件存在且可寫 if [ -x file ] 如果文件存在且可執行

                    

                               整數變量表達式

                               if [ int1 -eq int2 ] 如果int1等于int2

                               if [ int1 -ne int2 ] 如果不等于  if [ int1 -ge int2 ] 如果>= if [ int1 -gt int2 ] 如果> if [ int1 -le int2 ] 如果<= if [ int1 -lt int2 ]如果<

             

                               字符串變量表達式

                               If [ $a = $b ]   如果string1等于string2 字符串允許使用賦值號做等號 if [ $string1 != $string2 ] 如果string1不等于string2 if [ -n $string ]      

                               如果string 非空(0),返回0(true)  if [ -z $string ] 如果string 為空 if [ $sting ]           如果string 非空,返回0 (-n類似

                               條件表達式引用變量要帶$

                              

                               [macg@machome ~]$ man test [(1) User Commands [(1)

                               SYNOPSIS test EXPRESSION [ EXPRESSION ]

                               [-n] STRING the length of STRING is nonzero -n和直接$str都是非0條件

                               -z STRING the length of STRING is zero

                               STRING1 = STRING2 the strings are equal

                               STRING1 != STRING2 the strings are not equal

                               INTEGER1 -eq INTEGER2 INTEGER1 is equal to INTEGER2

                               INTEGER1 -ge INTEGER2 INTEGER1 is greater than or equal to INTEGER2

                               INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2

                               INTEGER1 -le INTEGER2 INTEGER1 is less than or equal to INTEGER2

                               INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2

                               INTEGER1 -ne INTEGER2 INTEGER1 is not equal to INTEGER2

                               FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2

                               FILE1 -ot FILE2 FILE1 is older than FILE2

                               -b FILE FILE exists and is block special

                               -c FILE FILE exists and is character special

                               -d FILE FILE exists and is a directory

                               -e FILE FILE exists 文件存在

                               -f FILE FILE exists and is a regular file 文件存在且是普通文件

                               -h FILE FILE exists and is a symbolic link (same as -L)

                               -L FILE FILE exists and is a symbolic link (same as -h)

                               -G FILE FILE exists and is owned by the effective group ID

                               -O FILE FILE exists and is owned by the effective user ID

                               -p FILE FILE exists and is a named pipe

                               -s FILE FILE exists and has a size greater than zero

                               -S FILE FILE exists and is a socket

                               -w FILE FILE exists and is writable

                               -x FILE FILE exists and is executabl

                           -b     當file存在并且是塊文件時返回真

                           -c     當file存在并且是字符文件時返回真

                           -d     當pathname存在并且是一個目錄時返回真

                           -e     當pathname指定的文件或目錄存在時返回真

                           -f     當file存在并且是正規文件時返回真

                           -g     當由pathname指定的文件或目錄存在并且設置了SGID位時返回為真

                           -h     當file存在并且是符號鏈接文件時返回真,該選項在一些老系統上無效

                           -k     當由pathname指定的文件或目錄存在并且設置了“粘滯”位時返回真

                           -p     當file存在并且是命令管道時返回為真

                           -r     當由pathname指定的文件或目錄存在并且可讀時返回為真

                           -s     當file存在文件大小大于0時返回真

                           -u     當由pathname指定的文件或目錄存在并且設置了SUID位時返回真

                           -w     當由pathname指定的文件或目錄存在并且可執行時返回真。一個目錄為了它的內容被訪問必然是可執行的。

                           -o     當由pathname指定的文件或目錄存在并且被子當前進程的有效用戶ID所指定的用戶擁有時返回真。


                           比較字符寫法:
                           -eq    等于
                           -ne    不等于
                           -gt    大于
                           -lt    小于
                           -le    小于等于
                           -ge    大于等于
                           -z     空串
                           * =    兩個字符相等
                           * !=   兩個字符不等
                           * -n   非空串

             

            posted on 2013-04-03 16:58 王海光 閱讀(450) 評論(0)  編輯 收藏 引用 所屬分類: 腳本
            久久精品亚洲中文字幕无码麻豆| 久久久久久久97| 久久久久久精品免费免费自慰| 久久精品免费全国观看国产| 人妻少妇久久中文字幕 | 久久精品国产色蜜蜜麻豆| 一本一道久久综合狠狠老 | 久久国产成人午夜aⅴ影院| 伊人久久大香线蕉综合热线| 97精品久久天干天天天按摩 | 久久人人爽人人爽人人片AV麻豆 | 久久青草国产精品一区| 无码国内精品久久人妻麻豆按摩| 久久精品www人人爽人人| 久久精品国产黑森林| 少妇高潮惨叫久久久久久| 亚洲欧美一级久久精品| 色综合久久综合网观看| 国产成年无码久久久免费| 日批日出水久久亚洲精品tv| 国产精品久久久久久久久| 97精品依人久久久大香线蕉97| 久久精品国产亚洲AV不卡| 久久夜色精品国产亚洲| 久久久久亚洲精品天堂| 亚洲香蕉网久久综合影视 | 久久久久久av无码免费看大片| 久久99精品国产99久久6男男| 国产69精品久久久久久人妻精品| 久久久久国产成人精品亚洲午夜| 久久亚洲精品视频| 久久午夜电影网| 久久免费国产精品一区二区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久只有这里有精品4| 欧美激情精品久久久久久久| 久久久青草青青国产亚洲免观| 日本免费一区二区久久人人澡| 久久九九有精品国产23百花影院| 国产精品久久毛片完整版| 免费观看成人久久网免费观看|