20161102学习笔记
ctrl+win+左/右,切換虛擬機(jī)桌面
win+Tab快速切換任務(wù)程序
瀏覽器的:
ctrl+數(shù)字或ctrl+PgUp/PgDn或Ctrl+Tab切換瀏覽器的標(biāo)簽頁(yè)
Ctrl+w關(guān)閉標(biāo)簽頁(yè)
Ctrl+t創(chuàng)建標(biāo)簽頁(yè)
=============Linux學(xué)習(xí)筆記如下:
1學(xué)習(xí)文件和目錄的權(quán)限。學(xué)習(xí)umask。自學(xué)setuid,chown和chgrp,符號(hào)連接。
?
總結(jié):umask命令確定了你創(chuàng)建文件的缺省模式(若umask的值為002,則代表他沒(méi)有w權(quán)限)
umask的值為0~7,文件的值為6,4,2,0目錄的權(quán)限為7~0。即,umask的值越小權(quán)限越大。
umask的作用是,它是為了控制默認(rèn)權(quán)限,不要使默認(rèn)的文件和目錄具有全權(quán)而設(shè)的
語(yǔ)法:直接輸入umask,查看當(dāng)前默認(rèn)權(quán)限
umask 后面接三三位數(shù)字,修改權(quán)限
SetUID命令:
passwd命令有一個(gè)特殊的權(quán)限標(biāo)記s ,存在于文件所有者的權(quán)限位上。這是一類特殊的權(quán)限SetUID ,可以這樣來(lái)理解它:當(dāng)一個(gè)具有執(zhí)行權(quán)限的文件設(shè)置SetUID權(quán)限后,用戶執(zhí)行這個(gè)文件時(shí)將以文件所有者的身份執(zhí)行。passwd命令具有SetUID權(quán)限,所有者為root(Linux中的命令默認(rèn)所有者都是root),也就是說(shuō)當(dāng)普通用戶使用passwd更改自己密碼的時(shí)候,那一瞬間突然靈魂附體了,實(shí)際在以passwd命令所有者root的身份在執(zhí)行,root當(dāng)然可以將密碼寫(xiě)入/etc/shadow文件(不要忘記root這個(gè)家伙是superuser什么事都可以干),命令執(zhí)行完成后該身份也隨之消失。
當(dāng)一個(gè)可執(zhí)行文件(eg:命令touch)設(shè)置SetUID權(quán)限后,當(dāng)普通用戶samlee執(zhí)行touch創(chuàng)建新文件時(shí),實(shí)際上是以touch命令所有者root的身份在執(zhí)行此操作,既然是以root身份執(zhí)行,當(dāng)然新建文件的所有者為root ,這就是SetUID的作用。
chmod命令:
使用權(quán)限 : 所有使用者
+ 表示增加權(quán)限、- 表示取消權(quán)限、= 表示唯一設(shè)定權(quán)限。
?r 表示可讀取(4),w 表示可寫(xiě)入(2),x 表示可執(zhí)行(1),
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個(gè)群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
示例:將檔案 file1.txt 設(shè)為所有人皆可讀取 :chmod a+r file1.txt
此外chmod也可以用數(shù)字來(lái)表示權(quán)限如 chmod 777 file
chown命令:
使用權(quán)限 : root
更改與文件關(guān)聯(lián)的所有者或組。
格式:chmod [-cfhvR] [--help] [--version] user[:group] file...
chgrp命令:
chgrp命令可采用群組名稱或群組識(shí)別碼的方式改變文件或目錄的所屬群組。使用權(quán)限是超級(jí)用戶
chgrp?[選項(xiàng)]?[組]?[文件]
?注:chmod是更改文件的權(quán)限 chown是改改文件的屬主與屬組 搜索chgrp只是更改文件的屬組。
符號(hào)鏈接又叫軟鏈接,是一類特殊的文件,這個(gè)文件包含了另一個(gè)文件的路徑名(絕對(duì)路徑或者相對(duì)路徑)。
在對(duì)符號(hào)文件進(jìn)行讀或?qū)懖僮鞯臅r(shí)候,系統(tǒng)會(huì)自動(dòng)把該操作轉(zhuǎn)換為對(duì)源文件的操作,但刪除鏈接文件時(shí),系統(tǒng)僅僅刪除鏈接文件,而不刪除源文件本身。
2在成功地執(zhí)行一個(gè)命令之后再執(zhí)行另一個(gè)命令&&,或者在一個(gè)命令失敗后再執(zhí)行另一個(gè)命令||
tips:某些情況下&&可取代if去使用,使語(yǔ)句更簡(jiǎn)單
在Linux系統(tǒng)中,內(nèi)核為每一個(gè)新創(chuàng)建的文件分配一個(gè)Inode(索引結(jié)點(diǎn)),每個(gè)文件都有一個(gè)惟一的inode號(hào)。文件屬性保存在索引結(jié)點(diǎn)里,在訪問(wèn)文件時(shí),索引結(jié)點(diǎn)被復(fù)制到內(nèi)存在,從而實(shí)現(xiàn)文件的快速訪問(wèn)。
鏈接是一種在共享文件和訪問(wèn)它的用戶的若干目錄項(xiàng)之間建立聯(lián)系的一種方法
硬鏈接說(shuō)白了是一個(gè)指針,指向文件索引節(jié)點(diǎn),系統(tǒng)并不為它重新分配inode。可以用:ln命令來(lái)建立硬鏈接。
軟鏈接克服了硬鏈接的不足,沒(méi)有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件進(jìn)行鏈接。
當(dāng)創(chuàng)建了一個(gè)文件的硬鏈接時(shí),硬鏈接會(huì)使用和文件相同的inode號(hào),此時(shí)原來(lái)的文件的inode連接數(shù)由最初的1變?yōu)榱?,實(shí)際上硬鏈接和文件使用了相同的inode,只不過(guò)是inode連接數(shù)增加了,刪除文件不會(huì)影響硬鏈接,硬鏈接的inode數(shù)會(huì)從2變?yōu)?。
而在創(chuàng)建文件的軟鏈接時(shí),軟鏈接會(huì)使用一個(gè)新的inode,所以軟鏈接的inode號(hào)和文件的inode號(hào)不同,軟鏈接的inode里存放著指向文件的路徑,刪除文件,軟鏈接也無(wú)法使用了,因?yàn)槲募穆窂讲淮嬖诹恕.?dāng)再次創(chuàng)建這個(gè)文件時(shí)(文件名與之前的相同),軟鏈接又會(huì)重新指向這個(gè)文件(inode號(hào)與之前的不同了),而硬鏈接不會(huì)受其影響。
3后臺(tái)執(zhí)行命令:cron,nobup,at,&
當(dāng)你在終端或控制臺(tái)工作時(shí),可能不希望由于運(yùn)行一個(gè)作業(yè)而占住了屏幕。為了使這些進(jìn)程能夠在后臺(tái)運(yùn)行,也就是說(shuō)不在終端屏幕上運(yùn)行,有幾種選擇方法可供使用。
crontab命令:
cron 系統(tǒng)調(diào)度進(jìn)程。可以使用它在每天的非高峰負(fù)荷時(shí)間段運(yùn)行作業(yè),或在一周或一月中的不同時(shí)段運(yùn)行。
cron在你安排不同的常規(guī)維護(hù)任務(wù)時(shí)是很有用的,比如周期性地備份、日志循環(huán)、檢查文件系統(tǒng)、監(jiān)測(cè)磁盤(pán)空間等等。
格式:<分鐘> <小時(shí)> <日> <月> <星期> <命令>
eg:30 21* * * /apps/bin/cleanup.sh(分時(shí)天月周)每天21點(diǎn)30分執(zhí)行 /apps/bin/cleanup.sh
at命令:
使用它在一個(gè)特定的時(shí)間運(yùn)行一些特殊的作業(yè),或在晚一些的非負(fù)荷高峰時(shí)間段或高峰負(fù)荷時(shí)間段運(yùn)行。
&命令:
& 使用它在后臺(tái)運(yùn)行一個(gè)占用時(shí)間不長(zhǎng)的進(jìn)程。
我們一般想讓某個(gè)程序在后臺(tái)運(yùn)行,于是我們將常會(huì)用 & 在程序結(jié)尾來(lái)讓程序自動(dòng)運(yùn)行
示例:command >out.file 2>&1 &
nohup命令:
如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺(jué)得在退出帳戶時(shí)該進(jìn)程還不會(huì)結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。nohup就是不掛起的意思( n ohang up)。
該命令的一般形式為:nohup command &
如果使用nohup命令提交作業(yè),那么在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中,除非另外指定了輸出文件;
nohup command > myout.file 2>&1 &輸出被重定向到myout.file文件中。 4合并與拆分:split,sort,uniq,cut,paste sort命令:管排序的http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html⑴ sort的工作原理
sort將文件的每一行作為一個(gè)單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進(jìn)行比較,最后將他們按升序輸出。
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
⑵ sort的-u選項(xiàng)
它的作用很簡(jiǎn)單,就是在輸出行中去除重復(fù)行。
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocket programming]$ sort -u seq.txt
apple
banana
orange
pear
pear由于重復(fù)被-u選項(xiàng)無(wú)情的刪除了。
⑶ sort的-r選項(xiàng)
sort默認(rèn)的排序方式是升序,如果想改成降序,就加個(gè)-r就搞定了。
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort number.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sort -r number.txt
5
4
3
2
1
⑷ sort的-o選項(xiàng)
由于sort默認(rèn)是把結(jié)果輸出到標(biāo)準(zhǔn)輸出,所以需要用重定向才能將結(jié)果寫(xiě)入文件,形如sort filename > newfile。
但是,如果你想把排序結(jié)果輸出到原文件中,用重定向可就不行了。
[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
看,竟然將number清空了。
就在這個(gè)時(shí)候,-o選項(xiàng)出現(xiàn)了,它成功的解決了這個(gè)問(wèn)題,讓你放心的將結(jié)果寫(xiě)入原文件。這或許也是-o比重定向的唯一優(yōu)勢(shì)所在。
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
[rocrocket@rocrocket programming]$ cat number.txt
5
4
3
2
1
⑸sort的-n選項(xiàng)
你有沒(méi)有遇到過(guò)10比2小的情況。我反正遇到過(guò)。出現(xiàn)這種情況是由于排序程序?qū)⑦@些數(shù)字按字符來(lái)排序了,排序程序會(huì)先比較1和2,顯然1小,所以就將10放在2前面嘍。這也是sort的一貫作風(fēng)。
我們?nèi)绻敫淖冞@種現(xiàn)狀,就要使用-n選項(xiàng),來(lái)告訴sort,“要以數(shù)值來(lái)排序”!
[rocrocket@rocrocket programming]$ cat number.txt
1
10
19
11
2
5
[rocrocket@rocrocket programming]$ sort number.txt
1
10
11
19
2
5
[rocrocket@rocrocket programming]$ sort -n number.txt
1
2
5
10
11
19
⑹? sort的-t選項(xiàng)和-k選項(xiàng)
如果有一個(gè)文件的內(nèi)容是這樣:
[rocrocket@rocrocket programming]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
這個(gè)文件有三列,列與列之間用冒號(hào)隔開(kāi)了,第一列表示水果類型,第二列表示水果數(shù)量,第三列表示水果價(jià)格。
那么我想以水果數(shù)量來(lái)排序,也就是以第二列來(lái)排序,如何利用sort實(shí)現(xiàn)?
幸好,sort提供了-t選項(xiàng),后面可以設(shè)定間隔符。(是不是想起了cut和paste的-d選項(xiàng),共鳴~~)
指定了間隔符之后,就可以用-k來(lái)指定列數(shù)了。
[rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
我們使用冒號(hào)作為間隔符,并針對(duì)第二列來(lái)進(jìn)行數(shù)值升序排序,結(jié)果很令人滿意。
⑺ 其他的sort常用選項(xiàng)
-f會(huì)將小寫(xiě)字母都轉(zhuǎn)換為大寫(xiě)字母來(lái)進(jìn)行比較,亦即忽略大小寫(xiě)
-c會(huì)檢查文件是否已排好序,如果亂序,則輸出第一個(gè)亂序的行的相關(guān)信息,最后返回1
-C會(huì)檢查文件是否已排好序,如果亂序,不輸出內(nèi)容,僅返回1
-M會(huì)以月份來(lái)排序,比如JAN小于FEB等等
-b會(huì)忽略每一行前面的所有空白部分,從第一個(gè)可見(jiàn)字符開(kāi)始比較。
有時(shí)候?qū)W習(xí)腳本,你會(huì)發(fā)現(xiàn)sort命令后面跟了一堆類似-k1,2,或者-k1.2 -k3.4的東東,有些匪夷所思。今天,我們就來(lái)搞定它—-k選項(xiàng)!
a 準(zhǔn)備素材
$ cat facebook.txt
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
?
第一個(gè)域是公司名稱,第二個(gè)域是公司人數(shù),第三個(gè)域是員工平均工資。(除了公司名稱,其他的別信,都瞎寫(xiě)的^_^)
b我想讓這個(gè)文件按公司的字母順序排序,也就是按第一個(gè)域進(jìn)行排序:(這個(gè)facebook.txt文件有三個(gè)域)
$ sort -t ‘ ‘ -k 1 facebook.txt
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
看到了吧,就直接用-k 1設(shè)定就可以了。(其實(shí)此處并不嚴(yán)格,稍后你就會(huì)知道)
c 我想讓facebook.txt按照公司人數(shù)排序
$ sort -n -t ‘ ‘ -k 2 facebook.txt
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
不用解釋,我相信你能懂。
但是,此處出現(xiàn)了問(wèn)題,那就是baidu和sohu的公司人數(shù)相同,都是100人,這個(gè)時(shí)候怎么辦呢?按照默認(rèn)規(guī)矩,是從第一個(gè)域開(kāi)始進(jìn)行升序排序,因此baidu排在了sohu前面。
d? 我想讓facebook.txt按照公司人數(shù)排序 ,人數(shù)相同的按照員工平均工資升序排序:
$ sort -n -t ‘ ‘ -k 2 -k 3 facebook.txt
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
看,我們加了一個(gè)-k2 -k3就解決了問(wèn)題。對(duì)滴,sort支持這種設(shè)定,就是說(shuō)設(shè)定域排序的優(yōu)先級(jí),先以第2個(gè)域進(jìn)行排序,如果相同,再以第3個(gè)域進(jìn)行排序。(如果你愿意,可以一直這么寫(xiě)下去,設(shè)定很多個(gè)排序優(yōu)先級(jí))
e 我想讓facebook.txt按照員工工資降序排序,如果員工人數(shù)相同的,則按照公司人數(shù)升序排序:(這個(gè)有點(diǎn)難度嘍)
$ sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
此處有使用了一些小技巧,你仔細(xì)看看,在-k 3后面偷偷加上了一個(gè)小寫(xiě)字母r。r和-r選項(xiàng)的作用是一樣的,就是表示逆序。因?yàn)閟ort默認(rèn)是按照升序排序的,所以此處需要加上r表示第三個(gè)域(員工平均工資)是按照降序排序。此處你還可以加上n,就表示對(duì)這個(gè)域進(jìn)行排序時(shí),要按照數(shù)值大小進(jìn)行排序,舉個(gè)例子吧:
$ sort -t ‘ ‘ -k 3nr -k 2n facebook.txt
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
看,我們?nèi)サ袅俗钋懊娴?n選項(xiàng),而是將它加入到了每一個(gè)-k選項(xiàng)中了。
工作中會(huì)用到的:-r降序排列;-k指定列數(shù);以:為分隔符,將文件a按照第二列排序sort? -t: -k2nr? a。
split命令:split用來(lái)將大文件分割成小文件。
split命令一般格式:
split -output_file-size input-filename output-filename
常用split –l? LTECGNO20160720CNT200.200
-b:值為每一輸出檔案的大小,單位為 byte。 -C:每一輸出檔中,單行的最大 byte 數(shù)。 -d:使用數(shù)字作為后綴。 -l:值為每一輸出檔的列數(shù)大小
uniq命令:
uniq用來(lái)從一個(gè)文本文件中去除或禁止重復(fù)行。
-c 打印每一重復(fù)行出現(xiàn)次數(shù)。
cut命令:是一個(gè)選取命令。拆
cut ?[選項(xiàng)] [file]
cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段寫(xiě)至標(biāo)準(zhǔn)輸出。
如果不指定 File 參數(shù),cut 命令將讀取標(biāo)準(zhǔn)輸入。必須指定 -b、-c 或 -f 標(biāo)志之一
paste命令:拆
paste將按行將不同文件行信息放在一行
paste -d -s -file1 file2
選項(xiàng)含義如下:
-d 指定不同于空格或tab鍵的域分隔符。例如用 @分隔域,使用- d @。
-s 將每個(gè)文件合并成行而不是按行粘貼。
5文件的輸入輸出
標(biāo)準(zhǔn)輸入流是文件描述符0。它是命令的輸入,缺省是鍵盤(pán),也可以是文件或其他命令的輸出。
標(biāo)準(zhǔn)輸出是流文件描述符 1。它是命令的輸出,缺省是屏幕,也可以是文件。
標(biāo)準(zhǔn)錯(cuò)誤流是文件描述符 2。
6xargs命令
之所以能用到這個(gè)命令,關(guān)鍵是由于很多命令不支持|管道來(lái)傳遞參數(shù),而日常工作中有有這個(gè)必要,所以就有了xargs命令,
例如:這個(gè)命令是錯(cuò)誤的find /sbin -perm +700 |ls -l
這樣才是正確的find /sbin -perm +700 |xargs ls -l
它擅長(zhǎng)將標(biāo)準(zhǔn)輸入數(shù)據(jù)轉(zhuǎn)換成命令行參數(shù),xargs能夠處理管道或者stdin并將其轉(zhuǎn)換成特定命令的命令參數(shù)。xargs也可以將單行或多行文本輸入轉(zhuǎn)換為其他格式,例如多行變單行,單行變多行。xargs的默認(rèn)命令是echo,空格是默認(rèn)定界符。這意味著通過(guò)管道傳遞給xargs的輸入將會(huì)包含換行和空白,不過(guò)通過(guò)xargs的處理,換行和空白將被空格取代。xargs是構(gòu)建單行命令的重要組件之一。
在 使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn) 溢出錯(cuò)誤。錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。find命令把匹配到的文件 傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一 批,并如此繼續(xù)下去。
即find可以匹配xargs也可以匹配exec,在傳遞的內(nèi)容較小時(shí),使用exec是最佳匹配。
7正則表達(dá)式
^? 匹配串首
$? 匹配串尾
.? 匹配單個(gè)任意字符
*? 匹配零個(gè)或多個(gè)前導(dǎo)字符
+? 匹配一個(gè)或多個(gè)前導(dǎo)字符
?? 匹配零個(gè)或一個(gè)前導(dǎo)字符
[ABC]? 匹配指定字符組(即A、B和C)中任一字符
[^ABC]? 匹配任何一個(gè)不在指定字符組(即A、B和C)中的字符
[A-Z]? 匹配A至Z之間的任一字符
A|B? 匹配A或B
(AB)+? 匹配一個(gè)或多個(gè)AB 的組合,例如: AB 、ABAB 、ABABAB
\*? 匹配星號(hào)本身
&? 用在替代串中,代表查找串中匹配到的內(nèi)容
~ !~? 匹配,取反
()? 在正則表達(dá)式中將字符串組合在一起
注:+比*好用,&用的不多
find命令:
常用的選項(xiàng):-name,-mtime,-type文件類型,d目錄,f普通文件
-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' {? } \;,注意{?? }和\;之間的空格。
查找30天之前的文件并刪除(提示):find -mtime +30 –exec rm{}\;(find . –type f? -mtime +30 –ok rm {} \)
指定文件挪到我的目錄:find? . –type f? -name “LTECNGI20160721CNT200.2000” –exec? mv? {}? ~/asiainfo/fh/ \;
=================================================================
AWK命令
awk也是一門(mén)語(yǔ)言。
在 Awk 中,花括號(hào){}用于將代碼分塊。
變量 $0 表示整個(gè)當(dāng)前行,?$1 代表第一個(gè)字段
BEGIN 代碼塊在 awk 開(kāi)始處理輸入文件之前執(zhí)行,因此它是初始化 FS(字段分隔符)變量、打印頁(yè)眉或者初始化在后續(xù)程序中將要引用的其他全局變量的絕佳位置。
BEGIN {
?FS=":"
}
{ print $1 }
awk 還提供了另一種稱為 END 的專用代碼塊。在輸入文件的所有行處理完畢之后,awk 執(zhí)行這個(gè)代碼塊。通常,END 代碼塊用于進(jìn)行最終計(jì)算或者打印應(yīng)該在輸出流結(jié)尾處出現(xiàn)的匯總信息
轉(zhuǎn)載于:https://www.cnblogs.com/zero1224/p/6021971.html
總結(jié)
以上是生活随笔為你收集整理的20161102学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 进程守护系统,你懂吗?
- 下一篇: alias提升效率工具