Time of Update: 2018-12-04
1. 查詢目前的目錄下所有沒有尾碼名的檔案: find . -type f -and ! -name "*.*" 2. 查詢當前檔案夾下所有用Windows分行符號(CRLF)並且沒有尾碼名的檔案,使用-m參數後則轉換成unix format (LF).#!/bin/bashTERM=linuxexport TERM#for i in $(find . -type f -and ! -name "*.*" ); do# if file $i | grep CRLF ; then#
Time of Update: 2018-12-04
1.測試檔案狀態表1 檔案狀態測試- d 目錄- s 檔案長度大於0、非空- f 正規檔案- L 符號串連- r 可讀- x 可執行- s 檔案長度大於0、非空- w 可寫- u 檔案有s u i d位設定- x 可執行 2.測試時使用邏輯操作符-a 邏輯與,操作符兩邊均為真,結果為真,否則為假。-o 邏輯或,操作符兩邊一邊為真,結果為真,否則為假。例子:[ -r t.txt -a -w t.txt ]echo $?0 3.字串測試= 兩個字串相等。!= 兩個字串不等。-z 空串。-n
Time of Update: 2018-12-04
今天,我們來學習下Unix Shell常用命令的知識。大家都知道Unix shell 不但是使用者互動介面,還是一門程式設計語言,系統註冊進入時就會執行一個Unix shell命令檔案 .profile ,下面對Unix shell中的常用命令作簡單介紹。$n shell 程式命令列中的第n 個參數,n為0-9,當n 為0時表示命令名$# 命令列中參數的個數$$ 本shell 命令的進程號$! 最後一個後台進程的代號$* 所有命令列參數$@ 與$*相似,但其值不同$HOME
Time of Update: 2018-12-04
shell 與 export命令使用者登入到Linux系統後,系統將啟動一個使用者shell。在這個shell中,可以使用shell命令或聲明變數,也可以建立並運行shell指令碼程式。運行shell指令碼程式時,系統將建立一個子shell。此時,系統中將有兩個shell,一個是登入時系統啟動的shell,另一個是系統為運行指令碼程式建立的shell。當一個指令碼程式運行完畢,指令碼shell將終止,返回到執行該指令碼之前的shell。 從這種意義上來說,使用者可以有許多
Time of Update: 2018-12-04
調了半個下午的shell指令碼。。shell真是一個NB的工具。。多謝一個空格,少寫一個空格都能讓人調到死。。1、有些很詭異的錯誤,執行的時候報錯的位置並不一定正確,下午在初始定義變數的時候最後少寫了",結果執行的時候報的是跟這行隔的很遠的一行syntax error near unexpected token `(',這個可以用-x來調試發現2、echo "some thing" > $file當使用重新導向符號>將輸出資料流定位到file的時候,若file不存在則自動建立。但是!
Time of Update: 2018-12-04
今天看到個shell指令碼裡面awk處理字串的,裡面有一句gsub("\\.[0-9]+$","",$2),而這個$2的格式是2013-08-07 00:12:13.333這種,這個gsub想要把.333給去掉,看著不太正常,感覺裡面的正則式應該是匹配不到.333的啊。\\轉義後就變成了一個\,而原來的.是沒有被轉義的,這樣就應該無法截取掉.333的,可實際運行了一下,的確可以正確運行,然後又去掉一個\試了下,也可以,但是提示awk: warning: escape sequence `\.'
Time of Update: 2018-12-04
格式如下:# echo -e '\033[背景色;前景色彩;行為控制m字串\033[#m'# echo -e '\e[背景色;前景色彩;行為控制m字串\e[#m'# foreground | background : color#---------------------------------# 30 | 40 : black# 31 | 41 : red# 32 | 42 : green#
Time of Update: 2018-12-04
轉自:http://xierongzhong1.blog.163.com/blog/static/5232328620102921658692/ shell中可能經常能看到:>/dev/null 2>&1 命令的結果可以通過%>的形式來定義輸出 /dev/null 代表空裝置檔案 > 代表重新導向到哪裡,例如:echo "123" > /home/123.txt 1
Time of Update: 2018-12-04
當你成功登入進一個文字介面之後,大部份情形下,你會在熒幕上看到一個不斷閃爍的方塊或底線(視不同版本而別),我們稱之為*遊標*(cursor)。遊標的作用就是告訴你接下來你從鍵盤輸入的按鍵所插入的位置,且每輸入一鍵遊標便向右邊移動一個格子,若連續輸入太多的話,則自動接在下一行輸入。假如你剛完成登入還沒輸入任何按鍵之前,你所看到的遊標所在位置的同一行的左邊部份,我們稱之為*提示符號*(prompt)。提示符號的格式或因不同系統版本而各有不同,在Linux 上,只需留意最接近遊標的一個可見的提示符號,
Time of Update: 2018-12-04
例1#!/bin/shcase ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type"esac$1 表示運行該指令碼時的第一個命令列參數${1##*.tar.} 表示第一個命令列參數去掉*.tar.後剩下的部分。比如運行指令碼時用 ./mytar.sh bak.tar.gz,
Time of Update: 2018-12-04
在介紹 shell 是甚麼東西之前,不妨讓我們重新檢視使用者與電腦系統的關係,我們知道電腦的運作不能離開硬體,但使用者卻無法直接對硬體作驅動,硬體的驅動只能透過 一個稱為"作業系統(Operating System)"的軟體來控管,事實上,我們每天所談的 freebsd、netbsd、openbsd、linux等等 ,嚴格來說只是一個作業系統,我們稱之為"核心(kernel)"。然而,從使用者的角度來說,使用者也沒辦法直接操作 kernel ,而是透過 kernel
Time of Update: 2018-12-04
這些事rpm的常用參數!!! 你可以在linux下man 一下rpm就知道了!!! 不過是英文的,不然你可以百度一下rpm就知道了額!!! 下面我幫你貼幾個!!!!rpm 常用命令1.安裝一個包 # rpm -ivh 2.升級一個包 # rpm -Uvh 3.移走一個包 # rpm -e 4.安裝參數 --force 即使覆蓋屬於其它包的檔案也強迫安裝 --nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。 5.查詢一個包是否被安裝 # rpm -q <
Time of Update: 2018-12-04
shell指令碼執行個體備忘:一些與傳遞給shell的參數相關的變數:$# 命令列參數的個數$? 調用命令的傳回值$$ 當前進程的進程號$! 最後一個後台命令的進程號$0 命令列的第一個參數,也就是命令名$n 命令列的第n個參數,如果要取超過9個參數${n}$* 所有的命令列參數,等於("$1 $2...""$@" 所有的命令列參數,等於("$1" "$2"...)$_
Time of Update: 2018-12-04
首先從一個例子說起:x=1+1echo $x你是不是期待著輸出2啊?讓你失望了,這樣輸出的結果是1+1。為什麼呢?這是因為在shell script中變數類型預設為“字串”,所以若不指定變數類型,1+1是一個“字串”而不是“計算式”。那麼怎麼得到我們想要的結果呢?方法很多,但是總結起來就是兩種,一種就是生命變數的類型。另一種是對特定的計算式進行處理。1)首先看第一類方法:聲明變數的類型我對上述程式做出以下修改:declare -i xx=1+1echo
Time of Update: 2018-12-04
1. 擷取命令執行的傳回值同下?2. 擷取指令碼執行的傳回值#!/bin/bashecho "A test."exit 0執行指令碼後,echo $?,列印出:03. linux下後台執行程式windows上面用start 命令 並且指定/b 選項(如果有log輸出,後面加上重定位,如,2>log即可), linux下在命令後面加上& 符號4. strip的作用?strip處理過後,將去掉其中的調試資訊,執行文 件大小也將小很多。命令如下: # arm-linux-strip
Time of Update: 2018-12-04
Shell指令碼類似於C語言,它也有固定的語言格式.簡而言之,Shell指令碼就像早期DOS年代的批次檔(.bat),最賤的功能就是將許多命令寫在一起,讓使用者很輕鬆的就能執行一個檔案的Shell指令碼,就能夠一次執行多個命令. (1)Shell指令碼第一行的格式 #!/bin/sh 符號#!用來指定該指令檔的解析程式,這裡使用的是bin目錄下的sh解析器.當編輯好指令碼後,如果要執行該指令碼,還必須使其具有可執行屬性,即: chmod + x filename
Time of Update: 2018-12-04
參 數: %H 小時(以00-23來表示)。 %I 小時(以01-12來表示)。 %K 小時(以0-23來表示)。 %l 小時(以0-12來表示)。 %M 分鐘(以00-59來表示)。 %P AM或PM。 %r 時間(含時分秒,小時以12小時AM/PM來表示)。 %s 總秒數。起算時間為1970-01-01 00:00:00 UTC。 %S 秒(以本地的慣用法來表示)。 %T 時間(含時分秒,小時以24小時制來表示)。 %X
Time of Update: 2018-12-04
寫一個指令碼:1、建立目錄/tmp/scripts2、切換工作目錄至此目錄中3、複製/etc/pam.d目錄至目前的目錄,並重命令為test4、將目前的目錄中的test及其裡面的檔案和子目錄的屬主改為redhat5、將test及其子目錄中的檔案的其它使用者的許可權改為沒有任何許可權#!/bin/bash#DIR='/tmp/csripts2'mkdir $DIRcd $DIRcp -rf /etc/pam.d ./testchown -R redhat ./testchmod -R o=---
Time of Update: 2018-12-04
Time of Update: 2018-12-04
shell指令碼和其他程式設計語言一樣提供了程式執行流if esle , do while ,for ,case,等。和其他程式設計語言一樣,shell指令碼的程式執行流的存在是為建立完整的邏輯思維,通過下面幾個指令碼來慢慢學習程式執行流。首先是if else迴圈與do while迴圈的格式:單分支:if CONDITION ; then //需要注意CONDITION語句的格式:[ command ]