1. 程式人生 > >linux常用命令與shell程式設計

linux常用命令與shell程式設計

1.     echo命令的作用列舉如下:

1)打開回顯或關閉回顯功能

格式:echo [{ on|off }]

如果想關閉“ECHO OFF”命令列自身的顯示,則需要在該命令列前加上“@”。@Echo off

2)關閉DOS命令提示符

格式:ECHO OFF

在DOS提示符狀態下鍵入ECHO OFF,能夠關閉DOS提示符的顯示使螢幕只留下游標,直至鍵入ECHO ON,提示符才會重新出現。

3)輸出空行,即相當於輸入一個回車

格式:ECHO.

值得注意的是命令列中的“.”要緊跟在ECHO後面中間不能有空格,否則“.”將被當作提示資訊輸出到螢幕。另外“.”可以用,:;”/[\\]+等任一符號替代。

命令ECHO.輸出的回車,經DOS管道轉向可以作為其它命令的輸入,比如echo.|time即相當於在TIME命令執行後給出一個回車。所以執行時系統會在顯示當前時間後,自動返回到DOS提示符狀態

4)建立新檔案或增加檔案內容

格式:ECHO 檔案內容>檔名

  ECHO 檔案內容>>檔名

例如:

C:>ECHO @ECHO OFF>AUTOEXEC.BAT建立自動批處理檔案

C:>ECHO C:\\CPAV\\BOOTSAFE>>AUTOEXEC.BAT向自動批處理檔案中追加內容

C:>TYPE AUTOEXEC.BAT顯示該自動批處理檔案

2.     mv

功能說明:移動或更名現有的檔案或目錄。
語  法:mv [-bfiuv][--help][--version][-S <附加字尾>][-V <方法>][原始檔或目錄][目標檔案或目錄]
補充說明:

mv可移動檔案或目錄,或是更改檔案或目錄的名稱。
參  數:
 -b或--backup  若需覆蓋檔案,則覆蓋前先行備份。 
 -f或--force  若目標檔案或目錄與現有的檔案或目錄重複,則直接覆蓋現有的文 件或目錄。 
 -i或--interactive  覆蓋前先行詢問使用者。 
 -u或--update  在移動或更改檔名時,若目標檔案已存在,且其檔案日期比原始檔新,則不覆蓋目標檔案。 

例如:

mv 要移動的檔案  目標路徑

mv -i 要移動的檔案  目標路徑(如果有重複檔案,會有提示資訊)

功能說明:遠端複製檔案或目錄。
語  法:rcp [-pr][原始檔或目錄][目標檔案或目錄] 或 rcp [-pr][原始檔或目錄...][目標檔案] 
補充說明:rcp指令用在遠端複製檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則它灰把前面指定的所有檔案或目錄複製到該目錄中。
參  數:


  -p  保留原始檔或目錄的屬性,包括擁有者,所屬群組,許可權與時間。 
  -r  遞迴處理,將指定目錄下的檔案與子目錄一併處理。

功能說明:刪除檔案或目錄。
語  法:rm [-dfirv][--help][--version][檔案或目錄...]
補充說明:執行rm指令可刪除檔案或目錄,如欲刪除目錄必須加上引數"-r",否則預設僅會刪除檔案。 
參  數:
 -d或--directory  直接把欲刪除的目錄的硬連線資料刪成0,刪除該目錄。 
 -f或--force  強制刪除檔案或目錄。 
 -i或--interactive  刪除既有檔案或目錄之前先詢問使用者。 
 -r或-R或--recursive 遞迴處理,將指定目錄下的所有檔案及子目錄一併處理。  

例如:

rm -i file:刪除file檔案並有提示資訊,y確認刪除,n是調過

rm -f file:強制刪除檔案或目錄。該選項會忽略放在他前面的-i選項

rm -rffile:刪除一個叫做dir1的目錄並同時其內容

功能說明:傳輸檔案。
語  法:tftp [主機名稱或IP地址]
補充說明:FTP讓使用者得以下載存放於遠端主機的檔案,也能將檔案上傳到遠端主機放置。tftp是簡單的文字模式ftp程式,它所使用的指令和FTP類似。

功能說明:切換目錄。
語  法:cd [目的目錄]
補充說明:cd指令可讓使用者在不同的目錄間切換,但該使用者必須擁有足夠的許可權進入目的目錄。

cd命令不僅顯示當前狀態,還可以改變當前狀態,用法和dos下的cd命令基本一致。

cd ..  可進入上一層目錄

cd -   可進入上一個進入的目錄

cd ~   可進入使用者的home目錄

cd /   可切換到根目錄

cd     cd後不加引數返回home目錄

功能說明:顯示目錄記錄。
語  法:dirs [+/-n -l]
補充說明:顯示目錄堆疊中的記錄。
參  數:
  +n   顯示從左邊算起第n筆的目錄。
  -n   顯示從右邊算起第n筆的目錄。
  -l   顯示目錄完整的記錄。

功能說明:列出目錄內容。
補充說明:執行ls指令可列出目錄的內容,包括檔案和子目錄的名稱。
參  數:
  -1   每列僅顯示一個檔案或目錄名稱。
  -a或--all   下所有檔案和目錄。
   -l   使用詳細格式列表。

如果想取得詳細的資訊,可用ls –l命令,這樣就可以顯示目錄內容的詳細資訊。如果目錄下的檔案太多,用一屏顯示不了,可以用ls –l|more分屏顯示。

ls –l可用ll替代。

9.     ln

功能說明:建立連結。
補充說明:符號連結(軟連結)需要使用帶-s引數的ln命令來建立,符號連結刪除連結檔案不影響原檔案。ln預設是建立硬連結,硬連結是直接引用,而符號連結是通過名稱進行引用。
ln –s  TARGET LINK_NAME

ln -s /app/liuyh /app/liuyhln

功能說明:建立目錄
語  法:mkdir [-p][--help][--version][-m <目錄屬性>][目錄名稱]
補充說明:mkdir可建立目錄並同時設定目錄的許可權。
參  數:
  -m<目錄屬性>或--mode<目錄屬性>   建立目錄時同時設定目錄的許可權。
  -p或--parents   若所要建立目錄的上層目錄目前尚未建立,則會一併建立上層目錄。
  --help   顯示幫助。
  --verbose   執行時顯示詳細的資訊。
  --version   顯示版本資訊。

例如:

mkdir dir1 建立一個叫做“dir1”的目錄

mkdir dir1dir2 同時建立兩個目錄

mkdir系統預設新建立目錄的許可權數字程式碼為755,如果預設的路徑無法滿足要求,使用-m選項設定,比如mkdir -m777 test4

功能說明:顯示工作目錄。
語  法:pwd [--help][--version]
補充說明:執行pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。

功能說明:刪除目錄。
語  法:rmdir [-p][--help][--ignore-fail-on-non-empty][--verbose][--version][目錄...]
補充說明:當有空目錄要刪除時,可使用rmdir指令。
參  數:
  -p或--parents   刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一併刪除。
  --help   線上幫助。
  --verbose   顯示指令執行過程。
  --version   顯示版本資訊。

功能說明:遠端登入。
語  法:telnet [-8acdEfFKLrx][-b<主機別名>][-e<脫離字元>][-k<域名>][-l<使用者名稱稱>][-n<記錄檔案>][-S<服務型別>][-X<認證形態>][主機名稱或IP地址<通訊埠>]
補充說明:執行telnet指令開啟終端機階段作業,並登入遠端主機。

功能說明:顯示或設定網路裝置。
補充說明:ifconfig可設定網路裝置的狀態,或是顯示目前的設定。

功能說明:檢測主機。
語  法:ping [-dfnqrRv][-c<完成次數>][-i<間隔秒數>][-I<網路介面>][-l<前置載入>][-p<範本樣式>][-s<資料包大小>][-t<存活數值>][主機名稱或IP地址]
補充說明:執行ping指令會使用ICMP傳輸協議,發出要求迴應的資訊,若遠端主機的網路功能沒有問題,就會迴應該資訊,因而得知該主機運作正常。

ping直接加IP地址可以檢視是否聯通。

功能說明:備份檔案。
補充說明:tar是用來建立,還原備份檔案的工具程式,它可以加入,解開備份檔案內的檔案。
引數:
  -c或--create   建立新的備份檔案。
  -f<備份檔案>或--file=<備份檔案>   指定備份檔案。
  -r或--append   新增檔案到已存在的備份檔案的結尾部分。
  -v或--verbose   顯示指令執行過程。
  -x或--extract或--get  從備份檔案中還原檔案。

例如:

tar -cvf cebent.tar cebent:把cebent資料夾歸檔為cebent.tar檔案

tar -tf cebent.tar:列出cebent.tar的內容但不解壓檔案

tar -xvf cebent.tar :解壓縮檔案cebent.tar

17.  date顯示系統時間

 date:顯示系統時間設定

date +%y%m%d:將日期顯示為兩位數的年、月、日的組合

 date -s 06/18/14:將系統時間設定為2014年6月18日

 date -s 14:20:50:將系統時間設定為14點20分50秒

date -s "2016-12-6 10:38:00"(好用)

18.  su切換使用者

    su命令是最基本的命令之一,常用於不同使用者間切換。例如如果登陸為user1,要切換到user2,只需要用如下命令:$su user2,然後系統提示輸入user2口令,輸入正確的口令之後就可以切換到user2。完成之後就可以用exit命令返回到user1。

   su命令的常見用法是變成根使用者或超級使用者。如果發出不帶使用者名稱的su命令,則系統提示輸入根口令,輸入之後則可切換為根使用者。

如果登陸為根使用者,則可以用su命令成為系統上任何使用者而不需要口令。

例如:

su - 新使用者:切換到新使用者

19.  scp遠端複製

scp 需要複製的檔案 使用者名稱@ip:/目標目錄

scpcebent.tar [email protected]:/app/ceb/app:把當前伺服器目錄下的cebent.tar複製到使用者名稱為netbank,ip為10.1.244.228的/app/ceb/app目錄下。

20.  cp

cp 要複製的檔案  目標路徑

cp -i 要複製的檔案  目標路徑(如果有重複檔案,會有提示資訊)

cp -r 要複製的檔案  目標路徑(遞迴處理,將指定目錄下的檔案和子目錄一起復制)

21.  chmod:改變檔案(目錄)的許可權

chmod 777 檔案(r讀:4,w寫:2,x執行:1)

使用者和檔案的關係定義為3類:第1類是檔案所有者(檔案主),即建立檔案的人;第二類是同組使用者,即幾個有某些共同關係的使用者組成的集體;第三類是其他使用者。Linux把檔案許可權分為三類:讀(r)、寫(w)、執行(x)。每一類使用者的檔案設定成3位。

22.  chown:改變檔案的所有權或組別

語  法:chown [option] … [owner][:[group]] file

補充說明:將檔案file的屬主更改為owner,屬組更改為group。

引數:

 -R選項用於改變一個目錄及其下所有檔案(包含子目錄)的所有權

例如:

chown netbank:root days:檔案days屬主更改為netbank使用者,屬組更改為root組。

chown guest days:檔案days的屬主更改為guest使用者,保留其屬組設定。

chown :newGrp days:檔案days的屬組更改為newGrp,保留屬主設定

chown -R netbank app/:將app/和及其下所有的檔案交給使用者netbank

23.  chgrp:單獨設定檔案的屬組

語  法:chgrp [option] …[group] file

補充說明:將檔案file的屬組更改為group。

引數:

 -R選項用於改變一個目錄及其下所有檔案(包含子目錄)的屬組

例如:

chgrp root days:檔案days的屬組更改為root組。

chgrp -R root app/:將app/和及其下所有的檔案屬組更改為root組

24.  cat

cat 檔案:檢視檔案內容,一般為文字檔案,從檔案的第一行內容開始顯示,檔案過長的話只能看到最後一頁,不適合檢視長檔案。

25.  more

more 檔案: 在檔案末尾顯示整個內容的比例,空格鍵向下翻動一頁,字母b向上翻動一頁,Enter鍵向下滾動一行,按Q鍵退出

26.  less

less 檔案:更適用閱讀較長較大的檔案。 less命令中的“回車鍵、空格鍵和b”操作鍵功能和more的相同,還可以使用Page Up和 Page Down進行上下翻頁,使用上下方向鍵對文字內容一行一行的上下移動,退出命令和more的也一樣。還可以查詢字串,輸入/要查詢的字串。

27.  head

head –20 檢視的檔名稱:檢視檔案的前20行

ctrl+c可以退出

28.  tail

tail –f 檢視的檔名稱(動態檢視檔案內容)

ctrl+c可以退出

29.  who檢視哪些使用者登入以及工作在哪個控制檯上

whoami:檢視當前使用者

30.  df

df -h:以容易理解的格式顯示出檔案系統大小

31.  touch

touch 檔名:建立一個空檔案

touch -d 20141106 app-20141106.tar:更改檔案的修改時間2014年11月6日00:00:00

32.  uname

uname -a:顯示當前系統的版本資訊

uname -r:顯示核心資訊

Linux localhost.lw 2.6.32-358.el6.i686 #1 SMP Thu Feb21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux

顯示x86_64表示為64位,i686則為32位。

33.  wc

wc [option] [FILE]:該命令的功能是顯示檔案列表中各檔案的行數、詞數和位元組數資訊。如果不加任何命令選項,它分4欄顯示統計資訊,分別為行數(line)、字數(word)、位元組數(character)和檔名。

34.  grep

grep命令的格式為:grep [option] pattern [file]。

grep命令會到輸入中或你指定的檔案中查詢包含匹配指定模式的字元的行。grep的輸出就是包含了匹配模式的行。

例如在檔案day中查詢包含un的行,可以使用grep un day。

35.  history

history:檢視使用者操作的命令    

history  10:檢視最近10行的命令

36.  id

id 使用者名稱:檢視使用者的UID、GID及其所屬的組 

37.  輸出重定向>和>>

輸出重定向:將命令的輸出重定向到檔案

date > test.log:將date命令的輸出重定向到test.log檔案中,如果該檔案非空則覆蓋

> 檔名:清空檔案的內容

date >> test.log:將date命令的輸出追加到test.log檔案中

38.  輸入重定向<和<<

輸入重定向:將檔案的內容重定向到命令。

區分方法:命令總是在左側,而重定向符號“指向”資料流動的方向。例如輸入重定向小於號說明資料正在從輸入檔案流向命令。

例:wc < test.log:統計test.log檔案的行數、詞數和位元組數。

內聯輸入重定向:允許你在命令列而不是檔案指定輸入重定向的資料。必須指定一個文字標記來劃分要輸入資料的開始和結尾,可以用任何字串的值來作為文字標記,但在資料的開始和結尾必須一致

例:

[email protected]:~/liuyh> wc << EOF

> test String1

> test String2

> test String3

> EOF

 3  6 39

39.  標準輸出與標準錯誤輸出

standard error (簡稱 stderr) 與 standard output (簡稱 stdout) 給他傳送到其它不同的地方,而不是螢幕上頭!傳送的目標處,通常是檔案或者是裝置! 而傳送的指令則是如下所示:

1. 標準輸入(stdin) :程式碼為 0 ,使用 < 或 << ;

2. 標準輸出(stdout):程式碼為 1 ,使用 > 或 >> ;

3. 標準錯誤輸出(stderr):程式碼為 2 ,使用 2> 或 2>> ;

指令的格式為:

當然啦,一串指令的最左邊一定是指令,而在 >,2>,< 右邊的,必須是檔案或裝置才行! 此外,那個 > 會等於 1> ,因為 standard output 程式碼是 1 ,可以省略啦! 再者, 1 與 > 之間並沒有空格喔!是緊接在一起的!請特別留意這一點:同時寫入同一個檔案需要使用 2>&1 才對呦!

40.  tee

功能說明:讀取標準輸入的資料,並將其內容輸出成檔案和螢幕,若檔案以絕對路徑存在,則必須保證父目錄的存在。>會將資料流整個傳送給檔案或裝置, 因此我們除非去讀取該檔案或裝置,否則就無法繼續利用這個資料流。有沒有發現在命令重導向的時候,如果我們要將資料送出到檔案的時候, 螢幕上就不會出現任何的資料!那麼如果我們需要將資料同時顯示在螢幕上跟檔案中呢?呵呵!這個時候就需要 tee 這個指令。

語  法:tee [-ai][--help][--version][檔案...]

補充說明:tee指令會從標準輸入裝置讀取資料,將其內容輸出到標準輸出裝置,同時儲存成檔案。

參  數:

 -a或--append  附加到既有檔案的後面,而非覆蓋它.

 -i-i或--ignore-interrupts  忽略中斷訊號。

 --help  線上幫助。

 --version  顯示版本資訊。

例:echo "==>tee命令測試開始"|tee -a test.log

41.  管道

取代將命令的輸出重定向到檔案,你可以重定向輸出到另一個命令。這個過程稱為管道連線。不要以為管道連結會一個一個地執行。Linux系統實際上會同時執行這兩個命令,在系統內部將他們連線起來。在第一個命令產生輸出的同時,輸出會被立即送給第二個命令。傳輸資料不會用到任何中間檔案或緩衝區域。

command1| command2

例:ps -ef|grep java

42.  命令幫助

man 命令:檢視某個命令的幫助資訊

whatis 命令:瞭解該命令的大致用途

43.  vim

語  法:vim file

補充說明:將vim是vi的增強版,用於編輯檔案。如果vim的檔案不存在,則會自動新建一個檔案

引數:

 :q-------------------如果未修改緩衝區資料,退出vim

 :wq------------------將緩衝區資料儲存並退出vim

 :q!-------------------取消所有對緩衝區資料的修改並退出vim

  :w filename-------------將檔案儲存到另一個檔名下

vim編輯器有兩種操作模式:普通模式和插入模式。當你剛開啟要編輯的檔案時(或新建一個檔案時),vim編輯器會進入普通模式。在普通模式中,vim編輯器會將按鍵解釋成命令。在插入模式下,vim會將你在當前游標位置輸入的每個鍵都插入到緩衝區。要進入插入模式,按下i鍵。要退出插入模式回到普通模式,按下鍵盤上的退出鍵(ESC)就可以了。

setnu:顯示行號

setnonu:取消行號

/pattern<Enter>:向下查詢pattern匹配字串

?pattern<Enter>:向上查詢pattern匹配字串

使用了查詢命令之後,使用如下兩個鍵快速查詢:

n:按照同一方向繼續查詢

N:按照反方向查詢

44.  反引號

在一串指令中,在 ` 之內的指令將會被先執行,而其執行出來的結果將做為外部的輸入資訊。反引號允許你將shell命令的輸出賦給變數。反引號(`)在美式鍵盤上通常和波浪線(~)位於同一鍵位。

例如: testing=`date`

shell會執行反引號中的命令,並將其輸出賦給變數testing。

45.  使用者變數

除了環境變數,shell指令碼允許在指令碼中定義和使用自己的變數。定義變數允許臨時儲存資料並在整個指令碼中使用,從而使shell指令碼看起來更像計算機程式。使用者變數可以是任何不超過20個字母、數字或下劃線的文字字串。使用者變數區分大小寫。值通過等號賦給使用者變數。在變數、等號和值之間不能出現空格。shell指令碼會自動決定變數值的資料型別。在指令碼的整個生命週期中,shell指令碼中定義的變數會一直保持著它們的值,但在shell指令碼完成時刪除掉。類似於系統變數,使用者變數可通過美元符引用。

46. $?檢視退出狀態碼

Linux提供了$?專屬變數來儲存上個執行的命令的退出狀態碼。你必須在你要檢視的命令之後馬上檢視或使用$?變數。它的值會變成shell中執行的最後一條命令的退出狀態碼。

例如:echo $? ---------------0

47. 內部欄位分隔符IFS

特殊的環境變數IFS,稱為內部欄位分隔符(internal field separator)。IFS環境變數定義了bash shell用作欄位分隔符的一系列字元。預設情況下,bash shell會將下列字元當作欄位分隔符:空格、製表符和換行符。如果bash shell在資料中看到了這些字元中的任意一個,它就會假定你在列表中開始了一個新的資料段。在處理可能含有空格的資料時,這會非常麻煩。要解決這個問題,可以在指令碼中臨時更改IFS環境變數的值來限制一下被bash shell當作欄位分隔符的字元。比如,如果你修改IFS的值使其只能識別換行符,需設定IFS=$'\n'。

48.   “$變數名”容納空格

forvar in /app/liuyh/*

do

 if [ -f "$var" ];then

 echo $var is a file!

 fi

done

for命令遍歷/app/liuyh/*輸出的結果。該程式碼使用test命令測試了每個條目(使用方括號方法)以檢視它是不是一個檔案。在這個例子中,和普通if語句處理得有些不同:if [ -f "$var" ]。

在Linux中,目錄名和檔名中包含空格當然是合法的。要容納這種值,應該將$var變數用雙引號圈起來。如果不這麼做,遇到有空格的目錄名或檔名時會有錯誤產生。

49. basename

basename命令會返回程式名而不包括路徑。

例如bash shell中:echo `basename $0`:列印程式的名稱

命令列中:basename 檔名。

50. $#

$#特殊變數含有指令碼執行時就有的命令列引數的個數。你可以在指令碼中任何地方使用這個特殊變數,就跟普通變數一樣。

51. #!/bin/bash

在通常的shell指令碼檔案時,必須在檔案的第一行指定要使用的shell。其格式為:#!/bin/bash。在通常的shell指令碼的行裡,#用作註釋行。shell指令碼中的註釋行是不被shell執行的。然而,shell指令碼檔案的第一行是個特例,#後接!號告訴shell用哪個shell來執行指令碼(你可以用bash shell來執行你的指令碼名稱,也可以用其他shell)。在指定了shell之後,可在檔案的每行輸入命令,後加一個回車符即可編寫指令碼。

52. read

read命令接受從標準輸入(鍵盤)或另一個檔案描述符的輸入。在收到輸入後,read命令會將資料放進一個標準變數。

read命令的簡單用法:

#echo命令使用了-n選項,它會移掉字串末尾的換行符,允許指令碼使用者緊跟其#後輸入資料

echo -n "Ener your name:"

read name

echo "Hello $name!Welcome toChina."

read命令包含了-p選項,允許你直接在read命令列指定提示符:

read -p "Enter your name:"name

echo "Hello $name!Welcome toChina."

read命令列可以接受多個引數,也可以在read命令列中不指定變數,那麼read命令會將它收到的任何資料都放進特殊環境變數REPLY中,如果需要引用該變數即可。

53. 單引號和雙引號

單引號引用了所有的字元,即單引號中字元除單引號本身之外都解釋為字面意義,單引號不再具備引用變數的功能。因此我們通過將單引號的引用方式稱為全引用,將雙引號的引用方式稱為部分引用。

[email protected]:~> echo'$PWD is the current directory'

$PWD is the current directory

[email protected]:~> echo"$PWD is the Current directory"

/app is the Current directory

[email protected]:~>

54. shell指令碼除錯方法

-n:讀一遍指令碼中的命令但不執行,用於檢查指令碼中的語法錯誤;

-v:一邊執行指令碼,一邊將執行過的指令碼命令列印到標準錯誤輸出;

-x:提供跟蹤執行資訊,將執行的每一條命令和結果依次打印出來

[email protected]:~/liuyh> sh-n test0316.sh

test0316.sh: line 8: syntax error nearunexpected token `fi'

test0316.sh: line 8: `  fi'

[email protected]:~/liuyh> sh-v test0316.sh

#!/bin/sh

#獲取系統當天日期為上線日期,或者通過指令碼獲得上線日期

       if[ ! -d 0316 ];then

              mkdir0316

       fi

[email protected]:~/liuyh> sh-x test0316.sh

+ '[' '!' -d 0316 ']'

+ mkdir 0316

55. Linu中提示No such file or directory解決辦法

分析原因,可能是平臺遷移遇到檔案格式問題,dos格式檔案傳輸到unix系統時,會在每行的結尾多一個^M,當然可能看不見。在 dos 使用的斷行字元為 ^M$ ,我們稱為 CR 與 LF 兩個符號。 而在 Linux 底下,則是僅有 LF ($) 這個斷行符號。由於檔案格式的原因會導致檔案執行失敗,有3種辦法解決。

1)     在windows下轉換:利用一些編輯器如UE或EditPlus等工具先將指令碼編碼轉換,再放到Linux中執行。轉換方式如下(UE):File->Conversions->DOS->UNIX即可。

2)     Linux下開啟該sh檔案,輸入:

:set ff  //回車,顯示fileformat=dos

:set ff=unix //重新設定下檔案格式

:wq //儲存退出

3)     Linux下使用命令“dos2unix 檔名”即可

56. find

1)     在某個路徑下查檔案,在/etc下查詢“*.log”的檔案

     find /etc -name "*.log"

2)     擴充套件,列出某個路徑下所有檔案,包括子目錄

     find /etc -name "*"

3)     在某個路徑下查詢所有包含“hello abcserver”字串的檔案

     find /etc -name "*" | xargs grep"hello abcserver"

     或者find /etc -name "*" | xargsgrep "hello abcserver" > ./cqtest.txt

57. nohup

nohup指令的一般形式是nohup command &,其中command是要執行的命令。在日常的系統管理工作中,有些程式耗費的時間較長,在使用者需要進行其他工作,而前臺執行的程式又沒有完成的情況下,就可以使用nohup命令讓程式後臺繼續執行,使用nohup命令能夠忽略hangup(掛起)訊號而繼續執行相關程式。

58. sleep

sleep命令用於暫停執行某個命令或作業一定的時間,在指定的時間結束之後繼續相關的命令或作業,時間預設為秒,例如暫停30秒,sleep 30

59. xargs

xargs用於從標準輸入裝置中讀取並執行特定的命令。find命令的-exec引數可以對查詢的結果進行批量處理,但是有一定的侷限性,而xargs彌補了find命令中-exec引數的不足,xargs從標準輸入裝置中接收的指令以空格分隔,執行指定的linux/unix命令,顯示執行結果,最後返回狀態值並退出。語法格式為:xargs [引數] linux/unix命令 [引數] [命令操作物件]

例:刪除find命令查詢的所有檔案

在利用find命令的-exec引數對查到的檔案執行刪除操作時,匹配到的所有檔案都將傳遞給-exec執行。而有些系統對傳遞給exec命令的長度有限制,當匹配檔案過多時,會產生溢位錯誤。例如“引數列太長”或“引數列溢位”。

在利用xargs執行find命令匹配檔案時,每次只能獲取一部分檔案,xargs先處理已經獲得的一部分檔案,然後再繼續獲得下一部分檔案,這就避免了產生類似-exec引數的溢位錯誤。

假設查詢當前目錄下的所有檔案test並將其刪除,命令執行如下:

find ./ -name test | xargsrm –f

60. ftp常用命令

ftp命令可以將檔案上傳到指定的遠端FTP伺服器,也可以從遠端伺服器上下載檔案。

ftp常用的內部命令如下:

ascii:使用ascii型別傳輸方式。

bin:使用二進位制檔案傳輸檔案。

bye:退出ftp會話

chmod mode file-name:將遠端主機檔案file-name的存取方式設定為mode,如:chmod 777 a.out

mkdir dir-name:在遠端主機中建一目錄。

delete remote-file:刪除遠端主機單個檔案

mdelete [remote-file]:刪除遠端主機多個檔案。

rmdir dir-name:刪除遠端主機目錄。

get remote-file[local-file]: 將遠端主機的檔案remote-file傳至本地硬碟的local-file。

mget remote-files:傳輸多個遠端檔案。

put local-file[remote-file]:將本地檔案local-file傳送至遠端主機。

mput local-file:將多個檔案傳輸至遠端主機。

prompt:設定多個檔案傳輸時的互動提示。

rename[from][to]:更改遠端主機檔名。

status:顯示當前ftp狀態。

? [cmd]:同help。

61. alias

alias:檢視已設定的命令別名

62. 檔案的變動時間

每個檔案在 linux 底下都會記錄三個主要的變動時間, 咦!那麼三個時間是哪三個呢?

modification time (mtime):當該檔案的『內容資料』變更時,就會更新這個時間!內容資料指的是檔案的內容,而不是檔案的屬性喔!

 status time (ctime):當該檔案的『狀態 (status)』改變時,就會更新這個時間,舉例來說, 像是許可權與屬性被更改了,都會更新這個時間啊~

access time (atime):當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。 舉例來說,我們使用 cat 去讀取 ~/.bashrc ,就會更新 atime 了。

[email protected]:~> ls -l/app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  4 20 14:41/app/liuyh/SFTPTest.sh

[email protected]:~> ls -l--time=atime /app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  5  2 15:18 /app/liuyh/SFTPTest.sh

[email protected]:~> ls -l--time=ctime /app/liuyh/SFTPTest.sh

-rw-r--r-- 1 netbank users 496  4 20 14:41/app/liuyh/SFTPTest.sh

63. PATH變數

我們知道 PATH 這個變數是我們在執行指令的時候,所需要具備的指令搜尋目錄資料, 沒有他,我們就得要使用絕對路徑來下達指令才行。

64. type

檢視指令是來自於外部指令(指的是其它非bash套件所提供的指令)或是內建在bash當中的指令。

1)     查詢一下ls指令

[email protected]:~> type ls

ls is aliased to `ls $LS_OPTIONS'

#沒有加上任何引數,僅列出ls這個指令的最主要使用情況

[email protected]:~> type -tls

alias

#-t引數則僅列出ls這個指令的最主要使用情況說明

[email protected]:~> type -als

ls is aliased to `ls $LS_OPTIONS'

ls is /bin/ls

#-a利用所有方法找出來的ls相關資訊都會被列出來

2)     查詢一下cd指令

[email protected]:~> type cd

cd is a shell builtin

65. env

檢視環境變數。

功能說明:設定或顯示環境變數。
語  法:export [-fnp][變數名稱]=[變數設定值]
補充說明:在shell中執行程式時,shell會提供一組環境變數。export可新增,修改或刪除環境變數,供後續執行的程式使用。export的效力僅及於該此登陸操作。
參  數:
 -f  代表[變數名稱]中為函式名稱。 
 -n  刪除指定的變數。變數實際上並未刪除,只是不會輸出到後續指令的執行環境中。 
 -p  列出所有的shell賦予程式的環境變數。

67.  source

利用source或小數點(.)都可以將設定檔的內容讀進來目前的shell環境中。舉例來說,我修改了~/.bashrc,那麼不需要登出,立即以source ~/.bashrc就可以將剛剛最新設定的內容讀進目前的環境中。

68.  關機和重啟

重啟命令:

1、reboot

2、shutdown -r now 立刻重啟(root使用者使用)

3、shutdown -r 10 過10分鐘自動重啟(root使用者使用)

4、shutdown -r 22:22 在時間為22:22時候重啟(root使用者使用)

如果是通過shutdown命令設定重啟的話,可以用shutdown -c命令取消重啟

關機命令:

1、halt   立刻關機

2、poweroff  立刻關機

3、shutdown -h now 立刻關機(root使用者使用)

4、shutdown -h 10 10分鐘後自動關機

如果是通過shutdown命令設定關機的話,可以用shutdown -c命令取消重啟

69.  程序和埠

1)     根據程序pid查埠:

netstat -nap | grep pid

2)     根據埠port查程序

netstat -nap | grep port

70.  關閉防火牆

service iptables stop 或者 systemctl stop firewalld.service

71.  執行sh ./xxx.sh出現:“Syntax error: “(” unexpected”的解決方法

通過sh ./virtualmin.sh執行程式碼就報“Syntax error: “(” unexpected”錯誤,通過bash ./virtualmin.sh執行就沒問題。幾經查詢語法,沒有問題,後來在網上找到問題原因:

程式碼對於標準bash而言沒有錯,因為Ubuntu/Debian為了加快開機速度,用dash代替了傳統的bash,是dash在搗鬼,解決方法就是取消dash。

sudodpkg-reconfiguredash,在選擇項中選No,搞定了!