linux學(xué)習(xí)總結(jié)

文章較長(zhǎng),如有需要可復(fù)制至word中保存,使用導(dǎo)航窗口,搜索匹配會(huì)快一點(diǎn)。藍(lán)色字體為超鏈接。

Linux學(xué)習(xí)總結(jié).png

一、基本概念:


1、Shell簡(jiǎn)介:

操作系統(tǒng)的殼能夠接受用戶指令理解用戶的命令,并將其翻譯傳輸給內(nèi)核,再由內(nèi)核指揮應(yīng)用程序的一個(gè)界面(interface 界面/接口)
1)圖形界面的shell: GUI(圖形用戶界面 ):Graphic User Interface
2)字符界面的shell:CLI (命令行接口)
靈活使用命令行的話,其操作速度快于圖形界面操作。
3)Bash簡(jiǎn)介:
bash,全稱為Bourne-Again Shell。它是一個(gè)為GNU項(xiàng)目編寫的Unix shell。 bash是絕大多數(shù)Linux發(fā)行版默認(rèn)的Shell,Google的shell腳本規(guī)范甚至就指明必須使用bash。

2、內(nèi)核kernel:

管理硬件資源,并且將硬件資源虛擬成其他樣子提供給上層所需要運(yùn)行的應(yīng)用程序。

3、通配符:
通配符 作用
? 匹配任意單個(gè)字符
* 匹配任意長(zhǎng)度任意字符
** 匹配任意級(jí)別目錄(bash 4.0以上版本支持,shopt -s globstar)
[] 匹配一個(gè)單字符范圍,如[a-z],[0-9]

用法:通配符范例:

*.txt               # 匹配全部后綴為.txt的文件
file?.log           # 匹配file1.log, file2.log, ...
[a-z]*.log          # 匹配a-z開頭的.log文件
[^a-z]*.log         # 上面的反向匹配

NOTE: 反斜杠(\)或引號(hào)(', ")都會(huì)使通配符失效。
如:\ *, "*", '*'都表示*本身,不通配任何文件。

4、展開式:

Bash的{}表達(dá)式內(nèi)的部分也會(huì)像通配符一樣,被Bash自解釋。 {}展開效果非常類似于數(shù)學(xué)公式中的多項(xiàng)式積。

5、文件類型

Linux的文件類型有以下幾種:

文件類型 ls -l顯示
普通文件 -
目錄 d
符號(hào)鏈接 l
字符設(shè)備 c
塊設(shè)備 b
套接字 s
命名管道 p

列出文件內(nèi)容類型可以用file: file /bin/ls

6、軟鏈接和硬鏈接
  • 軟連接(也稱作符號(hào)鏈接——symbolic link, symlink or soft link), 是一類特殊的文件, 其包含有一條以絕對(duì)路徑或者相對(duì)路徑的形式指向其它文件或者目錄的引用。
    它是一個(gè)獨(dú)立文件,其存在并不依賴于目標(biāo)文件。如果刪除一個(gè)符號(hào)鏈接,它指向的目標(biāo)文件不受影響。如果目標(biāo)文件被移動(dòng)、重命名或者刪除,任何指向它的符號(hào)鏈接仍然存在,但是它們將會(huì)指向一個(gè)不復(fù)存在的文件。這種情況被有時(shí)被稱為被遺棄。
    在Linux中,創(chuàng)建軟連接的方法是使用ln -s:
$ ln -s /etc/bashrc /tmp/bashrc
$ ln -s /etc/bashrc .            # 目標(biāo)可以不是完整的文件名
$ ln -s /etc/ dir                # 源和目標(biāo)名可以不一樣, 目標(biāo)也可以是相對(duì)路徑

查看軟連接的指向可以用ls -l
刪除軟連接就如同刪除普通文件一樣,使用rm symlink即可。

  • 硬連接, 指通過(guò)索引節(jié)點(diǎn)來(lái)進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號(hào),稱為索引節(jié)點(diǎn)號(hào)(Inode Index)。在Linux中,多個(gè)文件名指向同一索引節(jié)點(diǎn)是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個(gè)文件擁有多個(gè)有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。只刪除一個(gè)連接并不影響索引節(jié)點(diǎn)本身和其它的連接,只有當(dāng)最后一個(gè)連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會(huì)被釋放。也就是說(shuō),文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
    在Linux中,創(chuàng)建硬鏈接的方法是ln:
    $ ln file1 file2
    硬鏈接的幾個(gè)限制:
    硬鏈接創(chuàng)建時(shí)要求源文件必須存在
    不允許給目錄創(chuàng)建硬鏈接(注意是不能通過(guò)ln的方式)
    只有在同一文件系統(tǒng)才能創(chuàng)建硬鏈接
7、時(shí)間戳

文件共有3個(gè)時(shí)間戳,Access time(atime), Modify time(mtime), Change time(ctime)。
Birth time(創(chuàng)建時(shí)間)在Linux中已經(jīng)廢棄,目前一般都是-。

這里重點(diǎn)比對(duì)一下Modify和Change:
Modify: 表示文件內(nèi)容被修改的時(shí)間
Change: 表示文件被修改的時(shí)間(包括內(nèi)容和元數(shù)據(jù))
用stat命令可以查看文件的時(shí)間戳

$ stat /tmp/file
File: ‘file’
Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d    Inode: 2228469     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-12-13 17:21:52.117050496 +0800
Modify: 2015-12-13 17:21:52.117050496 +0800
Change: 2015-12-13 17:21:52.117050496 +0800
Birth: -

touch命令即可修改元數(shù)據(jù)中的時(shí)間戳:

 touch file     # 將Access, Modify, Change均修改為當(dāng)前時(shí)間
$ touch -a file  # 將Access, Change均修改為當(dāng)前時(shí)間
$ touch -m file  # 將Modify, Change均修改為當(dāng)前時(shí)間
8、重定向

重定向就是改變?cè)械妮斎牖蜉敵鑫募?。使命令從其他文件接受輸入,或者輸出到其他文件中去?/p>

  • 輸出重定向有兩種符號(hào): >和>>
    n>: 將輸出從文件描述符 n 重定向到文件。您必須具有該文件的寫權(quán)限。如果該文件不存在,將創(chuàng)建它。如果該文件已經(jīng)存在,通常將覆蓋所有現(xiàn)有內(nèi)容,并且沒(méi)有任何警告。
    n>>: 和上面唯一的不同在于, 如果目標(biāo)文件存在, 則追加重定向內(nèi)容到文件尾部, 而不是覆蓋原文件。
    n>&-: Close output file descriptor n.
    NOTE: 文件描述符n和重定向符號(hào)>|>>之間不能有空格, 若省略,則默認(rèn)1。
    $ ls > file_list.txt
    $ find --help > find_help.txt
    $ cat /etc/passwd >> passwd
    $ ls x* z* >stdout.txt 2>stderr.txt
  • 輸入重定向的字符是<和<<
    <: 代表從其他某一文件接收輸入,而不是默認(rèn)的/dev/stdin
    <<: here-document 形式重定向, 代表將一段標(biāo)記為 here-document 的文本作為輸入
    n<&-: Close input file descriptor n.
    $ cat < file
    $ tr ':' ',' < /etc/passwd
    $ sort < file
9、管道

管道是一種特殊的重定向方式,用于將一個(gè)命令的輸出重定向到另一個(gè)命令的輸入。管道可以分為兩種: 匿名管道與命名管道

  • 匿名管道
    使用pipe(man 2 pipe)函數(shù)(C函數(shù))或|即可創(chuàng)建匿名管道,由于使用頻率實(shí)在太高,通常管道不特別說(shuō)明, 都指的是匿名管道,甚至|符號(hào)本身也常稱為管道符。
    管道的用法很簡(jiǎn)單,用管道符|將多個(gè)命令連接即可:
    COMMAND1 | COMMAND2 [| COMMANDn]...

匿名管道有幾個(gè)特點(diǎn):
管道連接的幾個(gè)命令是并行執(zhí)行的,而不是串行
管道中有任意一個(gè)命令退出時(shí),整個(gè)管道連接的所有命令將全部退出
管道的退出碼是最后一條命令的退出碼

  • 命名管道
    命名管道(FIFO, 也稱named pipe),是另一種進(jìn)程的通信方式。與匿名管道不同, 該管道將具象化為一個(gè)具體的文件,而且可以在不相關(guān)的進(jìn)程間建立通信關(guān)系,效果就如同匿名管道的那樣。

在Linux中,使用mkfifo命令或mkfifo函數(shù)(C函數(shù))將創(chuàng)建一個(gè)命名管道。

$ mkfifo myfifo    # 創(chuàng)建一個(gè)名為myfifo的FIFO
$ cat > myfifo <<EOF
first line
last line
EOF                # 向這個(gè)myfifo這個(gè)命名管道寫入一些內(nèi)容

# 打開一個(gè)新終端
$ cat myfifo       # 讀取命名管道,將獲取到之前寫入的內(nèi)容
$ rm myfifo        # 刪除命名管道,就像刪除一個(gè)普通文件一樣
十、發(fā)行版與內(nèi)核的關(guān)系

系統(tǒng)組成: Linux內(nèi)核、庫(kù)、應(yīng)用程序
內(nèi)核、庫(kù)、應(yīng)用程序都以源代碼的形式提供,需要編譯成二進(jìn)制電腦可識(shí)別文件,廠商將其編譯,并提供能夠安裝的載體,稱其為發(fā)行版。
發(fā)行版(三大主流):Fedora(為Redhat提供測(cè)試), RedHat (CentOS), SUSE, Debian(Ubuntu, Mint)
Debian相比其他輕量限制少,但是比較難。
詳見(jiàn) : http://www.itdecent.cn/p/3a3d068ab14c

十一、相對(duì)路徑和絕對(duì)路徑
  • 絕對(duì)路徑永遠(yuǎn)都是相對(duì)于根文件夾的。它們的標(biāo)志就是第一個(gè)字符永遠(yuǎn)都是“/”。如/var/log/syslog
  • 相對(duì)路徑永遠(yuǎn)都是相對(duì)于我們所處的文件夾位置。它們的第一個(gè)字符沒(méi)有“/”。dir1/dir2/dir3

二、小技巧

1、查看歷史命令時(shí),可以使用上箭頭/下箭頭進(jìn)行上翻/下翻歷史命令。再次回車可以繼續(xù)執(zhí)行該條命令。

2、history命令可以按順序列出最近執(zhí)行的命令。
使用!n可以使用第n條歷史命令
使用!!可以執(zhí)行最后一條歷史命令(sudo !! √)
使用!word執(zhí)行以word開頭的命令
ctrl+r可以按關(guān)鍵字搜索歷史命令

3、快捷鍵:

  • shift+PageUp: 向上翻頁(yè)
  • shift+PageDown: 向下翻頁(yè)
  • ctrl+r: 進(jìn)入歷史查找命令記錄, 輸入關(guān)鍵字。 多次按返回下一個(gè)匹配項(xiàng)
  • ctrl+c: 發(fā)送Interrupt信號(hào),常用于取消未輸入完整的命令,或中斷當(dāng)前正在執(zhí)行的命令
  • ctrl+d: 發(fā)送EOF信號(hào),常用于登出交互式shell,或結(jié)束STDIN
  • ctrl+z: 給當(dāng)前正在運(yùn)行的命令發(fā)送SIGTSTP,將導(dǎo)致被后臺(tái)掛起
  • Bash補(bǔ)全的按鍵是<TAB>,可以實(shí)現(xiàn)命令與路徑的補(bǔ)全。唯一補(bǔ)全結(jié)果會(huì)立刻補(bǔ)全,非唯一補(bǔ)全結(jié)果需要按兩下<TAB>,同時(shí)顯示結(jié)果是可用補(bǔ)全列表.
  • 清屏:Ctrl+L快捷鍵 或者 clear 命令

三、基本命令:


格式:command [options] [arguments]

command:命令
options:--單詞 或 -單字
arguments:參數(shù),有時(shí)候選項(xiàng)也帶參數(shù)。

在查看命令幫助時(shí),會(huì)出現(xiàn)[],<>,|等符號(hào),它們的含義如下:
無(wú)任何特殊符號(hào) 代表必選參數(shù)
[] 表示是可選的;
<> 表示可變選項(xiàng),一般是多選一,而且必須是要選其一。
x|y|z 多選一,如果加上[],可不選。如果加上{},必選其一。
-abc 多選,如果加上[],可不選。

獲取幫助:

1、內(nèi)建命令幫助: 使用help COMMAND的形式即可,如help cd
2、大多數(shù)外部命令都有帶有幫助參數(shù),通常為COMMAND -h|--help, 如cat --help
3、打開幫助手冊(cè)的命令為man COMMAND, 如:man find


1、echo:在終端上打印字符串到標(biāo)準(zhǔn)輸出。

Usage: echo [-neE] [arg ...]
常用參數(shù):
-e: 啟用特殊轉(zhuǎn)義字符(\t, \b, \n等)
-n: 行末不添加換行符

2、ls:顯示指定目錄的文件。

Usage: ls [OPTION]... [FILE]...

常用參數(shù):

-l: 重要參數(shù),以長(zhǎng)列表形式顯示
image.png

-a: 列出所有文件,包含隱藏文件
-R: 遞歸目錄列出文件
-d: 顯示目錄本身,而非目錄下文件

ls的輸出顏色有以下幾種:
白色:表示普通文件
藍(lán)色:表示目錄
綠色:表示可執(zhí)行文件
紅色:表示壓縮文件
淺藍(lán)色:鏈接文件
紅色閃爍:表示鏈接的文件有問(wèn)題
黃色:表示設(shè)備文件
灰色:表示其他文件

3、cd:切換當(dāng)前的工作目錄

Usage: cd [-L|[-P [-e]] [-@]] [dir]
用法示例:

$ cd /path/       # 跳轉(zhuǎn)到指定目錄
$ cd              # 跳轉(zhuǎn)到家目錄
$ cd ~            # 跳轉(zhuǎn)到家目錄
$ cd ~USERNAME    # 跳轉(zhuǎn)到指定用戶的家目錄
$ cd -            # 跳轉(zhuǎn)到上一次所在目錄
$ cd ..         # 跳轉(zhuǎn)到上一級(jí)目錄
$ cd ../..     # 跳轉(zhuǎn)到上兩級(jí)目錄
4、cat:打開文件

Usage: cat [OPTION]... [FILE]...
常用參數(shù):
-n: 顯示行號(hào)
cat+文件名 打印當(dāng)前目錄下的某文件內(nèi)容(不需要gui系統(tǒng))
cat >文件名 創(chuàng)建新的文件 Ctrl+c 終止創(chuàng)建。

5、tac +文件名 :倒序打印文件內(nèi)容。
6、pwd:顯示當(dāng)前工作目錄
7、vi 命令

vi可以分為三種狀態(tài),分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:

  1. 命令行模式command mode):控制屏幕光標(biāo)的移動(dòng),字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段及進(jìn)入Insert mode下,或者到 last line mode。

  2. 插入模式(Insert mode):只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。

  3. 底行模式(last line mode):將文件保存或退出vi,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)……等。

不過(guò)一般我們?cè)谑褂脮r(shí)把vi簡(jiǎn)化成兩個(gè)模式,就是將底行模式(last line mode)也算入命令行模式command mode)。
如何進(jìn)入一個(gè)文件并進(jìn)行編輯并保存呢?使用vi即可:

  • 第一步:vi + 文件名 如:vi ~/.bashrc (進(jìn)入家目錄即用戶目錄的.bashrc文件),如無(wú)此文件,則為創(chuàng)建該文件。
  • 第二步:按a,進(jìn)入插入模式,修改內(nèi)容或添加內(nèi)容。按i/o也可進(jìn)入插入模式。差別如下:
    按「i」切換進(jìn)入插入模式「insert mode」,按"i"進(jìn)入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件;
    按「a」進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字;
    按「o」進(jìn)入插入模式后,是插入新的一行,從行首開始輸入文字。
  • 第三步:保存并退出:按「ESC」鍵進(jìn)入命令行模式,輸入:wq保存并退出,輸入: q!不保存退出。

8、別名:簡(jiǎn)化某些常用的命令及參數(shù)。

用法:alias new_alias="command args"如:alias cdl="cd -"
永久生效將alias命令寫入~/.bashrc中即可。使用命令:vi ~/.bashrcnew_alias="command args"放進(jìn)去,保存退出。

9、壓縮與解壓縮

gzip FileName 壓縮為.gz文件
gunzip FileName.gz 解壓.gz文件

bzip2 a.tar 壓縮某文件,生成.bz2文件
bunzip2 a.tar.bz2 解壓.bz壓縮文件

tar -zcvf a.tar.gz a.tar 將a.tar壓縮為a.tar.gz (壓縮率比bz高)
tar -zxvf a.tar.gz 可以解壓tar.gz文件
tar -jcvf a.tar.bz2 a.tar 將a.tar壓縮為a.tar.bz2
tar -jxvf a.tar.bz2 可以解壓tar.bz壓縮文件

解壓:unzip FileName.zip -d dir
壓縮:zip FileName.zip DirName

解壓:rar x FileName.rar
壓縮:rar a FileName.rar DirName


10、文件的搜索

文件搜索有兩種: locate和find。

  • locate是通過(guò)文件索引數(shù)據(jù)庫(kù)查找的,速度快,但是不具有實(shí)時(shí)性。
    手工更新文件索引數(shù)據(jù)庫(kù)可以使用updatedb,之后就可以使用locate filename來(lái)查找文件。
>updatedb
>locate filename
  • find功能十分強(qiáng)大,屬于實(shí)時(shí)查找,相比locate會(huì)比較慢,但是擁有更多更強(qiáng)的特性。
    NAME
    find - search for files in a directory hierarchy

SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find命令高頻參數(shù):
-type: 指定查找的文件類型,如f,d,l等
-name/-iname: 指定要查找的文件名,支持通配符
-perm: 指定要查找的文件的mode
-[amc]time: 指定文件的atime,mtime,ctime
-exec: 對(duì)找出的文件執(zhí)行外部命令操作

目錄操作:
1、創(chuàng)建目錄:

mkdir dir
mkdir -p /tmp/dir1/dir2/dir3

2、列出目錄內(nèi)容:

ls [-R] /path/to/dir
tree [/path/to/dir]

3、拷貝目錄:

cp -r dir1 dir2

4、刪除目錄:
>rmdir dir
>rmdir -p /tmp/dir1/dir2/dir3
>rm -fr /path/to/delete

Warning: rm 十分危險(xiǎn),幾乎能刪除任何你想刪掉的文件,被rm刪掉的文件很難找回。
特別提醒,尤其是-r -f參數(shù)連用的時(shí)候需謹(jǐn)慎,且用且珍惜!

5、移動(dòng)/重命名目錄:

mv /path/to/dir1 /path/to/dir2

文件操作:
1、創(chuàng)建一個(gè)空文件:

touch file...
cat> file
vi file

2、復(fù)制文件:

cp file1 file2
cp SRC... DST # 拷貝多個(gè)文件到指定目錄

3、刪除文件:

rm file1 [file2]...

4、移動(dòng)/重命名文件:

mv /path1/to/file1 /path2/to/[file2]

文本文件的處理:
1、查看文本文件
1)cat 文件名
[root@localhost test]# cat a.txt
afceggn
ckk
czvbb
ssvx
ervt

附:
查看文件的大?。?br> du -h 文件名
-h或--human-readable 以K,M,G為單位,提高信息的可讀性。

2)more:會(huì)以一頁(yè)一頁(yè)的顯示方便使用者逐頁(yè)閱讀,而最基本的指令就是按空白鍵(space)就往下一頁(yè)顯示,按 b 鍵就會(huì)往回(back)一頁(yè)顯示,而且還有搜尋字串的功能 。more命令從前向后讀取文件,因此在啟動(dòng)時(shí)就加載整個(gè)文件。

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

+n 從笫n行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個(gè)檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示
-c 從頂部清屏,然后顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續(xù),按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁(yè))字符
-p 通過(guò)清除窗口而不是滾屏來(lái)對(duì)文件進(jìn)行換頁(yè),與-c選項(xiàng)相似
-s 把連續(xù)的多個(gè)空行顯示為一行
-u 把文件內(nèi)容中的下畫線去掉

3)less:對(duì)文件或其它輸出進(jìn)行分頁(yè)顯示的工具

less [參數(shù)] 文件

空格鍵 滾動(dòng)一行
回車鍵 滾動(dòng)一頁(yè)
[pagedown]: 向下翻動(dòng)一頁(yè)
[pageup]: 向上翻動(dòng)一頁(yè)
q 退出瀏覽

4)head:用來(lái)顯示文檔的開頭至標(biāo)準(zhǔn)輸出中,默認(rèn)顯示十行。

head 文件

-c, --bytes=[-]K 顯示每個(gè)文件的前K 字節(jié)內(nèi)容;如果附加"-"參數(shù),則除了每個(gè)文件的最后K字節(jié)數(shù)據(jù)外 顯示剩余全部?jī)?nèi)容
-n, --lines=[-]K 顯示每個(gè)文件的前K 行內(nèi)容;如果附加"-"參數(shù),則除了每個(gè)文件的最后K行外 顯示剩余全部?jī)?nèi)容
-q, --quiet, --silent 不顯示包含給定文件名的文件頭
-v, --verbose 總是顯示包含給定文件名的文件頭
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出

[root@localhost test]# cat a.txt 
afceggn
ckk
czvbb
ssvx
ervt
ac
fcva
vsxfdb
svfst
hbgfdtbtny
bc
bdyd
bxfg
bxfgn
xnbgcmj
c
xnghgc
nchg
xngkmhj
fjjufkf
dghhyyj
nj
[root@localhost test]# head a.txt 
afceggn
ckk
czvbb
ssvx
ervt
ac
fcva
vsxfdb
svfst
hbgfdtbtny
[root@localhost test]# head a.txt 
afceggn
ckk
czvbb
ssvx
ervt
ac
fcva
vsxfdb
svfst
hbgfdtbtny

5) tail 把某個(gè)文件的最后幾行顯示到終端上,默認(rèn)顯示后十行,假設(shè)該文件有更新,tail會(huì)自己主動(dòng)刷新,確保你看到最新的文件內(nèi)容。

[root@localhost test]# tail a.txt 
bxfg
bxfgn
xnbgcmj
c
xnghgc
nchg
xngkmhj
fjjufkf
dghhyyj
nj
2、修改/編輯文本文件
1):使用文本編輯器,終端下常見(jiàn)文本編輯器: vim, emacs, nano

nano /etc/passwd
vim /etc/services
emacs /etc/sudoers

2):使用非交互式腳本處理:sed命令

sed -i
-i :直接修改讀取的文件內(nèi)容,而不是輸出到終端。

3):統(tǒng)計(jì)文本信息

wc (word count)統(tǒng)計(jì)有幾行,有幾個(gè)單詞,有幾個(gè)字節(jié)(空白行有空格鍵算有字節(jié),沒(méi)有空格鍵不算)
-l : 只顯示行數(shù)
-w : 只顯示單詞數(shù)
-c : 只顯示字節(jié)數(shù)
-m : 只顯示字符數(shù)
字符與字節(jié)的差別

4):文本處理

1、cut: remove sections from each line of files

-d :指定字段分隔符(默認(rèn)一個(gè)空格)
-f : 指定要顯示的字段。-f 1,3 顯示第一和第三個(gè)字段。 -f 1-3 :顯示第一到第三個(gè)字段。
-c/b : 輸出由bytes指定的位置處字節(jié)

\$ cut -d: -f1,7 /etc/passwd #以分隔,顯示第一和第七字段

2、sort: sort lines of text files 對(duì)文件的數(shù)據(jù)進(jìn)行排序(默認(rèn)根據(jù)ASCII表升序排列)

-u 對(duì)排序后認(rèn)為相同的行只留其中一行。
-r 逆序輸出。
-t<分隔字符> 指定排序時(shí)所用的欄位分隔字符。

3、uniq: report or omit repeated lines 報(bào)告或略過(guò)重復(fù)行(相鄰才重復(fù))。

-d :只顯示重復(fù)的行(只顯示一次)
-D : 只顯示重復(fù)的行(顯示多次)
-c : 顯示文件中行的重復(fù)次數(shù)
\$ sort /tmp/text | uniq # 效果等同于sort -u

4、grep: print lines matching a pattern

grep [選項(xiàng)] ”模式“ [文件]

選項(xiàng):
-E :開啟擴(kuò)展(Extend)的正則表達(dá)式。
-i :忽略大小寫(ignore case)。
-v :反過(guò)來(lái)(invert),只打印沒(méi)有匹配的,而匹配的反而不打印。
-n :顯示行號(hào)
-w :被匹配的文本只能是單詞,而不能是單詞中的某一部分,如文本中有l(wèi)iker,而我搜尋的只是like,就可以使用-w選項(xiàng)來(lái)避免匹配liker
-c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內(nèi)容,注意如果同時(shí)使用-cv選項(xiàng)是顯示有多少行沒(méi)有被匹配到。
-o :只顯示被模式匹配到的字符串。
--color :將匹配到的內(nèi)容以顏色高亮顯示。
-A n:顯示匹配到的字符串所在的行及其后n行,after
-B n:顯示匹配到的字符串所在的行及其前n行,before
-C n:顯示匹配到的字符串所在的行及其前后各n行,context

模式:
1、直接輸入要匹配的字符串
2、使用基本正則表達(dá)式

5、sed命令

其他命令:
1、which指令:用于查找文件,會(huì)在環(huán)境變量$PATH設(shè)置的目錄里查找符合條件的文件。

-n<文件名長(zhǎng)度>  指定文件名長(zhǎng)度,指定的長(zhǎng)度必須大于或等于所有文件中最長(zhǎng)的文件名。
-p<文件名長(zhǎng)度>  與-n參數(shù)相同,但此處的<文件名長(zhǎng)度>包括了文件的路徑。
-w  指定輸出時(shí)欄位的寬度。
-V  顯示版本信息。

2、whereis :用于查找文件。

該指令會(huì)在特定目錄中查找符合條件的文件。這些文件應(yīng)屬于原始代碼、二進(jìn)制文件,或是幫助文件。
該指令只能用于查找二進(jìn)制文件、源代碼文件和man手冊(cè)頁(yè),一般文件的定位需使用locate命令。

whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][文件...]

-b  只查找二進(jìn)制文件。
-B<目錄>  只在設(shè)置的目錄下查找二進(jìn)制文件。
-f  不顯示文件名前的路徑名稱。
-m  只查找說(shuō)明文件。
-M<目錄>  只在設(shè)置的目錄下查找說(shuō)明文件。
-s  只查找原始代碼文件。
-S<目錄>  只在設(shè)置的目錄下查找原始代碼文件。
-u  查找不包含指定類型的文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容