學習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:強制
-b:目標存在,覆蓋前先備份
刪除
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:遞歸刪除父空目錄
-v:顯示詳細信息
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”admin@magedu.com<<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”user@example.com
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)
根據文件大小來查找
- END -