天天看點

Linux純幹貨知識總結|面試專用

學習Linux的重要性相信不用我多說大家也明白,以下是小編總結的常用Linux基礎知識以及面試常問的Linux指令,希望能幫助大家更規範地了解和使用~

絕對路徑和相對路徑

絕對路徑

以正斜杠開始

完整的檔案的位置路徑

可用于任何想置頂一個檔案名的時候

相對路徑

不以斜線開始

置頂相對于目前工作目錄或某目錄的位置

可以作為一個簡短的形式指定一個檔案名

-基名:basename,就是檔案本身的名字

-目錄名:dirname ,就是它所在的檔案夾名

更改目錄

cd 改變目錄

使用絕對或相對路徑

cd/home/wang

cd home/wang

切換至父目錄:cd

切換至以前的工作目錄:cd-

選項:-P

相關環境變量:

PWD:目前目錄路徑

OLDPWD:上一次目錄路徑

檔案通配符

*比對零個或多個字元

?比對任何單個字元

~目前使用者家目錄

~mage使用者mage家目錄

~+ 目前工作目錄

~- 前一個工作目錄

[0-9]比對數字範圍

[a-z]:字母

[wang]比對清單中的任何一個字元

[^wang]比對清單中的所有字元以外的字元

建立空檔案和重新整理時間

touch指令

格式:touch[OPTION]…FILE…

-a 僅改變 atime和ctime

-m 僅改變 mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss]

指定atime和mtime的時間戳

-c 如果檔案不存在,則不予建立

複制檔案和目錄cp

Linux純幹貨知識總結|面試專用

cp常用選項

-i:覆寫前提示, -n:不覆寫,注意兩者順序

-r,-R:遞歸複制目錄及内部的所有内容

-a:歸檔,相當于-dR –preserv=all

-d:--no-dereference—preserv=links不複制原檔案,隻複制連結名

-preserv[=ATTR_LIST]

mode:權限

ownership:屬主屬組

cp選項

-p:等同—preserv=mode,ownership,timestamp

-v:--verbose

-f:--force

-u:--update隻複制源比目标更新檔案或者目标不存在的檔案

-b:目标存在,覆寫前先備份

--backup=numbered目标存在,覆寫前先備份加數字字尾

移動和重命名檔案

mv[OPTION]…[-T]SOURCE DEST

mv[OPTION]…SOURCE…DIRECTORY

mv[option]…-t DIRECTORY SOURCE…

常用選項:

-i:互動式

-f:強制

删除

rm[OPTION]…FILI…

(工作中建議大家不要用rm指令)

-i 互動式

-f 強制删除

-r 遞歸

--no-preserve-root 删除/

示例:

rm -rf /*

目錄操作

tree顯示目錄樹

-d:隻顯示目錄

-L level:指定顯示的層級數目

-p pattern:隻顯示由指定pattern比對到的路徑

mkdir建立目錄

-p:存在于不報錯,且可自動建立所需的各目錄

-v:顯示詳細資訊

-m MODE:建立目錄時直接指定權限

rmdir 删除空目錄

-p:遞歸删除父空目錄

rm -r 遞歸删除目錄樹

索引節點

**inode(index node)表中包含檔案系統所有檔案清單

inode表結構**

Linux純幹貨知識總結|面試專用
Linux純幹貨知識總結|面試專用

一個節點(索引節點)是在一個表項,包含有關檔案的資訊(中繼資料),包括:

檔案類型,權限,UID,GID

連結數(指向這個檔案名路徑名稱個數)

該檔案的大小和不同的時間戳

指向磁盤上檔案的資料塊指針

有關檔案的其他資料

硬連結和軟連結(符号連結)

硬連結

-建立硬連結會增加額外的記錄項以引用檔案

-對應于同一檔案系統上一個實體檔案

-每個目錄引用相同的inode号

-建立時連結數遞增

-删除檔案時:

rm指令遞減計數的連結

檔案要存在,至少有一個連結數

當連結數為零時,該檔案被删除

-不能跨越驅動器或分區

-文法:

In filename [linkname]

符号連結(軟連結)

-一個符号連結指向另一個檔案

-IS-l的顯示連結的名稱和引用的檔案

-一個符号連結的内容是它引用檔案的名稱

-可以對目标進行

-可以跨分區

-指向的是另一個檔案的路徑;其大小為指向的路徑字元串的長度,不增加或減少目标檔案inode的引用計數;

In-s filename [linkname]

硬連結:對一個檔案起多個名字

軟連結:原始檔案一般路徑用相對路徑,相對路徑一定相對于軟連結檔案的路徑

硬連結和軟連結的差別:

(1) 本質:硬連結是一個檔案多個名字,而軟連結一個檔案對應多個快捷方式。

(2) 跨分區:硬連結不可以跨分區,軟連結可以跨分區。

(3) 連結數:硬連結會增加連結數,軟連結不增加。

(4) 節點編号:硬連結相同,軟連結不相同。

(5) 删掉原始檔案是否會影響到連結檔案?硬連結各個檔案時平級的關系,該通路還能通路,而軟連結是一種依賴關系,删除原始檔案後連結會失效。

(6) 目錄:硬連結不支援目錄,軟連結支援目錄。

确定檔案内容

-檔案内容可以包含多種類型的資料

-檢查檔案的類型,然後确定适當的打開指令或應用程式使用

-file[options]…

-常用選項:

Linux純幹貨知識總結|面試專用

-b列出檔案辨識結果時,不顯示檔案名稱

-f filelist列出檔案filelist中檔案名的檔案類型

-F使用指定分隔符号替換輸出檔案後預設的“:”分隔符

-L檢視對應軟連結對應檔案的檔案類型

--help顯示指令線上幫助

标準輸入和輸出

程式:指令+資料

讀入資料:input

輸出資料:output

打開的檔案都有一個fd:file descriptor(檔案描述符)

Linux給程式提供三種I/O裝置

-标準輸入(STDIN)-0 預設接受來自鍵盤的輸入

-标準輸出(STDOUT)-1 預設輸出到終端視窗

-标準錯誤(STDERR)-2 預設輸出到終端視窗

I/O重定向:改變預設位置

把輸出和錯誤重新定向到檔案

STDOUT和STDERR可以被重新定向到檔案

指令 操作符号 檔案名

支援的操作符号包括:

>把STDOUT重新定向到檔案

2>把STDERR重新定向到檔案

&>把所有輸出重定到檔案

>檔案内容會被覆寫

set-C 禁止将内容覆寫已有檔案,但可追加

>file強制覆寫

Set+C允許覆寫

>>原有内容基礎上,追加内容

2> 覆寫重定向錯誤輸出資料流

2>>追加重定向錯誤輸出資料流

标準輸出和錯誤輸出各自定向至不同位置

COMMAND>/path/to/file.out2>/path/to/error.out

合并标準輸出和錯誤輸出為同一個資料流進行重定向

-&>覆寫重定向

-&>>追加重定向

-COMMAND>/path/to/file.out2>&1(順序很重要)

-COMMAND>>/path/to/file.out2>&1

():合并多個程式的STDOUT

(cal2007;cal2008)>all.txt

tr指令

  • tr轉換和删除字元
  • tr[OPTION]…SET1[SET2]
  • 選項
    • -c -C –complement:取字元集的補集
    • -d –delete:删除所有屬于第一字元集的字元
    • -s –squeeze-repeats:把連續重複的字元以單獨一個字元表示
    • -t –truncate-set1:将第一個字元集對應字元轉化為第二個字元集對應的字元
  • [:alnum:]:字母和數字[:alpha:]:字母[:cntrl:]:控制(非列印)字元
  • [:digit:]:數字[:graph:]:圖形字元[:lower:]:小寫字母[:print:]:可列印字元
  • [:punct:]:标點符号[:space:]:空白字元[:upper:]:大寫字母
  • [:xdigit:]:十六進制字元

把多行發送給STDIN

使用“<<終止詞”指令從鍵盤把多行重導向給STDIN

-直到 終止詞 位置的所有文本都發送給STDIN

-有時被稱為就地文本(heretext)

Mail -s“Please Call”[email protected]<<END
>Hi Wang
>
>Please give me a call when you get in.We may need
>to do some maintenance on server1.
>
>Details when you are on -site
>Zhang
>END           

管道

管道(使用符号“|”表示)用來連接配接指令

指令1|指令2|指令3…

-将指令1 的STDOUT發送給指令2 的STDIN,指令2 的STDOUT發送到指令3的STDIN

-STDERR預設不能通過管道轉發,可利用2>&1或|&實作

-最後一個指令會在目前shell程序的子shell程序中執行用來

-組合多種工具的功能

Is | tr ‘a-z’ ‘A-Z’

less:一頁一頁地檢視輸入

ls -l/etc|less

mail:通過電子郵件發送輸入

echo“test email”|mail -s“test”[email protected]

lpr:把輸入發送給列印機

echo“test print”| lpr -P printer_name

管道中 – 符号

将/home裡面的檔案打包,但打包的資料不是記錄到檔案,而是傳達到stdout,經過管道後,将tar -cvf- /home 傳送給後面的tar -xvf-,後面的這個- 則是取前一個指令的stdout,是以,就不需要使用臨時file了

tar -cvf-/home|tar-xvf-

重定向到多個目标

指令1|tee[-a]檔案名|指令2

把指令1的STDOUT儲存在檔案中,做為指令2的輸入

-a追加

使用

-儲存不同階段的輸出

-複雜管道的故障排除

-同時檢視和記錄輸出

檔案查找

在檔案系統上查找符合條件的檔案

檔案查找:locate,find

非實時查找(資料庫查找):locate

實時查找:find

Locate指令

locate KEYWORD

有用的選項

-i 不區分大小寫的搜尋

-n N 隻列舉前N個比對項目

-r 使用正規表達式

示例

搜尋名稱或路徑中帶有“conf”的檔案

locate conf

使用Regex來搜尋以“.conf”結尾的檔案

locate -r ‘.conf$’

find指令

實時查找工具,通過周遊指定路徑完成檔案查找

工作特點:

-查找速度略慢

-精确查找

-實時查找

-可能隻搜尋使用者具備讀取和執行權限的目錄

文法:

find[OPTION]…查找路徑[處理動作]

查找路徑:指定具體目标路徑;預設為目前目錄

查找條件:指定的查找标準,可以檔案名、大小、類型、權限等标準進行;預設找出指定路徑下的所有檔案

處理動作:對符合條件的檔案做操作,預設輸出至螢幕

查找條件

指搜尋層級

-maxdepth level 最大搜尋目錄深度,指定目錄為第1級

-mindepth level 最小搜尋目錄深度

先處理目錄内的檔案,再處理目錄

-depth

根據檔案名和inode查找:

-name“檔案名稱”:支援使用glob

*,?,[],[^]

-iname“檔案名稱”:不區分字母大小寫

-inum n 按inode号查找

-samefile name 相同inode号的檔案

-links n 連結數為n的檔案

-regex “PATTERN”:以PATTERN比對整個檔案路徑,而非檔案名稱

根據屬主、屬組查找:

-user USERNAME:查找屬主為指定使用者(UID)的檔案

-group GRPNAME:查找屬組為指定組(GID)的檔案

-uid UserID:查找屬主為指定的UID号檔案

-gid GroupID:查找屬組為指定的GID号的檔案

-nouser:查找沒有屬主的檔案

-nogroup:查找沒有屬組的檔案

根據檔案類型查找“

type TYPE:

f:普通檔案

d:目錄檔案

l:符号連結檔案

s:套接字檔案

b:塊裝置檔案

c:字元裝置檔案

p:管道檔案

空檔案或目錄

-empty

Find/app -type d -empty

組合條件:

與:-a

或:-o

非:-not,!

德·摩根定律

(非A)或(非B)=非(A且B)

(非A)且(非B)=非(A或B)

!A -a!B=!(A -o B)

!A -0!B=!(A -a B)

根據檔案大小來查找

Linux純幹貨知識總結|面試專用

更多學習資料:

Java經典面試題整理及答案詳解(一) Java經典面試題整理及答案詳解(二) Java經典面試題整理及答案詳解(三) Java經典面試題整理及答案詳解(四) Java經典面試題整理及答案詳解(五) Java經典面試題整理及答案詳解(六) Java經典面試題整理及答案詳解(七) Java經典面試題整理及答案詳解(八) Java經典面試題整理及答案詳解(九) 前端工程師必須掌握的28個知識點|前端一面必備 合輯 | 面試必備!18篇Java面試疑難點詳解 16道超詳細JavaWeb面試題整理

更多專業知識,面試技巧就在面試一點通,持續更新中……

感謝浏覽~

本文内容來源:

阿裡雲開發者社群-學習中心-Linux運維學習路線