1cplinux
(複製文件或目錄)git
cp語法:正則表達式
cp 源文件(source) 目標文件(destination)shell
cp [options]suoucebash
例題一:用root身份將主文件夾下的.bashrc複製到/tmp下,並改名爲bashrcless
例題二:切換目錄到/tmp。並將/var/log/wtmp複製到/tmp且查看屬性ide
例題三:複製/etc/這個目錄的全部內容到/tmp下面。工具
2rmui
(移除文件和目錄)spa
rm[fir]
-f :就是force 的意思,忽略不存在的文件,不會發出警告
-i: 互動模式,在刪除前會詢問用戶是否操做
-r:遞歸刪除。最經常使用在目錄的刪除,這是很是危險的參數
例題一:將剛纔在cp中建立的bashrc刪除。
3mv
(移動文件於目錄,或改名)
mv [-fiu]source destination
mv [options] source1 source2 .........directory
-f:force強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋
-i: 若目標文件已經存在,就會詢問是否覆蓋
-u: 如目標文件已經存在,且source 比較新,纔會更新
例題一:複製一個文件,建立一個目錄,將文件 移動到目錄中
例題二:將剛纔的目錄名稱重命名爲mvtest2,在建立二個文件,在所有移動到/tmp/mvtest2。
4cat
[AbEnTv]
例題一:查看/etc/issue,而且加上行號,而後空白行在不加行號
5tac
(反向列示)
6nl
(添加行號打印)能夠將輸出的內容自動加上行號
可翻頁查看的有more 和less
數據的選取有head 和tail
7head(取出前面幾行默認十行)
-n 後面接數字,表明幾行的意思
head -n 20 /etc/man.config 顯示文件的前20行
8tail (取出後面的幾行)
tail [-n number]文件
-n 後面接數字
-f 表示持續檢測後面所接的文件名,要等到按下CTRL -c 纔會中止
例題一:若是我不知道/etc/man.config有幾行,卻只想要列出100行以後的數據那
9mtime:
當該文件的內容數據被修改時,就會更新這個時間,內容數據指的時文件的內容,而不是文件的屬性或權限。
10Stime
當該文件的狀態改變時,就會更新這個時間,舉例來講,像是權限屬性被改變了,就會更新這個時間。
11atime
當文件的內容被取用時,就會更新這個讀取時間,舉例來講,咱們用cat讀取/etc/man.config,就會更新該文件的atime了。
12touch [-acdmt]文件
-a 僅修改訪問時間
-c 僅修改文件的時間,如該文件不存在則不建立新文件
-d 後面能夠接欲修改的日期而不用目前的日期,也能夠用- -date=「日期或時間」
-m 僅修改mtime
-t 後面能夠接想修改的時間而不用目前的時間格式爲[YYMMDDhhmm]
例題一:將~/.bashrc 複製成爲bashrc,假設徹底複製,檢查其日期
注意ll 是ls -l 的別名「;」則表明連續命令的執行
例題二;修改文件bashrc,將日期調整爲二天前
例題三:將bashrc日期改成2007/09/15 2:02
在Linux中,常常會遇到很大的文件須要複製粘貼,可是文件太大,須要很長的時間來完成,這個時間就須要咱們用到相似windos中的經常使用工具,壓縮了。
在linux中經常使用的壓縮命令就是 compress gzip 和bzip2
linux中常見的壓縮文件的擴展名:
*.z compress程序壓縮的文件
*.gz gzip程序壓縮的文件
*.bz2 bzip2程序壓縮的文件
*.tar tar程序打包的數據,並無壓縮過
*.tar.gz tar程序打包的文件,其中通過gzip的壓縮
*.tar.bz2 tar程序打包的文件,其中通過bzip2的壓縮
compress[-rcdv]文件或目錄 這裏是壓縮
uncompress文件.Z 這裏是解壓
compress srcfile 將源文件壓縮成壓縮包,源文件消失
compress -r 能夠連同目錄下的文件也同時給予壓縮
compress -v srcfile 壓縮或解壓縮時顯示詳細信息
compress -c srcfile > dstfile.Z 將源文件壓縮成壓縮包,源文件保留
compress -d dstfile.Z 將壓縮包解壓成源文件,壓縮包消失
compress -d -c dstfile.Z > srcfile 將壓縮包解壓成源文件,壓縮包保留
**例題解析**:將/etc/man.config複製到/tmp,並壓縮。而後解壓。
注意一點,若是你係統上沒有安裝compress的話,這個是練習不了的,要安裝的話用yum install ncompress 。值得注意的是compress在默認的狀況下源文件會不見,壓縮文件會被建立,擴展名會是.z。文件的大小從4940降到2873. 最後一步是解壓縮。copmress由於不能打開.gz的文件,因此不經常使用或不多用。
gzip能夠解開 compress zip gzip等全部的壓縮軟件,它的壓縮文件名爲*.gz。
gzip[-cdtv#]文件名
gzip -v 能夠顯示出源文件和壓縮文件的壓縮比等信息
gzip- t 用來檢驗一個壓縮文件的一致性,看看文件是否有 誤
gzip srcfile 將源文件壓縮成壓縮包,源文件消失
gzip -c srcfile > dstfile.gz 將源文件壓縮成壓縮包,源文件保留
gzip -d dstfile.gz 將壓縮包解壓成源文件,壓縮包消失
gzip -d -c dstfile.gz > srcfile 或 zcat dstfile.gz > srcfile 將壓縮包解壓成源文件, 壓縮包保留
gzip -# srcfile (#即1-9,表示壓縮比,數字越大壓縮比越高,默認爲6)
**bzip2和bzcat**
**gzip爲了替代compress,那麼bzip2則是爲了取代gzip,由於它的壓縮比更高**。
**bzip2[-cdkzv#]文件名
bzcat 文件名。bz2**
參數:
-c :將壓縮過程當中產生的數據輸出到屏幕上
-d:加壓縮的參數-k:保留源文件,而不會刪除原始的文件
-#:計算壓縮比的參數
總結:compress gzip 和bzip2都是壓縮工具但效果bzip2>gzip>compress.由於它的壓縮比最高。
tar 的命令功能就是打包命令,能夠將多個目錄或者文件打包成爲一個大文件,同時還能夠經過gzip和bzip的支持,將文件經行壓縮,而且windos中也支持tar.zg文件名的解壓縮。
**tar -tf mage.tar.xz
預覽壓縮包的文件列表
tar -rf mage.tar /path/newfile
往tar包中加強文件(注意只能對tar包增長文件,而不能對壓縮包增長)
tar -cf mage.tar filename1 filename2 [filenameN]
將多個文件打包至mage.tar
tar -zcf mage.tar.gz filename1 filename2 [filenameN]
將多個文件打包並用gzip壓 縮爲mage.tar.gz
tar -jcf mage.tar.bz2 filename1 filename2 [filenameN]
將多個文件打包並用bzip2 壓縮爲mage.tar.bz2
tar -Jcf mage.tar.xz filename1 filename2 [filenameN]
將多個文件打包並用xz壓 縮爲mage.tar.xz
tar -xf mage.tar
解壓tar包的全部文件到當前目錄
tar -xf mage.tar.xz filename
僅將壓縮包中的其中一個文件filename解壓到當前目錄
tar -zxf mage.tar.gz
解壓gz的壓縮包到當前目錄
tar -jxf mage.tar.bz2
解壓bzip2的壓縮包到當前目錄
tar -Jxf mage.tar.xz
解壓xz的壓縮包到當前目錄
tar -zxf mage.tar.gz -C /tmp
解壓gz的壓縮包到/tmp目錄
tar -zvxf mage.tar.gz
解壓gz的壓縮包到當前目錄並顯示詳細過程
tar zcvf mage.tar.gz -T yasuolist.txt -X paichu.txt
-T 指定須要打包並壓縮的文件列表,每一個文件路徑一行
-X 指定要排除的文件列表,每一個文件一行
總的來講只須要記住tar的三個用法就好
壓縮:tar -jcv-f filename.tar.bz2 被壓縮的文件或目錄名稱
查詢:tar-jtv-filename.tar.bz2
解壓縮:tar-jxv-f filename.tar.bz2-C 欲解壓縮的目錄
13管道命令|
「|」管道命令的用途:僅能處理由前面一個命令傳來的正確信息。
例題若是要想知道/etc/下面有多少文件,能夠利用ls /etc 來查閱,由於/etc/下面的文件太多,咱們能夠利用less來協助。
14 選取命令:cut 和grep
cut命令
用來顯示行中的指定部分,行爲單位,刪除文件中指定字段。cut常常用來顯示文件的內容,相似於下的type命令
cut 選項 參數
選項:
-b:僅顯示行中指定直接範圍的內容;
-c:僅顯示行中指定範圍的字符;
-d:指定字段的分隔符,默認的字段分隔符爲「TAB」;
-f:顯示指定字段的內容;
-n:與「-b」選項連用,不分割多字節字符;
--complement:補足被選擇的字節、字符或字段;
--out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
--help:顯示指令的幫助信息;
--version:顯示指令的版本信息。
參數: 文件:指定要進行內容過濾的文件
例題一:
將PATH 變量取出,找出第五個路徑
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo $PATH | cut -d ':' -f 5
/root/bin
路徑用「:」做爲分割,-d -f 通常聯合使用
若是取第3與第5就是這樣:
[root@localhost ~]# echo $PATH | cut -d ':' -f 3,5
/usr/sbin:/root/bin
例題二:
將export輸出的信息取得第12字符之後的全部字符串
[root@localhost ~]# export | cut -c 12-
若是取12-20的字符,就是cut -c 12-20
grep是一種強大的搜索工具,它可以用正則表達式搜索文本,並把匹配的行打印出來。
-a 表示不要忽視二進制數據。
-A顯示列數,出了顯示符合樣本的那一行以外,並顯示該行以後的內容。
-b 在顯示符合樣本的那一行以外,並顯示該行以前的內容。
-c 計算符合樣本的列數。
-C顯示列數或顯示行數,除了顯示符合樣本的那一行以外,並顯示該行以前後的內容。
-d 進行動做,當指定要查找的目錄而非文件時,必需要使用這項參數,不然grep命令將彙報信息並中止動做。
-e 指定字符串做爲查找文件內容的範本文件
-i 忽略字符大小寫的差異
-q 不顯示任何信息
-n 在顯示符合範本的那一行以前,表列出該列的標號。
例題一:用dmesg列出內核信息,並找出含「e1000」的那行。
解析 dmesg 能夠列出內核產生的信息,經過grep來選取網卡的相關信息,那我想把e1000,讓他顯色,而且還要加上行號,該怎樣表示那?
個人第一步先讓關鍵字顯色,第二部是顯示行號,那麼若是我想在關鍵字的前三行後四行也顯示出來,該怎樣表示那
上面的很簡單,那咱們來作這一道顯示CentOS7的/etc/grub2.cfg文件中,至少以一個空白字符開頭的且後面存非空白字符的行。
首先咱們查看這個文件
至少以一個空白字符開頭的且後面存非空白字符的行^[[:space:]]\+"[^[:space:]]"
grep的用法有不少,後面都是跟一些命令的。例如。顯示三個用戶root,mage,wang的uid和默認shell,該怎樣顯示那,第一步也就是咱們先要弄清楚,咱們系統裏面有沒有這三個用戶,當讓通常都是沒有的,因此咱們要新建mage,和王的用戶,
第二部咱們就是要找出uid和默認的shell
這樣的話咱們這一題就已經作好了,此題主要考察咱們的egrep的用法以及uid和shell的具體使用方法。
找出/etc/rc.d/init.d/functions文件中行首爲某單詞(包括下劃線)後面跟一個小括號的行,
本題就考察咱們的egrep後面加一些經常使用命令的具體用法了,
利用擴展正則表達式分別表示0-九、10-9九、100-19九、200-24九、250-255
這些題都是很簡單的主要就是來考察咱們egrep的具體用法,
sort命令
是在Linux裏很是有用,它將文件進行排序,並將排序結果標準輸出。sort命令既能夠從特定的文件,也能夠從stdin中獲取輸入。
-b:忽略每行前面開始出的空格字符;
-c:檢查文件是否已經按照順序排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其餘的字符;
-f:排序時,將小寫字母視爲大寫字母;
-i:排序時,除了040至176之間的ASCII字符外,忽略其餘的字符;
-m:將幾個排序號的文件進行合併;
-M:將前面3個字母依照月份的縮寫進行排序;
-n:依照數值的大小排序;
-o<輸出文件>:將排序後的結果存入制定的文件;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;
+<起始欄位>-<結束欄位>:以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
例題:
我的帳號都記錄在/etc/passwd下。請將帳號排序。
[root@localhost ~]# cat /etc/passwd | sort
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
andy:x:1002:1002::/home/andy:/bin/bash
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
barry:x:1003:1003::/home/barry:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
byj:x:1007:1007::/home/byj:/bin/bash
carl:x:1004:1004::/home/carl:/bin/bash
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
例題二;
若是例題一中我用第三列排序,如何表示:
root:x:0:0:root:/root:/bin/bash
mage:x:1000:1000:mage:/home/mage:/bin/bash
wang:x:1001:1001::/home/wang:/bin/bash
andy:x:1002:1002::/home/andy:/bin/bash
barry:x:1003:1003::/home/barry:/bin/bash
carl:x:1004:1004::/home/carl:/bin/bash
duke:x:1005:1005::/home/duke:/bin/bash
eric:x:1006:1006::/home/eric:/bin/bash
byj:x:1007:1007::/home/byj:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
看到黑體部分了把,若是是以文字的類型來排序的話,就會這樣,想要用數字來排序就要加-n
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k 3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
last命令
用於顯示用戶最近登陸信息。單獨執行last命令,它會讀取/var/log/wtmp的文件,並把該給文件的內容記錄的登入系統的用戶名單所有顯示出來。
-a:把從何處登入系統的主機名稱或ip地址,顯示在最後一行;
-d:將IP地址轉換成主機名稱;
-f <記錄文件>:指定記錄文件。
-n <顯示列數>或-<顯示列數>:設置列出名單的顯示列數;
-R:不顯示登入系統的主機名稱或IP地址;
-x:顯示系統關機,從新開機,以及執行等級的改變等信息。
例題
利用last將輸出的數據帳號僅取出帳號,並加以排序。
[root@localhost ~]# last | cut -d ' ' -f1 | sort
mage
mage
mage
mage
uniq命令
用於報告或忽略文件中的重複行,通常與sort命令結合使用。
-c或——count:在每列旁邊顯示該行重複出現的次數;
-d或--repeated:僅顯示重複出現的行列;
-f<欄位>或--skip-fields=<欄位>:忽略比較指定的欄位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比較指定的字符;
-u或——unique:僅顯示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比較的字符。
例題 使用last將帳號列出,僅取出帳號列,進行排序後進去出第一位
[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq
mage
reboot
root
wtmp
承上,若是我下個知道每一個人登錄的總次數:
[root@localhost ~]# last | cut -d ' ' -f1 | sort | uniq -c
1
33 mage
32 reboot
67 root
1 wtmp
wc命令用來計算數字。
-c或--bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數。
例題一
說一下/etc/man_db.conf 裏面到底有多少相關的字,行,字符數
[root@localhost ~]# cat /etc/man_db.conf | wc
131 723 5171
例題
咱們知道用last能夠輸出登錄者,可是last最後二行並不是帳號內容,如何以一行的命令取得這個月登錄系統的總人次
[root@localhost ~]# last | grep [a-zA-Z] | grep -v 'wtmp' | wc -l
132
因爲last會輸出空白行與wtmp字樣在最下面二行,所以我利用grep取出非空白行,以及除去wtmp那一行,在計算行數。
若是你想知道你目前帳號裏面有多少個帳號時,就用cat /etc/passwd | wc -l
tr命令
能夠對來自標準輸入的字符進行替換、壓縮和刪除。它能夠將一組字符變成另外一組字符,常常用來編寫優美的單行命令,做用很強大
-c或——complerment:取代全部不屬於第一字符集的字符;
-d或——delete:刪除全部屬於第一字符集的字符;
-s或--squeeze-repeats:把連續重複的字符以單獨一個字符表示;
-t或--truncate-set1:先刪除第一字符集較第二字符集多出的字符。
linux中主要是敲一些命令,咱們能夠經過作題來了解咱們有沒有掌握這些命令:
一、顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
ls -d /var/l*[0-9]*[[:lower:]]
二、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]
三、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄
ls -d /etc/[^a-Z][a-Z]*
四、顯示/etc/目錄下全部以rc開頭,並後面是0-6之間的數字,其它爲任意字符的文件或目錄
ls -d /etc/rc[0-6]*
五、顯示/etc目錄下,全部以.d結尾的文件或目錄
ls -d /etc/*.d
六、顯示/etc目錄下,全部.conf結尾,且以m,n,r,p開頭的文件或目錄
ls -d /etc/[mnrp]*.conf
七、只顯示/root下的隱藏文件和目錄
ls -a --ignore=[^.]* /root
ls -a -I "[^.]*" /root
ls -d .* /root
八、只顯示/etc下的非隱藏目錄
ls -d /etc/*/
上面這八道題很簡單,基本都是用了文件的通配符和ls的命令來完成的,
ls -a 列出全部文件和目錄
ls -d 顯示目錄名稱而非其內容
. 表示隱藏文件
* 表示0或多個任意字符
? 表示任意一個單一字符
[0-9] 表示數字範圍
[a-Z]表示全部字母
[bais]表示包含b或a或i或s
[^bais]表示不包含b或a或i或s
[:digit:] 表示任意數字
[:upper:] 表示大寫
[:lower:] 表示小寫
[:alpha:] 表示任意字母包含大小寫
[:alum:] 表示任意字母或數字
[:space:] 表示空格或換行
[:blank:] 表示空格
[:punct:] 表示符號
下面這七道題也是相同類型的,須要注意一下~ 表明「目前用戶身份」所在的主文件夾,其餘題參靠通配符都能作出來
一、顯示/etc目錄下全部以k開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
ls -d /etc/k*[[:digit:]]*[[:lower]]
二、顯示/proc目錄下名字由任意三位數字組成的文件或目錄
ls -d /proc/[0-9][0-9][0-9]
三、顯示/var/log目錄下文件名包含符號及數字的文件或目錄
ls -d /var/log/*[[:punct:]]*[0-9]*
四、顯示/usr/share/man目錄下全部以m開頭,以一個數字和x結尾的文件或目錄
ls -d /usr/share/man/m*[0-9]x
五、顯示/etc目錄下,全部以一個大寫字母開頭,以兩個數字結尾的文件或目錄
ls -d /etc/[[:upper]]*[0-9][0-9]
六、顯示/etc目錄下,文件名至少包含一個小寫字母和一個數字並以.conf結尾的文件或目錄
ls -d /etc/*[[:lower]]*[0-9]*.conf
七、只顯示用戶家目錄下的非隱藏目錄
ls -d ~/*/
下面這八道題主要主要考察了管道符 | 和 tr以及輸入輸出重定向
Linux系統中的命令能夠將標準輸入讀取數據,還能將這些數據送到標準輸出中去,這種功能被系統進一步的利用,從而產生出一種新的特性,稱之爲管道符「|」, 這 個符號能夠將一個命令的標準輸出管道爲另一個命令的標準輸入。
須要注意的是管道符的使用有兩個條件:
一、管道命令只能處理前一個命令的標準輸出,而不能處理標準錯誤;
二、管道命令右邊命令必須可以接收標準輸入。
標準輸入(stain):代碼爲0,使用<或<<,
標準輸出(stdout);代碼爲1,使用>或>>.
標準錯誤輸出(stderr):代碼爲2,使用2>或2>>
1>:以覆蓋的方法將正確的數據輸出到指定的文件或設備上
1>>:以累加的方法將正確的數據輸出到指定的文件或設備上
2>: 以覆蓋的方法將錯誤的數據輸出到指定的文件或設備上
2>>:以累加的方法將錯誤的數據輸出到指定的文件或設備上
tr 用來標準輸入中經過替換或刪除操做進字符轉換。經常使用命令:
-c 用字符串1中字符集的補集替換此字符集,要求字符集爲ASCII
-d 刪除字符串1中全部輸入字符
-s 刪除全部重複出現字符序列,只保留第一個,即將重複出現字符串壓縮爲一個字符串。
今天先更新到這裏把,改天再寫,長時間面對電腦也很差。