在Linux下,可以用mkdir命令來創(chuàng)建文件夾,語法如下:
創(chuàng)新互聯(lián)是一家專業(yè)提供武江企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為武江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
在終端中輸入命令cd /tmp/folder進(jìn)入你要?jiǎng)?chuàng)建文件夾的目錄,請(qǐng)把/tmp/folder修改為你的路徑
在終端中輸入命令mkdir folder_name,按回車執(zhí)行,folder_name是你要?jiǎng)?chuàng)建的文件夾名字
如果你要?jiǎng)?chuàng)建多級(jí)目錄,比如現(xiàn)在/tmp是空的,你要依次建立a,b,c文件夾,可用參數(shù)-p,如下:
mkdir -p /tmp/a/b/c 可查詢“Linux命令大全”查詢命令詳細(xì)介紹。
命令是查詢當(dāng)前登錄的每個(gè)用戶,它的輸出包括用戶名、終端類型、登錄日期及遠(yuǎn)程主機(jī),在Linux系統(tǒng)中輸入who命令輸出如下:
我們先man一下who,在幫助文檔里可以看到,who命令是讀取/var/run/utmp文件來得到以上信息的。
我們?cè)賛an一下utmp,知道utmp這個(gè)文件,是二進(jìn)制文件,里面保存的是結(jié)構(gòu)體數(shù)組,這些數(shù)組是struct utmp結(jié)構(gòu)體的。
struct utmp {
short ut_type;
pid_t ut_pid;
char ut_line[UT_LINESIZE];
char ut_id[4];
char ut_user[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
struct {
int32_t tv_sec;
int32_t tv_usec;
} ut_tv;
/***等等***/
};
要實(shí)現(xiàn)who只需要把utmp文件的所有結(jié)構(gòu)體掃描過一遍,把需要的信息顯示出來就可以了,我們需要的信息有ut_user、ut_line、ut_tv、ut_host。
老師給的初始代碼:who1.c運(yùn)行結(jié)果如下:
需要注意的是utmp中所保存的時(shí)間是以秒和微妙來計(jì)算的,所以我們需要把這個(gè)時(shí)間轉(zhuǎn)換為我們能看懂的時(shí)間,利用命令man -k time | grep 3搜索C語言中和時(shí)間相關(guān)的函數(shù):
經(jīng)過搜索發(fā)現(xiàn)了一個(gè)ctime()函數(shù),似乎可以滿足我們的需求,于是對(duì)代碼中關(guān)于時(shí)間的printf進(jìn)行修改:
printf("%s",ctime(utbufp-ut_time));
編譯運(yùn)行發(fā)現(xiàn)出來的結(jié)果雖然已經(jīng)轉(zhuǎn)換成了我們能看懂的時(shí)間格式,但是很明顯這個(gè)時(shí)間是錯(cuò)的:
搜索一下ut_time這個(gè)宏,發(fā)現(xiàn)它被定義為int32_t類型:
但是ctime()函數(shù)中要求參數(shù)的類型是time_t類型,所以重新定義一下類型,編譯運(yùn)行之后,發(fā)現(xiàn)時(shí)間已經(jīng)改成了正確的,但是發(fā)現(xiàn)()中的內(nèi)容被換行了,猜想ctime()函數(shù)的返回值可能自動(dòng)在最后補(bǔ)了一個(gè)字符\n:
一開始想通過\r\b來實(shí)現(xiàn)“退行”,但實(shí)踐后發(fā)現(xiàn)并不可取,最后考慮到直接修改字符串中最后一個(gè)字符為\0,讓其字符串結(jié)束,使輸出達(dá)到與系統(tǒng)who命令一樣的效果,即在輸出語句前添加如下代碼:
cp[strlen(cp)-1] = '\0'
最后編譯執(zhí)行效果,發(fā)現(xiàn)解決了該問題:
雖然能看出基本上和who指令的執(zhí)行結(jié)果一致,但是并非完全一樣,主要在兩點(diǎn),第一是時(shí)間格式不一樣,第二個(gè)是比who執(zhí)行的結(jié)果多了幾條,需要注意的是utmp中保存的用戶,不僅僅是已經(jīng)登陸的用戶,還有系統(tǒng)的其他服務(wù)所需要的“用戶”,所以在顯出所有登陸用戶的時(shí)候,應(yīng)該過濾掉其他用戶,只保留登陸用戶。我們可以通過ut_type來區(qū)別,登陸用戶的ut_type是USER_PROCESS。
先用if語句對(duì)執(zhí)行結(jié)果進(jìn)行過濾,效果如下:
接著解決時(shí)間格式問題,利用man命令收到了兩個(gè)非常有用的函數(shù):localtime()和strftime(),localtime()是把從1970-1-1零點(diǎn)零分到當(dāng)前時(shí)間系統(tǒng)所偏移的秒數(shù)時(shí)間轉(zhuǎn)換為本地時(shí)間,strftime()則是用來定義時(shí)間格式的,如:年-月-日,利用這兩個(gè)函數(shù)對(duì)時(shí)間進(jìn)行修改后,結(jié)果顯示終于和系統(tǒng)中who命令一模一樣:
最終完整的代碼如下:
#include stdio.h
#include stdlib.h
#include utmp.h
#include fcntl.h
#include unistd.h
#include time.h
#define SHOWHOST
void show_time(long timeval){
char format_time[40];
struct tm *cp;
cp = localtime(timeval);
strftime(format_time,40,"%F %R",cp);
printf("%s",format_time);
}
int show_info( struct utmp *utbufp )
{
if(utbufp-ut_type == USER_PROCESS){
printf("%-8.8s", utbufp-ut_name);
printf(" ");
printf("%-8.8s", utbufp-ut_line);
printf(" ");
show_time(utbufp-ut_time);
printf(" ");
#ifdef SHOWHOST
printf("(%s)", utbufp-ut_host);
#endif
printf("\n");
}
return 0;
}
int main()
{
struct utmp current_record;
int utmpfd;
int reclen = sizeof(current_record);
if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){
perror( UTMP_FILE );
exit(1);
}
while ( read(utmpfd, current_record, reclen) == reclen )
show_info(current_record);
close(utmpfd);
return 0;
}
Linux下常用文本處理命令大全
Linux下面有很多經(jīng)典的非常有用的命令,其中處理文本的命令就有很多。下面就讓我們一起看看這些經(jīng)典的Linux文本處理命令有哪些吧。
一. sort
文件排序, 通常用在管道中當(dāng)過濾器來使用. 這個(gè)命令可以依據(jù)指定的關(guān)鍵字或指定的字符位置, 對(duì)文件行進(jìn)行排序. 使用-m選項(xiàng), 它將會(huì)合并預(yù)排序的輸入文件. 想了解這個(gè)命令的全部參數(shù)請(qǐng)參考這個(gè)命令的info頁.
二. tsort
拓?fù)渑判? 讀取以空格分隔的有序?qū)? 并且依靠輸入模式進(jìn)行排序.
三. uniq
這個(gè)過濾器將會(huì)刪除一個(gè)已排序文件中的重復(fù)行. 這個(gè)命令經(jīng)常出現(xiàn)在sort命令的管道后邊.
四. expand, unexpand
expand命令將會(huì)把每個(gè)tab轉(zhuǎn)化為一個(gè)空格. 這個(gè)命令經(jīng)常用在管道中.
unexpand命令將會(huì)把每個(gè)空格轉(zhuǎn)化為一個(gè)tab. 效果與expand命令相反.
五. cut
一個(gè)從文件中提取特定域的工具. 這個(gè)命令與awk中使用的print $N命令很相似, 但是更受限. 在腳本中使用cut命令會(huì)比使用awk命令來得容易一些. 最重要的選項(xiàng)就是-d(字段定界符)和-f(域分隔符)選項(xiàng).
六. paste
將多個(gè)文件, 以每個(gè)文件一列的形式合并到一個(gè)文件中, 合并后文件中的每一列就是原來的一個(gè)文件. 與cut結(jié)合使用, 經(jīng)常用于創(chuàng)建系統(tǒng)log文件.
七. join
這個(gè)命令與paste命令屬于同類命令. 但是它能夠完成某些特殊的目地. 這個(gè)強(qiáng)力工具能夠以一種特殊的形式來合并兩個(gè)文件, 這種特殊的形式本質(zhì)上就是一個(gè)關(guān)聯(lián)數(shù)據(jù)庫的簡(jiǎn)單版本.
join命令只能夠操作兩個(gè)文件. 它可以將那些具有特定標(biāo)記域(通常是一個(gè)數(shù)字標(biāo)簽)的行合并起來, 并且將結(jié)果輸出到stdout. 被加入的文件應(yīng)該事先根據(jù)標(biāo)記域進(jìn)行排序以便于能夠正確的匹配.
八. head
把文件的頭部?jī)?nèi)容打印到stdout上(默認(rèn)為10行, 可以自己修改). 這個(gè)命令有一些比較有趣的選項(xiàng).
九. tail
將一個(gè)文件結(jié)尾部分的內(nèi)容輸出到stdout中(默認(rèn)為10行). 通常用來跟蹤一個(gè)系統(tǒng)logfile的.修改情況, 如果使用-f選項(xiàng)的話, 這個(gè)命令將會(huì)繼續(xù)顯示添加到文件中的行.
十. wc
wc可以統(tǒng)計(jì)文件或I/O流中的”單詞數(shù)量”:
十一. fold
將輸入按照指定寬度進(jìn)行折行. 這里有一個(gè)非常有用的選項(xiàng)-s, 這個(gè)選項(xiàng)可以使用空格進(jìn)行斷行(譯者: 事實(shí)上只有外文才需要使用空格斷行, 中文是不需要的)(請(qǐng)參考例子 12-23和例子 A-1).
十二. fmt
一個(gè)簡(jiǎn)單的文件格式器, 通常用在管道中, 將一個(gè)比較長(zhǎng)的文本行輸出進(jìn)行”折行”.
十三. col
這個(gè)命令用來濾除標(biāo)準(zhǔn)輸入的反向換行符號(hào). 這個(gè)工具還可以將空白用等價(jià)的tab來替換. col工具最主要的應(yīng)用還是從特定的文本處理工具中過濾輸出, 比如groff和tbl. (譯者: 主要用來將man頁轉(zhuǎn)化為文本.)
十四. column
列格式化工具. 通過在合適的位置插入tab, 這個(gè)過濾工具會(huì)將列類型的文本轉(zhuǎn)化為”易于打印”的表格式進(jìn)行輸出.
十五. colrm
列刪除過濾器. 這個(gè)工具將會(huì)從文件中刪除指定的列(列中的字符串)并且寫到文件中, 如果指定的列不存在, 那么就回到stdout. colrm 2 4 filename將會(huì)刪除filename文件中每行的第2到第4列之間的所有字符. p="" /filename將會(huì)刪除filename文件中每行的第2到第4列之間的所有字符.
Caution: 如果這個(gè)文件包含tab和不可打印字符, 那將會(huì)引起不可預(yù)期的行為. 在這種情況下, 應(yīng)該通過管道的手段使用expand和unexpand來預(yù)處理colrm.
十六. nl
計(jì)算行號(hào)過濾器. nl filename將會(huì)把filename文件的所有內(nèi)容都輸出到stdout上, 但是會(huì)在每個(gè)非空行的前面加上連續(xù)的行號(hào). 如果沒有filename參數(shù), 那么就操作stdin.
nl命令的輸出與cat -n非常相似, 然而, 默認(rèn)情況下nl不會(huì)列出空行.
十七. pr
格式化打印過濾器. 這個(gè)命令會(huì)將文件(或stdout)分頁, 將它們分成合適的小塊以便于硬拷貝打印或者在屏幕上瀏覽. 使用這個(gè)命令的不同的參數(shù)可以完成好多任務(wù), 比如對(duì)行和列的操作, 加入行, 設(shè)置頁邊, 計(jì)算行號(hào), 添加頁眉, 合并文件等等. pr命令集合了許多命令的功能, 比如nl, paste, fold, column, 和expand.
pr -o 5 –width=65 fileZZZ | more 這個(gè)命令對(duì)fileZZZ進(jìn)行了比較好的分頁, 并且打印到屏幕上. 文件的縮進(jìn)被設(shè)置為5, 總寬度設(shè)置為65.
一個(gè)非常有用的選項(xiàng)-d, 強(qiáng)制隔行打印(與sed -G效果相同).
十八. gettext
GNU gettext包是專門用來將程序的輸出翻譯或者本地化為不同國(guó)家語言的工具集. 在最開始的時(shí)候僅僅支持C語言, 現(xiàn)在已經(jīng)支持了相當(dāng)數(shù)量的其它程序語言和腳本語言.
想要查看gettext程序如何在shell腳本中使用. 請(qǐng)參考info頁.
十九. msgfmt
一個(gè)產(chǎn)生二進(jìn)制消息目錄的程序. 這個(gè)命令主要用來本地化.
二十. iconv
一個(gè)可以將文件轉(zhuǎn)化為不同編碼格式(字符集)的工具. 這個(gè)命令主要用來本地化.
二十一. recode
可以認(rèn)為這個(gè)命令是上邊iconv命令的專業(yè)版本. 這個(gè)非常靈活的并可以把整個(gè)文件都轉(zhuǎn)換為不同編碼格式的工具并不是Linux標(biāo)準(zhǔn)安裝的一部分.
二十二. TeX, gs
TeX和Postscript都是文本標(biāo)記語言, 用來對(duì)打印和格式化的視頻顯示進(jìn)行預(yù)拷貝.
TeX是Donald Knuth精心制作的排版系統(tǒng). 通常情況下, 通過編寫腳本的手段來把所有的選項(xiàng)和參數(shù)封裝起來一起傳到標(biāo)記語言中是一件很方便的事情.
Linux必學(xué)的60個(gè)命令(3)-系統(tǒng)管理
由 zhanjun 在 周四, 2006-04-13 12:41 提交
Linux必學(xué)的60個(gè)命令:系統(tǒng)管理相關(guān)命令
Linux必學(xué)的系統(tǒng)管理命令
作者:曹元其 發(fā)文時(shí)間:2004.10.18
對(duì)于Linux系統(tǒng)來說,無論是中央處理器、內(nèi)存、磁盤驅(qū)動(dòng)器、鍵盤、鼠標(biāo),還是用戶等都是文件,Linux系統(tǒng)管理的命令是它正常運(yùn)行的核心。熟悉了Linux常用的文件處理命令以后,這一講介紹對(duì)系統(tǒng)和用戶進(jìn)行管理的命令。
cat cd
chmod chown
cp cut
名稱:cat
使用權(quán)限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接后傳到基本輸出(螢?zāi)换蚣? fileName 到另一個(gè)檔案)
參數(shù):
-n 或 --number 由 1 開始對(duì)所有輸出的行數(shù)編號(hào)
-b 或 --number-nonblank 和 -n 相似,只不過對(duì)于空白行不編號(hào)
-s 或 --squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting
范例:
cat -n textfile1 textfile2 把 textfile1 的檔案內(nèi)容加上行號(hào)后輸入 textfile2 這個(gè)檔案里
cat -b textfile1 textfile2 textfile3 把 textfile1 和 textfile2 的檔案內(nèi)容加上行號(hào)(空白行不加)之后將內(nèi)容附加到 textfile3
名稱 : cd
使用權(quán)限 : 所有使用者
使用方式 : cd [dirName]
說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可為絕對(duì)路徑或相對(duì)路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時(shí)所在的目錄)。
另外,"~" 也表示為 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。
范例 : 跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home directory :
cd ~
跳到目前目錄的上上兩層 :
cd ../..
指令名稱 : chmod
使用權(quán)限 : 所有使用者
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
說明 : Linux/Unix 的檔案存取權(quán)限分為三級(jí) : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。
把計(jì) :
mode : 權(quán)限設(shè)定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個(gè)群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權(quán)限、- 表示取消權(quán)限、= 表示唯一設(shè)定權(quán)限。
r 表示可讀取,w 表示可寫入,x 表示可執(zhí)行,X 表示只有當(dāng)該檔案是個(gè)子目錄或者該檔案已經(jīng)被設(shè)定過為可執(zhí)行。
-c : 若該檔案權(quán)限確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作
-f : 若該檔案權(quán)限無法被更改也不要顯示錯(cuò)誤訊息
-v : 顯示權(quán)限變更的詳細(xì)資料
-R : 對(duì)目前目錄下的所有檔案與子目錄進(jìn)行相同的權(quán)限變更(即以遞回的方式逐個(gè)變更)
--help : 顯示輔助說明
--version : 顯示版本
范例 :將檔案 file1.txt 設(shè)為所有人皆可讀取 :
chmod ugo+r file1.txt
將檔案 file1.txt 設(shè)為所有人皆可讀取 :
chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設(shè)為該檔案擁有者,與其所屬同一個(gè)群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設(shè)定為只有該檔案擁有者可以執(zhí)行 :
chmod u+x ex1.py
將目前目錄下的所有檔案與子目錄皆設(shè)為任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數(shù)字來表示權(quán)限如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個(gè)數(shù)字,分別表示User、Group、及Other的權(quán)限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。
范例:
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可使此程式具有root的權(quán)限
指令名稱 : chown
使用權(quán)限 : root
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
說明 : Linux/Unix 是多人多工作業(yè)系統(tǒng),所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個(gè)指令只有是由系統(tǒng)管理者(root)所使用,一般使用者沒有權(quán)限可以改變別人的檔案擁有者,也沒有權(quán)限可以自己的檔案擁有者改設(shè)為別人。只有系統(tǒng)管理者(root)才有這樣的權(quán)限。
把計(jì) :
user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)-c : 若該檔案擁有者確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作-f : 若該檔案擁有者無法被更改也不要顯示錯(cuò)誤訊息-h : 只對(duì)于連結(jié)(link)進(jìn)行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細(xì)資料-R : 對(duì)目前目錄下的所有檔案與子目錄進(jìn)行相同的擁有者變更(即以遞回的方式逐個(gè)變更)--help : 顯示輔助說明--version : 顯示版本
范例 :
將檔案 file1.txt 的擁有者設(shè)為 users 群體的使用者 jessie :
chown jessie:users file1.txt
將目前目錄下的所有檔案與子目錄的擁有者皆設(shè)為 users 群體的使用者 lamport :
chmod -R lamport:users *
名稱:cp
使用權(quán)限:所有使用者
使用方式:
cp [options] source dest
cp [options] source... directory
說明:將一個(gè)檔案拷貝至另一檔案,或?qū)?shù)個(gè)檔案拷貝至另一目錄。
把計(jì)?
-a 盡可能將檔案狀態(tài)、權(quán)限等資料都照原狀予以復(fù)制。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經(jīng)有相同檔名的檔案存在,則在復(fù)制前先予以刪除再行復(fù)制。
范例:
將檔案 aaa 復(fù)制(已存在),并命名為 bbb :
cp aaa bbb
將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished
名稱:cut
使用權(quán)限:所有使用者
用法:cut -cnum1-num2 filename
說明:顯示每行從開頭算起 num1 到 num2 的文字。
范例:
shell cat example
test2
this is test1
shell cut -c0-6 example ## print 開頭算起前 6 個(gè)字元
test2
this i
名稱 : find
用法 : find
使用說明 :
將檔案系統(tǒng)內(nèi)符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時(shí)間、大小、權(quán)限等不同資訊的組合,只有完全相符的才會(huì)被列出來。
find 根據(jù)下列規(guī)則判斷 path 和 expression,在命令列上第一個(gè) - ( ) , ! 之前的部份為 path,之后的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預(yù)設(shè) expression?
expression 中可使用的選項(xiàng)有二三十個(gè)之多,在此只介紹最常用的部份。
-mount, -xdev : 只檢查和指定目錄在同一個(gè)檔案系統(tǒng)下的檔案,避免列出其它檔案系統(tǒng)中的檔案
-amin n : 在過去 n 分鐘內(nèi)被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘內(nèi)被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會(huì)忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會(huì)忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區(qū)塊,c 表示字元數(shù),k 表示 kilo bytes,w 是二個(gè)位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區(qū)塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號(hào)連結(jié)
s: socket
-pid n : process id 是 n 的檔案
你可以使用 ( ) 將運(yùn)算式分隔,并使用下列運(yùn)算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"
將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f
將目前目錄及其子目錄下所有最近 20 分鐘內(nèi)更新過的檔案列出
# find . -ctime -20
名稱:less
使用權(quán)限:所有使用者
使用方式:
less [Option] filename
說明:
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內(nèi)容,不同的是 less 允許使用者往回卷動(dòng)
以瀏覽已經(jīng)看過的部份,同時(shí)因?yàn)?less 并未在一開始就讀入整個(gè)檔案,因此在遇上大型檔案的開啟時(shí),會(huì)比一般的文書編輯器(如 vi)來的快速。
范例:
指令名稱 : ln
使用權(quán)限 : 所有使用者
使用方式 : ln [options] source dist,其中 option 的格式為 :
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統(tǒng)中,有所謂的連結(jié)(link),我們可以將其視為檔案的別名,而連結(jié)又可分為兩種 : 硬連結(jié)(hard link)與軟連結(jié)(symbolic link),硬連結(jié)的意思是一個(gè)檔案可以有多個(gè)名稱,而軟連結(jié)的方式則是產(chǎn)生一個(gè)特殊的檔案,該檔案的內(nèi)容是指向另一個(gè)檔案的位置。硬連結(jié)是存在同一個(gè)檔案系統(tǒng)中,而軟連結(jié)卻可以跨越不同的檔案系統(tǒng)。
ln source dist 是產(chǎn)生一個(gè)連結(jié)(dist)到 source,至于使用硬連結(jié)或軟鏈結(jié)則由參數(shù)決定。
不論是硬連結(jié)或軟鏈結(jié)都不會(huì)將原本的檔案復(fù)制一份,只會(huì)占用非常少量的磁碟空間。
-f : 鏈結(jié)時(shí)先將與 dist 同檔名的檔案刪除-d : 允許系統(tǒng)管理者硬鏈結(jié)自己的目錄-i : 在刪除與 dist 同檔名的檔案時(shí)先進(jìn)行詢問-n : 在進(jìn)行軟連結(jié)時(shí),將 dist 視為一般的檔案-s : 進(jìn)行軟鏈結(jié)(symbolic link)-v : 在連結(jié)之前顯示其檔名-b : 將在鏈結(jié)時(shí)會(huì)被覆寫或刪除的檔案進(jìn)行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
范例 :
將檔案 yy 產(chǎn)生一個(gè) symbolic link : zz
ln -s yy zz
將檔案 yy 產(chǎn)生一個(gè) hard link : zz
ln yy xx
名稱:locate
使用權(quán)限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] [-l ] [-c]
[-U ] [-u]
locate [-Vh] [--version] [--help]
說明:
locate 讓使用者可以很快速的搜尋檔案系統(tǒng)內(nèi)是否有指定的檔案。其方法是先建立一個(gè)包括系統(tǒng)內(nèi)所有檔案名稱及路徑的資料庫,之后當(dāng)尋找時(shí)就只需查詢這個(gè)資料庫,而不必實(shí)際深入檔案系統(tǒng)之中了。
在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動(dòng)執(zhí)行。一般使用者在使用時(shí)只要用
# locate your_file_name
的型式就可以了。 參數(shù):
-u
-U
建立資料庫,-u 會(huì)由根目錄開始,-U 則可以指定開始的位置。
-e
將
排除在尋找的范圍之外。
-l
如果 是 1.則啟動(dòng)安全模式。在安全模式下,使用者不會(huì)看到權(quán)限無法看到的檔案。這會(huì)始速度減慢,因?yàn)?locate 必須至實(shí)際的檔案系統(tǒng)中取得檔案的權(quán)限資料。
-f
將特定的檔案系統(tǒng)排除在外,例如我們沒有到理要把 proc 檔案系統(tǒng)中的檔案放在資料庫中。
-q
安靜模式,不會(huì)顯示任何錯(cuò)誤訊息。
-n
至多顯示 個(gè)輸出。
-r
使用正規(guī)運(yùn)算式 做尋找的條件。
-o
指定資料庫存的名稱。
-d
指定資料庫的路徑
-h
顯示輔助訊息
-v
顯示更多的訊息
-V
顯示程式的版本訊息 范例:
locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多只顯示 100 個(gè)
locate -u : 建立資料庫
名稱 : ls
使用權(quán)限 : 所有使用者
使用方式 : ls [-alrtAFR] [name...]
說明 : 顯示指定工作目錄下之內(nèi)容(列出目前工作目錄所含之檔案及子目錄)。
-a 顯示所有檔案及目錄 (ls內(nèi)定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會(huì)列出)
-l 除檔案名稱外,亦將檔案型態(tài)、權(quán)限、擁有者、檔案大小等資訊詳細(xì)列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時(shí)間之先后次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱后加一符號(hào);例如可執(zhí)行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出
范例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈后面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細(xì)資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄于名稱后加 "/", 可執(zhí)行檔于名稱后加 "*" :
ls -AF
名稱:more
使用權(quán)限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
說明:類似 cat ,不過會(huì)以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會(huì)往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請(qǐng)按 h 。
參數(shù):-num 一次顯示的行數(shù)
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯(cuò)鍵,則會(huì)顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時(shí)會(huì)暫停的功能
-f 計(jì)算行數(shù)時(shí),以實(shí)際上的行數(shù),而非自動(dòng)換行過后的行數(shù)(有些單行字?jǐn)?shù)太長(zhǎng)的會(huì)被擴(kuò)展為兩行或兩行以上)
-p 不以卷動(dòng)的方式顯示每一頁,而是先清除螢?zāi)缓笤亠@示內(nèi)容
-c 跟 -p 相似,不同的是先顯示內(nèi)容再清除其他舊資料
-s 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號(hào) (根據(jù)環(huán)境變數(shù) TERM 指定的 terminal 而有所不同)
+/ 在每個(gè)檔案顯示前搜尋該字串(pattern),然后從該字串之后開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內(nèi)容的檔案,可為復(fù)數(shù)個(gè)數(shù)
范例:
more -s testfile 逐頁顯示 testfile 之檔案內(nèi)容,如有連續(xù)兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內(nèi)容。
名稱:mv
使用權(quán)限:所有使用者
使用方式:
mv [options] source dest
mv [options] source... directory
說明:將一個(gè)檔案移至另一檔案,或?qū)?shù)個(gè)檔案移至另一目錄。
參數(shù):-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。
范例:
將檔案 aaa 更名為 bbb :
mv aaa bbb
將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c
名稱:rm
使用權(quán)限:所有使用者
使用方式:rm [options] name...
說明:刪除檔案及目錄。
把計(jì)?
-i 刪除前逐一詢問確認(rèn)。
-f 即使原檔案屬性設(shè)為唯讀,亦直接刪除,無需逐一確認(rèn)。
-r 將目錄及以下之檔案亦逐一刪除。
范例:
刪除所有C語言程式檔;刪除前逐一詢問確認(rèn) :
rm -i *.c
將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished
名稱:rmdir
使用權(quán)限:于目前目錄有適當(dāng)權(quán)限的所有使用者
使用方式: rmdir [-p] dirName
說明: 刪除空的目錄。
參數(shù): -p 是當(dāng)子目錄被刪除后使它也成為空目錄的話,則順便一并刪除。
范例:
將工作目錄下,名為 AAA 的子目錄刪除 :
rmdir AAA
在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除后,BBB 目錄成為空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test
名稱:split
使用權(quán)限:所有使用者
使用方式:split [OPTION] [INPUT [PREFIX]]
說明:
將一個(gè)檔案分割成數(shù)個(gè)。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序?yàn)?PREFIXaa, PREFIXab...;PREFIX 預(yù)設(shè)值為 `x。若沒有 INPUT 檔或?yàn)?`-,則從標(biāo)準(zhǔn)輸入讀進(jìn)資料。
匡兜?
-b, --bytes=SIZE
SIZE 值為每一輸出檔案的大小,單位為 byte。
-C, --line-bytes=SIZE
每一輸出檔中,單行的最大 byte 數(shù)。
-l, --lines=NUMBER
NUMBER 值為每一輸出檔的列數(shù)大小。
-NUMBER
與 -l NUMBER 相同。
--verbose
于每個(gè)輸出檔被開啟前,列印出偵錯(cuò)資訊到標(biāo)準(zhǔn)錯(cuò)誤輸出。
--help
顯示輔助資訊然后離開。
--version
列出版本資訊然后離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。
范例:
PostgresSQL 大型資料庫備份與回存:
因 Postgres 允許表格大過你系統(tǒng)檔案的最大容量,所以要將表格 dump 到單一的檔案可能會(huì)有問題,使用 split進(jìn)行檔案分割。
% pg_dump dbname | split -b 1m - filename.dump.
重新載入
% createdb dbname
% cat filename.dump.* | pgsql dbname
名稱:touch
使用權(quán)限:所有使用者
使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
說明:
touch 指令改變檔案的時(shí)間記錄。 ls -l 可以顯示檔案的時(shí)間記錄。
參數(shù):
a 改變檔案的讀取時(shí)間記錄。
m 改變檔案的修改時(shí)間記錄。
c 假如目的檔案不存在,不會(huì)建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是為了與其他 unix 系統(tǒng)的相容性而保留。
r 使用參考檔的時(shí)間記錄,與 --file 的效果一樣。
d 設(shè)定時(shí)間與日期,可以使用各種不同的格式。
t 設(shè)定檔案的時(shí)間記錄,格式與 date 指令相同。
--no-create 不會(huì)建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。
范例:
最簡(jiǎn)單的使用方式,將檔案的時(shí)候記錄改為現(xiàn)在的時(shí)間。若檔案不存在,系統(tǒng)會(huì)建立一個(gè)新的檔案。
touch file
touch file1 file2
將 file 的時(shí)間記錄改為 5 月 6 日 18 點(diǎn) 3 分,公元兩千年。時(shí)間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時(shí)與分。
touch -c -t 05061803 file
touch -c -t 050618032000 file
將 file 的時(shí)間記錄改變成與 referencefile 一樣。
touch -r referencefile file
將 file 的時(shí)間記錄改成 5 月 6 日 18 點(diǎn) 3 分,公元兩千年。時(shí)間可以使用 am, pm 或是 24 小時(shí)的格式,日期可以使用其他格式如 6 May 2000 。
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
df
1.作用
df命令用來檢查文件系統(tǒng)的磁盤空間占用情況,使用權(quán)限是所有用戶。
2.格式
df [options]
3.主要參數(shù)
-s:對(duì)每個(gè)Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。
-a:遞歸地顯示指定目錄中各文件及子目錄中各文件占用的數(shù)據(jù)塊數(shù)。若既不指定-s,也不指定-a,則只顯示Names中的每一個(gè)目錄及其中的各子目錄所占的磁盤塊數(shù)。
-k:以1024字節(jié)為單位列出磁盤空間使用情況。
-x:跳過在不同文件系統(tǒng)上的目錄不予統(tǒng)計(jì)。
-l:計(jì)算所有的文件大小,對(duì)硬鏈接文件則計(jì)算多次。
-i:顯示inode信息而非塊使用量。
-h(huán):以容易理解的格式印出文件系統(tǒng)大小,例如136KB、254MB、21GB。
-P:使用POSIX輸出格式。
-T:顯示文件系統(tǒng)類型。
4.說明
df命令被廣泛地用來生成文件系統(tǒng)的使用統(tǒng)計(jì)數(shù)據(jù),它能顯示系統(tǒng)中所有的文件系統(tǒng)的信息,包括總?cè)萘?、可用的空閑空間、目前的安裝點(diǎn)等。
超級(jí)權(quán)限用戶使用df命令時(shí)會(huì)發(fā)現(xiàn)這樣的情況:某個(gè)分區(qū)的容量超過了100%。這是因?yàn)長(zhǎng)inux系統(tǒng)為超級(jí)用戶保留了10%的空間,由其單獨(dú)支配。也就是說,對(duì)于超級(jí)用戶而言,他所見到的硬盤容量將是110%。這樣的安排對(duì)于系統(tǒng)管理而言是有好處的,當(dāng)硬盤被使用的容量接近100%時(shí)系統(tǒng)管理員還可以正常工作。
5.應(yīng)用實(shí)例
Linux支持的文件系統(tǒng)非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盤空間時(shí)還可以得到文件系統(tǒng)的信息:
#df -T
文件系統(tǒng) 類型 容量 已用 可用 已用% 掛載點(diǎn)
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G
從上面除了可以看到磁盤空間的容量、使用情況外,分區(qū)的文件系統(tǒng)類型、掛載點(diǎn)等信息也一覽無遺。
top
1.作用
top命令用來顯示執(zhí)行中的程序進(jìn)程,使用權(quán)限是所有用戶。
2.格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
3.主要參數(shù)
d:指定更新的間隔,以秒計(jì)算。
q:沒有任何延遲的更新。如果使用者有超級(jí)用戶,則top命令將會(huì)以最高的優(yōu)先序執(zhí)行。
c:顯示進(jìn)程完整的路徑與名稱。
S:累積模式,會(huì)將己完成或消失的子行程的CPU時(shí)間累積起來。
s:安全模式。
i:不顯示任何閑置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數(shù),完成后將會(huì)退出top。
4.說明
top命令是Linux系統(tǒng)管理的一個(gè)主要命令,通過它可以獲得許多信息。這里我們結(jié)合圖1來說明它給出的信息。
圖1 top命令的顯示
在圖1中,第一行表示的項(xiàng)目依次為當(dāng)前時(shí)間、系統(tǒng)啟動(dòng)時(shí)間、當(dāng)前系統(tǒng)登錄用戶數(shù)目、平均負(fù)載。第二行顯示的是所有啟動(dòng)的進(jìn)程、目前運(yùn)行的、掛起 (Sleeping)的和無用(Zombie)的進(jìn)程。第三行顯示的是目前CPU的使用情況,包括系統(tǒng)占用的比例、用戶使用比例、閑置(Idle)比例。第四行顯示物理內(nèi)存的使用情況,包括總的可以使用的內(nèi)存、已用內(nèi)存、空閑內(nèi)存、緩沖區(qū)占用的內(nèi)存。第五行顯示交換分區(qū)使用情況,包括總的交換分區(qū)、使用的、空閑的和用于高速緩存的大小。第六行顯示的項(xiàng)目最多,下面列出了詳細(xì)解釋。
PID(Process ID):進(jìn)程標(biāo)示號(hào)。
USER:進(jìn)程所有者的用戶名。
PR:進(jìn)程的優(yōu)先級(jí)別。
NI:進(jìn)程的優(yōu)先級(jí)別數(shù)值。
VIRT:進(jìn)程占用的虛擬內(nèi)存值。
RES:進(jìn)程占用的物理內(nèi)存值。
SHR:進(jìn)程使用的共享內(nèi)存值。
S:進(jìn)程的狀態(tài),其中S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值是負(fù)數(shù)。
%CPU:該進(jìn)程占用的CPU使用率。
%MEM:該進(jìn)程占用的物理內(nèi)存和總內(nèi)存的百分比。
TIME+:該進(jìn)程啟動(dòng)后占用的總的CPU時(shí)間。
Command:進(jìn)程啟動(dòng)的啟動(dòng)命令名稱,如果這一行顯示不下,進(jìn)程會(huì)有一個(gè)完整的命令行。
top命令使用過程中,還可以使用一些交互的命令來完成其它參數(shù)的功能。這些命令是通過快捷鍵啟動(dòng)的。
空格:立刻刷新。
P:根據(jù)CPU使用大小進(jìn)行排序。
T:根據(jù)時(shí)間、累計(jì)時(shí)間排序。
q:退出top命令。
m:切換顯示內(nèi)存信息。
t:切換顯示進(jìn)程和CPU狀態(tài)信息。
c:切換顯示命令名稱和完整命令行。
M:根據(jù)使用內(nèi)存大小進(jìn)行排序。
W:將當(dāng)前設(shè)置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
可以看到,top命令是一個(gè)功能十分強(qiáng)大的監(jiān)控系統(tǒng)的工具,對(duì)于系統(tǒng)管理員而言尤其重要。但是,它的缺點(diǎn)是會(huì)消耗很多系統(tǒng)資源。
5.應(yīng)用實(shí)例
使用top命令可以監(jiān)視指定用戶,缺省情況是監(jiān)視所有用戶的進(jìn)程。如果想查看指定用戶的情況,在終端中按“U”鍵,然后輸入用戶名,系統(tǒng)就會(huì)切換為指定用戶的進(jìn)程運(yùn)行界面,見圖2所示。
圖2 使用top命令監(jiān)視指定用戶
free
1.作用
free命令用來顯示內(nèi)存的使用情況,使用權(quán)限是所有用戶。
2.格式
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]
3.主要參數(shù)
-b -k -m:分別以字節(jié)(KB、MB)為單位顯示內(nèi)存使用情況。
-s delay:顯示每隔多少秒數(shù)來顯示一次內(nèi)存使用情況。
-t:顯示內(nèi)存總和列。
-o:不顯示緩沖區(qū)調(diào)節(jié)列。
4.應(yīng)用實(shí)例
free命令是用來查看內(nèi)存使用情況的主要命令。和top命令相比,它的優(yōu)點(diǎn)是使用簡(jiǎn)單,并且只占用很少的系統(tǒng)資源。通過-S參數(shù)可以使用free命令不間斷地監(jiān)視有多少內(nèi)存在使用,這樣可以把它當(dāng)作一個(gè)方便實(shí)時(shí)監(jiān)控器。
#free -b -s5
使用這個(gè)命令后終端會(huì)連續(xù)不斷地報(bào)告內(nèi)存使用情況(以字節(jié)為單位),每5秒更新一次。
quota
1.作用
quota命令用來顯示磁盤使用情況和限制情況,使用權(quán)限超級(jí)用戶。
2.格式
quota [-g][-u][-v][-p] 用戶名 組名
3.參數(shù)
-g:顯示用戶所在組的磁盤使用限制。
-u:顯示用戶的磁盤使用限制。
-v:顯示沒有分配空間的文件系統(tǒng)的分配情況。
-p:顯示簡(jiǎn)化信息。
4.應(yīng)用實(shí)例
在企業(yè)應(yīng)用中磁盤配額非常重要,普通用戶要學(xué)會(huì)看懂自己的磁盤使用情況。要查詢自己的磁盤配額可以使用下面命令(下例中用戶賬號(hào)是caojh):
#quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000
以上顯示ID號(hào)為502的caojh賬號(hào),文件個(gè)數(shù)設(shè)置為500~1000個(gè),硬盤空間限制設(shè)置為200M