當前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式招聘 > 嵌入式面試題 > 面試專用Linux知識點
絕對路徑和相對路徑
絕對路徑
以正斜杠開始
完整的文件的位置路徑
可用于任何想置頂一個文件名的時候
相對路徑
不以斜線開始
置頂相對于當前工作目錄或某目錄的位置
可以作為一個簡短的形式指定一個文件名
-基名:basename,就是文件本身的名字
-目錄名:dirname ,就是它所在的文件夾名
更改目錄
cd 改變目錄
使用絕對或相對路徑
cd/home/wang
cd home/wang
切換至父目錄:cd
切換至以前的工作目錄:cd-
選項:-P
相關(guān)環(huán)境變量:
PWD:當前目錄路徑
OLDPWD:上一次目錄路徑
文件通配符
*匹配零個或多個字符
?匹配任何單個字符
~當前用戶家目錄
~mage用戶mage家目錄
~+ 當前工作目錄
~- 前一個工作目錄
[0-9]匹配數(shù)字范圍
[a-z]:字母
[wang]匹配列表中的任何一個字符
[^wang]匹配列表中的所有字符以外的字符
創(chuàng)建空文件和刷新時間
touch命令
格式:touch[OPTION]…FILE…
-a 僅改變 atime和ctime
-m 僅改變 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的時間戳
-c 如果文件不存在,則不予創(chuàng)建
復(fù)制文件和目錄cp
cp常用選項
-i:覆蓋前提示, -n:不覆蓋,注意兩者順序
-r,-R:遞歸復(fù)制目錄及內(nèi)部的所有內(nèi)容
-a:歸檔,相當于-dR –preserv=all
-d:--no-dereference—preserv=links不復(fù)制原文件,只復(fù)制鏈接名
-preserv[=ATTR_LIST]
mode:權(quán)限
ownership:屬主屬組
cp選項
-p:等同—preserv=mode,ownership,timestamp
-v:--verbose
-f:--force
-u:--update只復(fù)制源比目標更新文件或者目標不存在的文件
-b:目標存在,覆蓋前先備份
--backup=numbered目標存在,覆蓋前先備份加數(shù)字后綴
移動和重命名文件
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:指定顯示的層級數(shù)目
-p pattern:只顯示由指定pattern匹配到的路徑
mkdir創(chuàng)建目錄
-p:存在于不報錯,且可自動創(chuàng)建所需的各目錄
-v:顯示詳細信息
-m MODE:創(chuàng)建目錄時直接指定權(quán)限
rmdir 刪除空目錄
-p:遞歸刪除父空目錄
-v:顯示詳細信息
索引節(jié)點
**inode(index node)表中包含文件系統(tǒng)所有文件列表
inode表結(jié)構(gòu)**
一個節(jié)點(索引節(jié)點)是在一個表項,包含有關(guān)文件的信息(元數(shù)據(jù)),包括:
文件類型,權(quán)限,UID,GID
鏈接數(shù)(指向這個文件名路徑名稱個數(shù))
該文件的大小和不同的時間戳
指向磁盤上文件的數(shù)據(jù)塊指針
有關(guān)文件的其他數(shù)據(jù)
硬鏈接和軟鏈接(符號鏈接)
硬鏈接
-創(chuàng)建硬鏈接會增加額外的記錄項以引用文件
-對應(yīng)于同一文件系統(tǒng)上一個物理文件
-每個目錄引用相同的inode號
-創(chuàng)建時鏈接數(shù)遞增
-刪除文件時:
rm命令遞減計數(shù)的鏈接
文件要存在,至少有一個鏈接數(shù)
當鏈接數(shù)為零時,該文件被刪除
-不能跨越驅(qū)動器或分區(qū)
-語法:
In filename [linkname]
符號鏈接(軟鏈接)
-一個符號鏈接指向另一個文件
-IS-l的顯示鏈接的名稱和引用的文件
-一個符號鏈接的內(nèi)容是它引用文件的名稱
-可以對目標進行
-可以跨分區(qū)
-指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度,不增加或減少目標文件inode的引用計數(shù);
-語法:
In-s filename [linkname]
硬鏈接:對一個文件起多個名字
軟鏈接:原始文件一般路徑用相對路徑,相對路徑一定相對于軟鏈接文件的路徑
硬鏈接和軟鏈接的區(qū)別:
(1) 本質(zhì):硬鏈接是一個文件多個名字,而軟鏈接一個文件對應(yīng)多個快捷方式。
(2) 跨分區(qū):硬鏈接不可以跨分區(qū),軟鏈接可以跨分區(qū)。
(3) 鏈接數(shù):硬鏈接會增加鏈接數(shù),軟鏈接不增加。
(4) 節(jié)點編號:硬鏈接相同,軟鏈接不相同。
(5) 刪掉原始文件是否會影響到鏈接文件?硬鏈接各個文件時平級的關(guān)系,該訪問還能訪問,而軟鏈接是一種依賴關(guān)系,刪除原始文件后鏈接會失效。
(6) 目錄:硬鏈接不支持目錄,軟鏈接支持目錄。
確定文件內(nèi)容
-文件內(nèi)容可以包含多種類型的數(shù)據(jù)
-檢查文件的類型,然后確定適當?shù)拇蜷_命令或應(yīng)用程序使用
-file[options]…
-常用選項:
-b列出文件辨識結(jié)果時,不顯示文件名稱
-f filelist列出文件filelist中文件名的文件類型
-F使用指定分隔符號替換輸出文件后默認的“:”分隔符
-L查看對應(yīng)軟鏈接對應(yīng)文件的文件類型
--help顯示命令在線幫助
標準輸入和輸出
程序:指令+數(shù)據(jù)
讀入數(shù)據(jù):input
輸出數(shù)據(jù):output
打開的文件都有一個fd:file descriptor(文件描述符)
Linux給程序提供三種I/O設(shè)備
-標準輸入(STDIN)-0 默認接受來自鍵盤的輸入
-標準輸出(STDOUT)-1 默認輸出到終端窗口
-標準錯誤(STDERR)-2 默認輸出到終端窗口
I/O重定向:改變默認位置
把輸出和錯誤重新定向到文件
STDOUT和STDERR可以被重新定向到文件
命令 操作符號 文件名
支持的操作符號包括:
>把STDOUT重新定向到文件
2>把STDERR重新定向到文件
&>把所有輸出重定到文件
>文件內(nèi)容會被覆蓋
set-C 禁止將內(nèi)容覆蓋已有文件,但可追加
>file強制覆蓋
Set+C允許覆蓋
>>原有內(nèi)容基礎(chǔ)上,追加內(nèi)容
2> 覆蓋重定向錯誤輸出數(shù)據(jù)流
2>>追加重定向錯誤輸出數(shù)據(jù)流
標準輸出和錯誤輸出各自定向至不同位置
COMMAND>/path/to/file.out2>/path/to/error.out
合并標準輸出和錯誤輸出為同一個數(shù)據(jù)流進行重定向
-&>覆蓋重定向
-&>>追加重定向
-COMMAND>/path/to/file.out2>&1(順序很重要)
-COMMAND>>/path/to/file.out2>&1
():合并多個程序的STDOUT
(cal2007;cal2008)>all.txt
tr命令
tr轉(zhuǎn)換和刪除字符
tr[OPTION]…SET1[SET2]
選項
-c -C –complement:取字符集的補集
-d –delete:刪除所有屬于第一字符集的字符
-s –squeeze-repeats:把連續(xù)重復(fù)的字符以單獨一個字符表示
-t –truncate-set1:將第一個字符集對應(yīng)字符轉(zhuǎn)化為第二個字符集對應(yīng)的字符
[:alnum:]:字母和數(shù)字[:alpha:]:字母[:cntrl:]:控制(非打。┳址
[:digit:]:數(shù)字[:graph:]:圖形字符[:lower:]:小寫字母[:print:]:可打印字符
[:punct:]:標點符號[:space:]:空白字符[:upper:]:大寫字母
[:xdigit:]:十六進制字符
把多行發(fā)送給STDIN
使用“<<終止詞”命令從鍵盤把多行重導(dǎo)向給STDIN
-直到 終止詞 位置的所有文本都發(fā)送給STDIN
-有時被稱為就地文本(heretext)
管道
管道(使用符號“|”表示)用來連接命令
命令1|命令2|命令3…
-將命令1 的STDOUT發(fā)送給命令2 的STDIN,命令2 的STDOUT發(fā)送到命令3的STDIN
-STDERR默認不能通過管道轉(zhuǎn)發(fā),可利用2>&1或|&實現(xiàn)
-最后一個命令會在當前shell進程的子shell進程中執(zhí)行用來
-組合多種工具的功能
Is | tr ‘a-z’ ‘A-Z’
less:一頁一頁地查看輸入
ls -l/etc|less
mail:通過電子郵件發(fā)送輸入
echo“test email”|mail -s“test”user@example.com
lpr:把輸入發(fā)送給打印機
echo“test print”| lpr -P printer_name
管道中 – 符號
示例:
將/home里面的文件打包,但打包的數(shù)據(jù)不是記錄到文件,而是傳達到stdout,經(jīng)過管道后,將tar -cvf- /home 傳送給后面的tar -xvf-,后面的這個- 則是取前一個命令的stdout,因此,就不需要使用臨時file了
tar -cvf-/home|tar-xvf-
重定向到多個目標
命令1|tee[-a]文件名|命令2
把命令1的STDOUT保存在文件中,做為命令2的輸入
-a追加
使用
-保存不同階段的輸出
-復(fù)雜管道的故障排除
-同時查看和記錄輸出
文件查找
在文件系統(tǒng)上查找符合條件的文件
文件查找:locate,find
非實時查找(數(shù)據(jù)庫查找):locate
實時查找:find
Locate命令
locate KEYWORD
有用的選項
-i 不區(qū)分大小寫的搜索
-n N 只列舉前N個匹配項目
-r 使用正則表達式
示例
搜索名稱或路徑中帶有“conf”的文件
locate conf
使用Regex來搜索以“.conf”結(jié)尾的文件
locate -r ‘.conf$’
find命令
實時查找工具,通過遍歷指定路徑完成文件查找
工作特點:
-查找速度略慢
-精確查找
-實時查找
-可能只搜索用戶具備讀取和執(zhí)行權(quán)限的目錄
語法:
find[OPTION]…查找路徑[處理動作]
查找路徑:指定具體目標路徑;默認為當前目錄
查找條件:指定的查找標準,可以文件名、大小、類型、權(quán)限等標準進行;默認找出指定路徑下的所有文件
處理動作:對符合條件的文件做操作,默認輸出至屏幕
查找條件
指搜索層級
-maxdepth level 最大搜索目錄深度,指定目錄為第1級
-mindepth level 最小搜索目錄深度
先處理目錄內(nèi)的文件,再處理目錄
-depth
根據(jù)文件名和inode查找
-name“文件名稱”:支持使用glob
*,?,[],[^]
-iname“文件名稱”:不區(qū)分字母大小寫
-inum n 按inode號查找
-samefile name 相同inode號的文件
-links n 鏈接數(shù)為n的文件
-regex “PATTERN”:以PATTERN匹配整個文件路徑,而非文件名稱
根據(jù)屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶(UID)的文件
-group GRPNAME:查找屬組為指定組(GID)的文件
-uid UserID:查找屬主為指定的UID號文件
-gid GroupID:查找屬組為指定的GID號的文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
根據(jù)文件類型查找
type TYPE:
f:普通文件
d:目錄文件
l:符號鏈接文件
s:套接字文件
b:塊設(shè)備文件
c:字符設(shè)備文件
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)
根據(jù)文件大小來查找
-size [+|-]#UNIT
常用單位:k,M,G, c (byte)
#UNIT:(#-1,#]
如:6k表示(5k,6k]
-#UNIT:[O,#-1]
如:-6k表示[0,5k]
+#UNIT::(# ,∞)
如:+6k表示(6k,∞)