學習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
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表結構**
一個節點(索引節點)是在一個表項,包含有關檔案的資訊(中繼資料),包括:
檔案類型,權限,UID,GID
連結數(指向這個檔案名路徑名稱個數)
該檔案的大小和不同的時間戳
指向磁盤上檔案的資料塊指針
有關檔案的其他資料
硬連結和軟連結(符号連結)
硬連結
-建立硬連結會增加額外的記錄項以引用檔案
-對應于同一檔案系統上一個實體檔案
-每個目錄引用相同的inode号
-建立時連結數遞增
-删除檔案時:
rm指令遞減計數的連結
檔案要存在,至少有一個連結數
當連結數為零時,該檔案被删除
-不能跨越驅動器或分區
-文法:
In filename [linkname]
符号連結(軟連結)
-一個符号連結指向另一個檔案
-IS-l的顯示連結的名稱和引用的檔案
-一個符号連結的内容是它引用檔案的名稱
-可以對目标進行
-可以跨分區
-指向的是另一個檔案的路徑;其大小為指向的路徑字元串的長度,不增加或減少目标檔案inode的引用計數;
In-s filename [linkname]
硬連結:對一個檔案起多個名字
軟連結:原始檔案一般路徑用相對路徑,相對路徑一定相對于軟連結檔案的路徑
硬連結和軟連結的差別:
(1) 本質:硬連結是一個檔案多個名字,而軟連結一個檔案對應多個快捷方式。
(2) 跨分區:硬連結不可以跨分區,軟連結可以跨分區。
(3) 連結數:硬連結會增加連結數,軟連結不增加。
(4) 節點編号:硬連結相同,軟連結不相同。
(5) 删掉原始檔案是否會影響到連結檔案?硬連結各個檔案時平級的關系,該通路還能通路,而軟連結是一種依賴關系,删除原始檔案後連結會失效。
(6) 目錄:硬連結不支援目錄,軟連結支援目錄。
确定檔案内容
-檔案内容可以包含多種類型的資料
-檢查檔案的類型,然後确定适當的打開指令或應用程式使用
-file[options]…
-常用選項:
-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)
根據檔案大小來查找
更多學習資料:
Java經典面試題整理及答案詳解(一) Java經典面試題整理及答案詳解(二) Java經典面試題整理及答案詳解(三) Java經典面試題整理及答案詳解(四) Java經典面試題整理及答案詳解(五) Java經典面試題整理及答案詳解(六) Java經典面試題整理及答案詳解(七) Java經典面試題整理及答案詳解(八) Java經典面試題整理及答案詳解(九) 前端工程師必須掌握的28個知識點|前端一面必備 合輯 | 面試必備!18篇Java面試疑難點詳解 16道超詳細JavaWeb面試題整理更多專業知識,面試技巧就在面試一點通,持續更新中……
感謝浏覽~
本文内容來源:
阿裡雲開發者社群-學習中心-Linux運維學習路線