Linux 常用命令汇总及解释。
1、linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
? ?linux上的文件管理類命令有:cat、tac、more、less、head、tail、cp、mv、rm、rmdir、mkdir等
? ?cat:文件文本查看工具
????cat [option]…[file]…
????-n:給顯示的文本行編號?
????
????-E:顯示行結束符$.
????
? ?tac:文件文本查看工具(cat 的倒序)
????tac [option]…[file]…
? ? ?
? ?more:可翻頁查看文件內容,一頁一頁的翻動
????
????注:如果more后面接的文件內容行數大于屏幕輸出的行數時,就會出現類似上圖,最后一行會顯示百分比,表示已經顯示了整個文件的百分多少,且最后一行還可以輸入命令。
????空格鍵:代表向下翻一頁
????Enter:代表向下滾動一行,當到文件的最后一頁時,自動退出more,回到命令行。
????/字符串:代表在這個顯示的內容當中,向下查詢"字符串"這個關鍵字
????:f ? ?:立刻顯示出文件名以及目前顯示的行數
????q ? ?:代表立刻離開more
????b ? ?:往回翻頁
? ?less:可翻頁查看文件內容,一頁一頁的翻動,比more有彈性
????可輸入的命令:
????空格鍵:向下翻動一頁;
????[PageDown]:向下翻動一頁;
????[PageUp]:向上翻動一頁;
????/字符串 :向下查詢"字符串"的功能;
?????字符串 :向上查詢"字符串"的功能;
????n?? ?:重復前一個查詢;
????N? ? :反向重復前一個查詢;
????q? ? :離開less。
? ?head:取出文件中的前面N行
? ? ?head [OPTION]… [FILE]…
????-n # 或者 -#: 顯示幾行,默認顯示10行
????
? ?tail:取出文件中的最后N行
????tail [OPTION]…[FILE]…
????-n #或者- #:顯示幾行,默認顯示10行
????-f:持續檢測后面所接的文件名,要等到按下[ctrl]-c才會結束檢測。
????
????
? ?? 此時需要按下[ctrl]-c才會結束,后者會一直檢測該文件。
? ?cp:復制
????cp [OPTION]… [-T] SOURCE DEST
????cp [OPTION]… SOURCE… DIRECTORY
? ??
????-i:交互式復制,即覆蓋之前提醒用戶確認;
????
????此時按下Y,表示覆蓋,按下N,表示不覆蓋。
????-f:強制覆蓋目標文件;此時不會提示你是否覆蓋了,直接強制覆蓋;
????如:當前目錄下已經有一個passwd文件了,執行如下操作不會有任何提示
????
????-r, -R:遞歸復制目錄;
????如:將/usr/share/man/下的man#文件復制到當前目錄
????
????-d:復制符號鏈接文件本身,而非其指向的源文件;
????以此文件為例,其位于/etc/下,(centos7.1)
????
????
????-a:-dR –preserve=all, archive,用于實現歸檔;
–preserv=
? ? ? mode:權限
? ? ? ownership:屬主和屬組
? ? ? timestamps: 時間戳
? ? ? context:安全標簽
? ? ? xattr:擴展屬性
? ? ? links:符號鏈接
? ? ? all:上述所有屬性
? ?mv:和剪切一個意思?
????mv [OPTION]… [-T] SOURCE DEST
????mv [OPTION]… SOURCE… DIRECTORY
????mv [OPTION]… -t DIRECTORY SOURCE..
????-i:交互式
????-f:強制
? ?rm:刪除文件
????rm [OPTION]… FILE…
????-i:交互
????-f:強制
????-r:遞歸
????
????刪除目錄:rm -rf /PATH/TO/DIR
????建議一定要執行一次:rm -rf /* ? (有驚喜)
????
2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示?
? ??bash的工作特性之命令執行狀態返回值:
????命令執行完后,其狀態返回值保存于bash的特殊變量$?中。
????bash通過狀態返回值來輸出此結果:
????成功:0
????失敗:1-255
????
????注意,命令執行狀態返回值和命令的執行結果間的區別。如上圖,ls的執行結果是顯示當前目錄的文件名,緊接著執行echo命令用于顯示命令的執行狀態返回值,不管ls命令是否成功執行,其都會有相關數據顯示,但是命令執行狀態返回值卻是不同的。
????bash的工作特性之命令行展開:
????~:自動展開為用戶的家目錄,或指定的用戶的家目錄。
????{}:可承載一個以逗號分割的路徑列表,并能夠將其展開為多個路徑。
????
????
關于linux shell 的展開與匹配
花括號展開
在非引號內的內容,如果用花括號包括,而且里面用逗號分隔(至少包含一個逗號,可以是空內容),這樣花括號里的內容會被展開成用空格分開的一個列表,花括號前后可以緊隨前綴和后綴(前后綴都是可選的)。
例如:
echo {a,b,c}
echo hello,{world,pig}
echo rep{,,,,,}eat
注意花括號展開,前綴不能是$,因為${...}在shell中是變量
波浪號展開
從波浪號~到第一個未被引號包含的斜杠/(如果沒有斜杠,則全部算上),作為波浪號前綴。
在波浪號后面的字符串作為一個可能的登錄名:如果為空,被展開成該用戶的HOME變量,如果HOME變量未設置,則用用戶執行shell的主目錄替換。如果不為空,則按照該登錄名的主目錄替換(原文:If this login name is the null string, the tilde is replaced with the value of the?HOME?shell variable. If?HOME?is unset, the home directory of the user executing the shell is substituted instead. Otherwise, the tilde-prefix is replaced with the home directory associated with the specified login name.)
例如:
echo ~ ? # 顯示$HOME內容
HOME=/bin && echo ~ ? # 顯示/bin
unset HOME && echo ~ ? # 顯示當前用戶主目錄
echo ~root ?# 顯示root用戶主目錄
波浪號還可以與加減號和數字,產生一個遍歷文件夾堆棧的效果(關于文件夾堆棧,參考dirs、pushd、popd幾個命令)。
echo ~+ ?# 顯示$PWD
echo ~- ?# 顯示$OLDPWD
echo ~+2 ?# 顯示dirs中第3個內容,索引基于0
echo ~-3 ? # 顯示dirs中倒數第4個內容,索引基于0
如果無法展開,那就會原樣顯示,例如dir堆棧中只有1個內容,那么~+1是無法展開的(這時只有~+0有效)。
Shell參數和變量展開
用$符號開始,后面接著變量名或者花括號括起來的變量名,如果是花括號內以嘆號開頭,那么就是變量名本身。
例如:
echo $PWD ? ?# 顯示PWD對應的值
echo ${PWD} # 顯示PWD對應的值
echo ${!PWD} ? # 顯示“PWD”這個變量名,而不是它的值
echo ${!P*} ? ? ?# 顯示所有以P開頭的環境變量名
如果一個變量名不存在,就創建它。
echo ${HELLO:=hello} ?# 如果HELLO不存在,就用hello給它賦值,否則直接輸出$HELLO的值
命令替換
將一些命令執行后,結果替換到該命令語句中,可以用$()和``括住的方法
命令替換是可以嵌套的。
例如:
echo `date`
echo $(date)
echo $(echo `date` |awk '{print $4}')
算術展開
放在$(( ))中的表達式會被計算,其中變量會被求值,例如:
a=1 && b=3 && echo $(($a+$b))
如果是數字,0開頭的8進制,0x開頭的16進制,其它進制用Base#number的方式
可支持2~64進制,如果進制小于等于36,可以用a-z或A-Z表示10-35,如果進制大于36,則a-z表示10-35,A-Z表示36-61,@表示62,_表示63
例如:
echo $((16#32)) ?# 16進制的32,輸出50
echo $((64#@_)) ?# 輸出4031 = 62 * 64 + 63
用$[]也可以算術展開,但是不要和測試條件[]混淆了
例如:
echo $[1+4]
進程替換
>(LIST)或<(LIST)
LIST是一個命令,它執行時會從一個FIFO或/dev/fd/xxx這樣的地方讀取(對應>(LIST))或輸出(對應<(LIST)),而這個FIFO或/dev/fd/xxx作為外面命令的一個參數。
例如:
echo -e 'haha hehe\nhaha2 hehe2' >a.txt ? ?# 生成了一個a.txt文件,里面有兩行
awk '{ print $2 }' <(cat a.txt) ? # 先為<(cat a.txt)生成了一個/dev/fd/63,關聯到cat a.txt,也就是說cat a.txt的輸出都被定向到/dev/fd/63這個文件了,然后外圍的命令執行的是awk '{ print $2 }' /dev/fd/63,這樣打印的就是hehe和hehe2。
字詞分隔
$IFS里面的任何一個字符都可以作為分隔符,平時我們默認的就是回車、空格、tab符號。
文件名展開
進行字詞分隔后,如果不指定-f選項,shell會搜索"*","?","[",如果遇到了,就會認為是一個帶pattern的word,然后用字典序將符合的所有文件名替換過去,如果沒有文件名匹配:1?shell的nullglob選項關閉,則不進行文件名展開,保留word原樣;2 shell的nullglob打開,則移除這個word。如果shell的nocaseglob選項打開,則忽略大小寫。
當匹配文件名時(這里指不包括文件夾),除非shell的dotglob被設置,否則.或./開頭的文件都必須顯示指定,例如:
ls * ? # 列出當前文件夾中所有不以"."開頭的文件
ls .* ?#?列出當前文件夾中所有以"."開頭的文件
當匹配文件名時,"/"必需顯示匹配,例如:
ls ./* 和 ls ./*/*是不同的。
其它情況下,"."和普通字符一樣,例如:
*.txt和*txt都可以匹配a.txt
還有一個系統變量GLOBIGNORE,如果一個文件名匹配了一個pattern word,但是它也匹配了GLOBIGNORE,則它會被忽略,不過兩個特殊文件一定會被忽略,就是"."和".."。
如果GLOBIGNORE打開,那么dotglob選項也會自動打開,這樣會導致當你ls *時,其他以"."開頭的文件也會被match,如果想忽略"."開頭的文件,可以在GLOBIGNORE里面添加一個".*"的匹配。如果GLOBIGNORE未設定,則dotglob關閉。
3、請使用命令行展開功能來完成以下練習?
? (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
????~]#mkdir -p {a,b}_{c,d}
????
? (2)、創建/tmp/mylinux目錄下的:
? mylinux/
? ? ├── bin
? ? ├── boot
? ? │ ? └── grub
? ? ├── dev
? ? ├── etc
? ? │ ? ├── rc.d
? ? │ ? │ ? └── init.d
? ? │ ? └── sysconfig
? ? │ ? ? ? └── network-scripts
? ? ├── lib
? ? │ ? └── modules
? ? ├── lib64
? ? ├── proc
? ? ├── sbin
? ? ├── sys
? ? ├── tmp
? ? ├── usr
? ? │ ? └── local
? ? │ ? ? ? ├── bin
? ? │ ? ? ? └── sbin
? ? └── var
? ? ? ? ├── lock
? ? ? ? ├── log
? ? ? ? └── run
????~]#mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib
/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
????
4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息?
???
元數據被定義為:描述數據的數據,對數據及信息資源的描述性信息。
元數據(Metadata)是描述其它數據的數據(data about other data),或者說是用于提供某種資源的有關信息的結構數據(structured data)。元數據是描述信息資源或數據等對象的數據,其使用目的在于:識別資源;評價資源;追蹤資源在使用過程中的變化;實現簡單高效地管理大量網絡化數據;實現信息資源的有效發現、查找、一體化組織和對使用資源的有效管理。 元數據的基本特點主要有:
a)元數據一經建立,便可共享。元數據的結構和完整性依賴于信息資源的價值和使用環境;元數據的開發與利用環境往往是一個變化的分布式環境;任何一種格式都不可能完全滿足不同團體的不同需要;
b)元數據首先是一種編碼體系。元數據是用來描述數字化信息資源,特別是網絡信息資源的編碼體系,這導致了元數據和傳統數據編碼體系的根本區別;元數據的最為重要的特征和功能是為數字化信息資源建立一種機器可理解框架。
元數據體系構建了電子政務的邏輯框架和基本模型,從而決定了電子政務的功能特征、運行模式和系統運行的總體性能。電子政務的運作都基于元數據來實現。其主要作用有:描述功能、整合功能、控制功能和代理功能。
由于元數據也是數據,因此可以用類似數據的方法在數據庫中進行存儲和獲取。如果提供數據元的組織同時提供描述數據元的元數據,將會使數據元的使用變得準確而高效。用戶在使用數據時可以首先查看其元數據以便能夠獲取自己所需的信息。
數據倉庫
在數據倉庫領域中,元數據按用途分成技術元數據和業務元數據。首先,元數據能提供基于用戶的信息,如記錄數據項的業務描述信息的元數據能幫助用戶使用數據。其次,元數據能支持系統對數據的管理和維護,如關于數據項存儲方法的元數據能支持系統以最有效的方式訪問數據。具體來說,在數據倉庫系統中,元數據機制主要支持以下五類系統管理功能:
(1)描述哪些數據在數據倉庫中;
(2)定義要進入數據倉庫中的數據和從數據倉庫中產生的數據;
(3)記錄根據業務事件發生而隨之進行的數據抽取工作時間安排;
(4)記錄并檢測系統數據一致性的要求和執行情況;
(5)衡量數據質量。
?文件的數據分兩種:一種元數據,既屬性數據;一種就是數據本身;
????可以用命令stat查看文件的元數據;
????
????file:文件名;
????size:文件大小
????block:文件占了多少個數據塊
????IO Block:文件所占數據塊的塊大小
????Device:硬件,既說明該文件在硬盤的那個柱面
????Inode:節點號
????links:鏈接
????Access(第一個):權限
????Uid:該文件所屬的屬主
????Gid:該文件所屬的屬組
????context:安全上下文
????Access(第二個):文件上一次的訪問時間
????Modify:文件上一次修改的時間
????Change:文件上一次屬性更改的時間
????可以使用touch命令更改文件的時間戳:
????touch [OPTION]… FILE..。
????-c: 指定的文件路徑不存在時不予創建;
????-a: 僅修改access time;
????-m:僅修改modify time;
????-t STAMP
[[CC]YY]MMDDhhmm[.ss]
????~]#touch FILE
????這條命令會將文件的三個時間一并更改成當前的時間
? ? 如下三個分別更改atime,mtime,三個時間一起更改。
????
????
????
5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
????命令別名使用alias命令。
????~]#alias NAME='COMMAND'
????
????在一個命令中引用另一個命令的執行結果也是bash的特性之一,引用。
????方法:$(COMMAND) 或者 `COMMAND`
????
6、顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄?
? ?ls -l ?/var/1*[0-9]*[a-z]
7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄?
????~]#ls -d /etc/[0-9]*[^0-9]
8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄?
????~]#ls -d /etc/[^a-z][a-z]*
9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22?
????~]#touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
????
10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中?
????~]#mkdir /tmp/mytest1
????~]#cp -r /etc/p*[^0-9] /tmp/mytest1
????
11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中?
????~]#mkdir /tmp/test2
????~]#cp -r /etc/*.d /tmp/mytest2
????
12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中?
????~]#mkdir /tmp/mytest3
????~]#cp /etc/[lmn]*.conf /tmp/mytest3
????
轉載于:https://blog.51cto.com/10997683/1855559
總結
以上是生活随笔為你收集整理的Linux 常用命令汇总及解释。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: yii2使用 db log
- 下一篇: VHDL学习:利用Quartus自带库3