shell常見命令


shell常用命令

more

查看文件里的內容

  • return鍵:換行
  • 空格鍵:下一頁
  • b: 后退,上一頁
  • /pattern:查找文檔中pattern
  • q:強制退出

ls

展示文件夾內內容

  • ls:輸出文檔基本屬性
  • ls -l: 長數據串行出,包含檔案的屬性等等數據
  • ls -a:全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來,隱藏文檔以一個點開頭
  • ls -F:根據檔案、目錄等信息,給予附加數據結構,例如: *:代表可執行檔; /:代表目錄; =:代表 socket 檔案; |:代表 FIFO 檔案;
  • ls -R:連同子目錄內容一起列出來
  • ls -Rl:結合了R和l的功能,列出所有目錄包括子目錄的屬性
  • ls -lFa:組合功能,列出所有文件以及隱藏文件的屬性以及附加數據結構

mkdir

命令創建目錄

  • mkdir 目錄名:在當前路徑下創建目錄
  • mkdir newdir/sub1 newdir/sub2 newdir/sub3:同時創建多個已存在目錄的子目錄
  • mkdir -p newdir/sub1:當newdir不存在的時候也能創建

cd

切換當前目錄

  • cd ~/SAN/unixlab1:采用絕對路徑的方式切換路徑
  • cd unixlab1:采用相對路徑的方式切換路徑
  • cd ..:切換到上一級目錄
  • cd /:切換到根目錄

rmdir

刪除目錄

  • rmdir newdir:刪除當前文件夾下的newdir,當其不包含子目錄時刪除
  • rmdir newdir/*:刪除newdir中的所有文件

cat

連接文件或標准輸入並打印。這個命令常用來顯示文件內容,或者將幾個文件連接起來顯示,或者從標准輸入讀取內容並顯示,它常與重定向符號配合使用。部分功能與more類似

  • cat test1: 查看test1中內容
  • cat -n test1:不僅顯示內容,同時顯示內容的行序號
  • cat test1 test2 > newtest:連接兩個文件test1和test2的內容到newtest,注意此過程也包含創建newtest文件

cp

復制作用

  • cp test1 test1b:復制test1文件,同時存在內容相同的文件test1和test1b,若test1b存在,就會被覆蓋
  • cp -i test1 test1b:詢問是否復制,y為執行
  • cp -R subdir1 subdir4:遞歸持續復制,用於目錄的復制行為
  • cp test* subdir1:將以test開頭的所有文件,復制到subdir1中,但是test*文件還是存在原來的位置,與第一行復制文件的區別是,subdir1是目錄,並且已經存在產品

mv

移動目錄或者重命名

  • mv test3 newtest3:當不存在newtest3,將test3文件重命名為newtest3
  • mv test1 test2:由於test2存在,將test1覆蓋test2
  • mv subdir4 dir4:將目錄subdir4重命名為dir4,當dir4不存在時
  • mv newtest3 unixlab1:移動文件,將文件newtest3移到目錄unixlab1中,前提為unixlab1存在
  • mv dir4 unixlab1:移動目錄,將目錄dir4移到目錄unixlab1中

rm

作用為刪除

  • rm test4:刪除文件
  • rm -i *:采用通配符的方式刪除掉所有的文件,不包括目錄,i表示是詢問是否刪除
  • rm -r subdir1:強制刪除,可以刪除文件或者目錄

file

查看文件類型

  • file test1:顯示為"test1:ASCII text",為txt類型
  • file dir4:顯示為"dir4:directory",為目錄類型
  • file *:顯示該目錄下所有文檔類型

find

  • find -name newtest3 (-print):找出文件名為newtest3的文件
  • find -name 'test':找出所有名字包含test字符串的文檔,包括文件和目錄
  • find -name 'file*' -type d:查找的文檔為目錄類型

pwd

顯示當前路徑

  • pwd

du

顯示目錄所占的內存

  • du:顯示當前路徑下的目錄,目錄中的子目錄,總文件所占的內存
  • du -s:顯示總文件所占的內存,結果"20 ."
  • du -s *:顯示目錄和每一個文件所占的內存

chmod

權限的更改
rwx:分別問讀、寫、可執行的權限
ugo:分別為文檔擁有者,一組的人,和其余的人

    • chmod o-r test2:給other其余人減去read的權限
    • chmod g+w test1:給group一組的人添加寫的權限
    • chmod go-r newtest3*:給group和other減去讀的權限
    • chmod 754 test2:分別給ugo給754權限,7對應着111,即給所有的權限

grep

該命令常用於分析一行的信息,若當中有我們所需要的信息,就將該行顯示出來,該命令通常與管道命令一起使用,用於對一些命令的輸出進行篩選加工等等,比如可以加在ps, tail, cat后面

  • grep Not ed-500.txt:在uk-500這個文檔行中查找Not所在的記錄並顯示出來
  • more ed-500.txt | grep Not:用管道連接more和grep兩個命令,結果與上個命令相同
  • more ed-500.txt | grep “Not”:結果與上個命令相同
  • grep “West Ward” ed-500.txt:能正確查找出West Ward
  • grep West Ward ed-500.txt:第一行會報錯,因為不能正確解讀空格的意思,只能查找出West##

文件重定向

  • 執行程序grep West Ward ed-500.txt,會將默認的錯誤結果輸出到控制台屏幕上,因為STDERR的默認位置為控制台
  • 大多數 UNIX 系統命令從你的終端接受輸入並將所產生的輸出發送回​​到您的終端。一個命令通常從一個叫標准輸入的地方讀取輸入,默認情況下,這恰好是你的終端。同樣,一個命令通常將其輸出寫入到標准輸出,默認情況下,這也是你的終端。
  • 需要注意的是文件描述符 0 通常是標准輸入(STDIN),1 是標准輸出(STDOUT),2 是標准錯誤輸出(STDERR)。

參考鏈接:http://www.runoob.com/linux/linux-shell-io-redirections.html

命令 說明
command > file 將輸出重定向到 file。
command < file 將輸入重定向到 file。
command >> file 將輸出以追加的方式重定向到 file。
n > file 將文件描述符為 n 的文件重定向到 file。
n >> file 將文件描述符為 n 的文件以追加的方式重定向到 file。
n >& m 將輸出文件 m 和 n 合並。
n <& m 將輸入文件 m 和 n 合並。
<< tag 將開始標記 tag 和結束標記 tag 之間的內容作為輸入。
  • grep West Ward ed-500.txt > myAddresses:將輸出重定向到myAdresses文件中,但是錯誤輸出還是在控制台
  • grep West Ward ed-500.txt > myAddresses 2>&1:將STDOUT和STDERR都輸出到myAdresses文件中
  • grep West Ward ed-500.txt > myAddresses 2> myErrors:將錯誤輸出到myErrors文件中

Piping的使用

  • more ed-500.txt | grep “Manr”:在uk-500.txt文件中查找“Man”
  • more ed-500.txt | grep “Man” | wc -l:查找“Man”之后統計個數
  • more ed-500.txt | grep “Man” | sort > man.txt:將查找的結果按照所在記錄的首字母排序,並輸出到文件man.txt中
  • more ed-500.txt | grep “[Not|Man]” :查找了所有包含在[]中的字符,而非字符串
  • more ed-500.txt | grep [Not|Manr] :-bash: Man]: command not found grep: Unmatched [ or [^,因為shell想要解讀 “grep [Not” ,但解讀不出來, “|” 視為一個管道連接 “Man]” 命令,因此報錯

正則表達式中特殊字符

  • * : 代表任意字符(0到多個)
  • [ ] : 中間為字符組合,僅匹配其中任一一個字符
  • ^string:表示以string開頭的字符
  • string$:表示以string結尾的字符
  • . :表示單個字符

grep

  • 它在一個或多個文件中搜索字符串模板。

轉譯字符 \

  • grep "St." ed-500.txt:其中的點表示的是任意單個字符
  • grep "St\." ed-500.txt:其中.表示的就是一個點,字面的意思

使用$存放變量值

  • export count=23 grep $count ed-500.txt:其中$count指的是23,查找23
  • grep ‘$count’ ed-500.txt:查找結果什么都沒有,‘’防止了將$進行轉換,查找的任然是$count

echo

  • echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。

顯示普通字符

  • echo "It is a test":結果 It is a test

顯示轉義字符

  • echo "\"It is a test\"":結果 "It is a test"

顯示換行

echo -e "OK! \n" # -e 開啟轉義
echo "It is a test"
結果:
OK!
It is a test

顯示不換行

echo -e "OK! \c" # -e 開啟轉義 \c 不換行
echo "It is a test"
結果:
OK! It is a test

原樣輸出字符串,不進行轉義或取變量,用單引號(')

  • echo '$name\"':結果 $name\"

顯示命令執行結果,注意反引號(`)

  • echo `date`:結果Thu Jul 24 10:08:46 CST 2014,
  • 注意: 這里使用的是反引號 `, 而不是單引號 '。結果將顯示當前日期
  • 反引號(`) 位於鍵盤的Tab鍵的上方,起命令替換的作用。命令替換也就是shell能夠將一個命令的標准輸出插在一個命令行中任何位置。

參考鏈接:https://www.runoob.com/linux/linux-shell-echo.html

單引號(')和雙引號(“)

  • 如果沒有單引號或雙引號,shell會把空格后的字符串解釋為命令。
  • 單引號和雙引號的區別。單引號告訴shell忽略所有特殊字符,而雙引號忽略大多數,但不包括$、\、`。

實例:

testvalue=100
echo 'The testvalue is $testvalue'
The testvalue is $testvalue
echo "The testvalue is $testvalue"
The testvalue is 100

參考鏈接:https://blog.csdn.net/beginning1126/article/details/8633900


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM