Linux基礎命令大集合
Linux命令大集合
1.關機類命令:
一、 reboot——重啟裝置
二、power off相關命令
- -n :關閉作業系統時不執行sync(同步)操作;
- -w :不真正關閉作業系統,僅在日誌檔案“/var/log/wtmp”中
- -d :關閉作業系統時,不將操作寫入日誌檔案“/var/log/wtmp”中新增相應的記錄
- -f :強制關閉作業系統
- -i :關閉作業系統之前關閉所有的網路介面
- -h : 關閉作業系統之前將系統中所有的硬體設定為備用模式
三、shoutdown相關命令
- -c : 當執行“shoutdown -h 11:50”指令時,執行該命令可取消關機操作
- -h :將系統關機,在後面可指定時間實現定時關機
- -k :只是送出資訊給所有使用者,但不是實際關機
- -r :shoutdown 之後重新啟動
- -t <秒數>:送出警告資訊和刪除資訊之間要延遲多少秒
四、halt相關命令
- -d :不要在wtmp中記錄
- -f :強制關閉系統
- -i :在halt之前,關閉全部的網路介面
- -n :halt前,不用先執行sync
- -p :halt之後,執行poweroff
- -w :僅在wtmp中記錄,而不實際結束系統
2.目錄及檔案管理類命令:
左枝
一、pwd命令(用於顯示工作目錄)--------(英文全拼:print work directory)
pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。
語法:pwd [ --help] [--version ]
--help 線上幫助
--version 顯示版本資訊
例項:
檢視當前所在目錄:
輸出結果。
二、mkdir命令(用於建立目錄)---------(英文全拼:make directory)
語法:mkdir [-p] dirName
引數說明:
- -p確保目錄名稱存在,不存在的就建一個。
例項
在工作目錄下,建立一個名為runoob的子目錄:
在工作目錄下的runoob2目錄中,建立一個名為test的子目錄。
若runoob2目錄原本不存在,則建立一個。(注:本例若不加-p 引數,且原本runoob2目錄不存在,則產生錯誤。)
mkdir -p runoob2/test
三、rmdir命令(刪除空的目錄)--------(英文全拼:remove directory)
語法:rmdir [ -p ]dirName
引數說明:
-p是當子目錄被刪除後使它也成為空目錄的話,則順便一併刪除。
例項:
將工作目錄下,名為AAA的子目錄刪除:rmdir AAA
在工作目錄下的BBB目錄中,刪除名為Test 的子目錄。若Test刪除後,BBB目錄成為空目錄,則BBB亦予刪除。
rmdir -p BBB/Test
四、mv命令(用來為檔案或目錄改名、或將檔案或目錄移入其他位置)-------(英文全拼:move file)
語法:mv [ options ] source dest
mv [ options ] source... directory
引數說明:
- -b: 當目標檔案或目錄存在時,在執行覆蓋前,會為其建立一個備份。
- -i :如果指定移動的源目錄或檔案與目標的目錄或檔案同名,則會先詢問是否覆蓋舊檔案,輸入y表示直接覆蓋,輸入n表示取消該操作。
- -f : 如果指定移動的源目錄或檔案與目標的目錄或檔案同名,不會詢問,直接覆蓋舊檔案。
- -n: 不要覆蓋任何已經存在的檔案或目錄。
- -u:當原始檔比目標檔案新或者目標檔案不存在時,才執行移動操作。
mv引數設定與執行結果
命令格式 | 執行結果 |
mv source_file(檔案) dest_file(檔案) | 將原始檔名source_file改為目標檔名dest_file |
mv source_file(檔案) dest_directory(目錄) | 將檔案source_file 到目標目錄dest_directory中 |
mv source_directory(目錄) dest_directory(目錄) | 目錄名 dest_directory 已存在,將source——directory移動到目錄名dest_directory中;目錄名dest_directory不存在則source_directory改名為目錄名dest_directory |
mv source_directory(目錄)dest_file(檔案) | 出錯 |
例項
將檔案aaa改名為bbb: mv aaa bbb
將info目錄放入logs目錄中。注意,如果logs 目錄不存在,則該命令將info改名為logs。
mv info/ logs
將/usr/runoob 下的所有檔案和目錄移到當前目錄下,命令列為:
$ mv /usr/runoob/* .
五、cp命令(用於複製檔案或目錄)--------(英文:copy file)
語法:cp[ options ] source dest
或 cp[ options] source...directory
引數說明:
- shi-a:此選項通常在複製目錄時使用,它保留連結、檔案屬性,並複製目錄下的所有內容。其作用等於dpR引數組合。
- -d:複製時保留連結。這裡所說的連結相當於Windows系統中的快捷方式。
- -f :覆蓋已經存在的目標檔案而不給出提示。
- -i:與-f選項相反,在覆蓋目標檔案之前給出提示,要求使用者確認是否覆蓋,回答“y”時目標檔案將被覆蓋。
- -p: 除複製檔案的內容外,還把修改時間和訪問許可權也複製到新檔案中。
- -r :若給出的原始檔是一個目錄檔案,此時將複製該目錄下所有的子目錄和檔案。
- -l :不復制檔案,只是生成連結檔案。
例項
使用指令cp將當前目錄test/下的所有檔案複製到新目錄newtest下,輸入如下命令:
$ cp -r test/ newtest
六、du命令
du (英文全拼:disk usage)命令用於顯示目錄或檔案的大小。
du 會顯示指定的目錄或檔案所佔用的磁碟空間。
語法
du [-abcDhHklmsSx][-L <符號連線>][-X <檔案>][--block-size][--exclude=<目錄或檔案>][--max-depth=<目錄層數>][--help][--version][目錄或檔案]
引數說明:
- -a或-all 顯示目錄中個別檔案的大小。
- -b或-bytes 顯示目錄或檔案大小時,以byte為單位。
- -c或--total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和。
- -D或--dereference-args 顯示指定符號連線的原始檔大小。
- -h或--human-readable 以K,M,G為單位,提高資訊的可讀性。
- -H或--si 與-h引數相同,但是K,M,G是以1000為換算單位。
- -k或--kilobytes 以1024 bytes為單位。
- -l或--count-links 重複計算硬體連線的檔案。
- -L<符號連線>或--dereference<符號連線> 顯示選項中所指定符號連線的原始檔大小。
- -m或--megabytes 以1MB為單位。
- -s或--summarize 僅顯示總計。
- -S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。
- -x或--one-file-xystem 以一開始處理時的檔案系統為準,若遇上其它不同的檔案系統目錄則略過。
- -X<檔案>或--exclude-from=<檔案> 在<檔案>指定目錄或檔案。
- --exclude=<目錄或檔案> 略過指定的目錄或檔案。
- --max-depth=<目錄層數> 超過指定層數的目錄後,予以忽略。
- --help 顯示幫助。
- --version 顯示版本資訊。
例項
顯示目錄或者檔案所佔空間:
# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .
只顯示當前目錄下面的子目錄的目錄大小和當前目錄的總的大小,最下面的1288為當前目錄的總大小
顯示指定檔案所佔空間
# du log2012.log
300 log2012.log
方便閱讀的格式顯示test目錄所佔空間情況:
# du -h test
608K test/test6
308K test/test4
4.0K test/scf/lib
4.0K test/scf/service/deploy/product
4.0K test/scf/service/deploy/info
12K test/scf/service/deploy
16K test/scf/service
4.0K test/scf/doc
4.0K test/scf/bin
32K test/scf
8.0K test/test3
1.3M test
七、rm命令
rm(英文全拼:remove)命令用於刪除一個檔案或者目錄。
語法
rm [options] name...
引數:
- -i 刪除前逐一詢問確認。
- -f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
- -r 將目錄及以下之檔案亦逐一刪除。
例項
刪除檔案可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:
# rm test.txt
rm:是否刪除 一般檔案 "test.txt"? y
# rm homework
rm: 無法刪除目錄"homework": 是一個目錄
# rm -r homework
rm:是否刪除 目錄 "homework"? y
刪除當前目錄下的所有檔案及目錄,命令列為:
rm -r *
檔案一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。
八、stat命令
stat命令用於顯示inode內容。
stat以文字的格式來顯示inode的內容。
語法
stat [檔案或目錄]
例項
檢視 testfile 檔案的inode內容內容,可以用以下命令:
# stat testfile
執行以上命令輸出結果:
# stat testfile #輸入命令
File: `testfile'
Size: 102 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 1265161 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-13 14:07:20.000000000 +0800
Modify: 2014-08-13 14:07:07.000000000 +0800
Change: 2014-08-13 14:07:07.000000000 +0800
九、file命令
file命令用於辨識檔案型別。
通過file指令,我們得以辨識該檔案的型別。
語法
file [-bcLvz][-f <名稱檔案>][-m <魔法數字檔案>...][檔案或目錄...]
引數:
-
- -b 列出辨識結果時,不顯示檔名稱。
- -c 詳細顯示指令執行過程,便於排錯或分析程式執行的情形。
- -f<名稱檔案> 指定名稱檔案,其內容有一個或多個檔名稱時,讓file依序辨識這些檔案,格式為每列一個檔名稱。
- -L 直接顯示符號連線所指向的檔案的類別。
- -m<魔法數字檔案> 指定魔法數字檔案。
- -v 顯示版本資訊。
- -z 嘗試去解讀壓縮檔案的內容。
- [檔案或目錄...] 要確定型別的檔案列表,多個檔案之間使用空格分開,可以使用shell萬用字元匹配多個檔案。
例項
顯示檔案型別:
[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text
[root@localhost ~]# file -b install.log <== 不顯示檔名稱
UTF-8 Unicode text
[root@localhost ~]# file -i install.log <== 顯示MIME類別。
install.log: text/plain; charset=utf-8
[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8
顯示符號連結的檔案型別
[root@localhost ~]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail
[root@localhost ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'
[root@localhost ~]# file -L /var/mail
/var/mail: directory
[root@localhost ~]# file /var/spool/mail
/var/spool/mail: directory
[root@localhost ~]# file -L /var/spool/mail
/var/spool/mail: directory
十、whereis命令
whereis命令用於查詢檔案。
該指令會在特定目錄中查詢符合條件的檔案。這些檔案應屬於原始程式碼、二進位制檔案,或是幫助檔案。
該指令只能用於查詢二進位制檔案、原始碼檔案和man手冊頁,一般檔案的定位需使用locate命令。
語法
whereis [-bfmsu][-B <目錄>...][-M <目錄>...][-S <目錄>...][檔案...]
引數:
-
- -b 只查詢二進位制檔案。
- -B<目錄> 只在設定的目錄下查詢二進位制檔案。
- -f 不顯示檔名前的路徑名稱。
- -m 只查詢說明檔案。
- -M<目錄> 只在設定的目錄下查詢說明檔案。
- -s 只查詢原始程式碼檔案。
- -S<目錄> 只在設定的目錄下查詢原始程式碼檔案。
- -u 查詢不包含指定型別的檔案。
例項
使用指令"whereis"檢視指令"bash"的位置,輸入如下命令:
$ whereis bash
上面的指令執行後,輸出資訊如下所示:
bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz
注意:以上輸出資訊從左至右分別為查詢的程式名、bash路徑、bash的man 手冊頁路徑。
如果使用者需要單獨查詢二進位制檔案或幫助檔案,可使用如下命令:
$ whereis -b bash
$ whereis -m bash
輸出資訊如下:
$ whereis -b bash #顯示bash 命令的二進位制程式
bash: /bin/bash /etc/bash.bashrc /usr/share/bash # bash命令的二進位制程式的地址
$ whereis -m bash #顯示bash 命令的幫助檔案
bash: /usr/share/man/man1/bash.1.gz #bash命令的幫助檔案地址
十一、ls命令
ls(英文全拼:list files)命令用於顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。
語法
ls [-alrtAFR] [name...]
引數:
-
-
-
- -a 顯示所有檔案及目錄 (.開頭的隱藏檔案也會列出)
- -l 除檔名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出
- -r 將檔案以相反次序顯示(原定依英文字母次序)
- -t 將檔案依建立時間之先後次序列出
- -A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
- -F 在列出的檔名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
- -R 若目錄下有檔案,則以下之檔案亦皆依序列出
-
-
例項
列出根目錄(\)下的所有目錄:
# ls /
bin dev lib media net root srv upload www
boot etc lib64 misc opt sbin sys usr
home lost+found mnt proc selinux tmp var
列出目前工作目錄下所有名稱是 s 開頭的檔案,越新的排越後面 :
ls -ltr s*
將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin
列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF
十二、dd命令
dd命令用於讀取、轉換並輸出資料。
dd可從標準輸入或檔案中讀取資料,根據指定的格式來轉換資料,再輸出到檔案、裝置或標準輸出。
引數說明:
-
-
- if=檔名:輸入檔名,預設為標準輸入。即指定原始檔。
- of=檔名:輸出檔名,預設為標準輸出。即指定目的檔案。
- ibs=bytes:一次讀入bytes個位元組,即指定一個塊大小為bytes個位元組。
obs=bytes:一次輸出bytes個位元組,即指定一個塊大小為bytes個位元組。
bs=bytes:同時設定讀入/輸出的塊大小為bytes個位元組。 - cbs=bytes:一次轉換bytes個位元組,即指定轉換緩衝區大小。
- skip=blocks:從輸入檔案開頭跳過blocks個塊後再開始複製。
- seek=blocks:從輸出檔案開頭跳過blocks個塊後再開始複製。
- count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的位元組數。
- conv=<關鍵字>,關鍵字可以有以下11種:
- conversion:用指定的引數轉換檔案。
- ascii:轉換ebcdic為ascii
- ebcdic:轉換ascii為ebcdic
- ibm:轉換ascii為alternate ebcdic
- block:把每一行轉換為長度為cbs,不足部分用空格填充
- unblock:使每一行的長度都為cbs,不足部分用空格填充
- lcase:把大寫字元轉換為小寫字元
- ucase:把小寫字元轉換為大寫字元
- swab:交換輸入的每對位元組
- noerror:出錯時不停止
- notrunc:不截短輸出檔案
- sync:將每個輸入塊填充到ibs個位元組,不足部分用空(NUL)字元補齊。
- --help:顯示幫助資訊
- --version:顯示版本資訊
-
例項
在Linux 下製作啟動盤,可使用如下命令:
dd if=boot.img of=/dev/fd0 bs=1440k
將testfile檔案中的所有英文字母轉換為大寫,然後轉成為testfile_1檔案,在命令提示符中使用如下命令:
dd if=testfile_2 of=testfile_1 conv=ucase
其中testfile_2 的內容為:
$ cat testfile_2 #testfile_2的內容
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
轉換完成後,testfile_1 的內容如下:
$ dd if=testfile_2 of=testfile_1 conv=ucase #使用dd 命令,大小寫轉換記錄了0+1 的讀入
記錄了0+1 的寫出
95位元組(95 B)已複製,0.000131446 秒,723 KB/s
cmd@hdd-desktop:~$ cat testfile_1 #檢視轉換後的testfile_1檔案內容
HELLO LINUX!
LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
THIS IS A LINUX TESTFILE!
LINUX TEST #testfile_2中的所有字元都變成了大寫字母
由標準輸入裝置讀入字串,並將字串轉換成大寫後,再輸出到標準輸出裝置,使用的命令為:
dd conv=ucase
輸入以上命令後按回車鍵,輸入字串,再按回車鍵,按組合鍵Ctrl+D 退出,出現以下結果:
$ dd conv=ucase
Hello Linux! #輸入字串後按回車鍵
HELLO LINUX! #按組合鍵Ctrl+D退出,轉換成大寫結果
記錄了0+1 的讀入
記錄了0+1 的寫出
13位元組(13 B)已複製,12.1558 秒,0.0 KB/s
十三、which命令
which命令用於查詢檔案。
which指令會在環境變數$PATH設定的目錄裡查詢符合條件的檔案。
語法
which [檔案...]
引數:
-
-
- -n<檔名長度> 指定檔名長度,指定的長度必須大於或等於所有檔案中最長的檔名。
- -p<檔名長度> 與-n引數相同,但此處的<檔名長度>包括了檔案的路徑。
- -w 指定輸出時欄位的寬度。
- -V 顯示版本資訊。
-
例項
使用指令"which"檢視指令"bash"的絕對路徑,輸入如下命令:
$ which bash
上面的指令執行後,輸出資訊如下所示:
/bin/bash #bash可執行程式的絕對路徑
右枝
一、cd命令
cd(英文全拼:change directory)命令用於切換當前工作目錄。
其中 dirName 表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home 目錄 (也就是剛 login 時所在的目錄)。
另外,~也表示為 home 目錄 的意思,.則是表示目前所在的目錄,..則表示目前目錄位置的上一層目錄。
語法
cd [dirName]
-
-
- dirName:要切換的目標目錄。
-
例項
跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home 目錄 :
cd ~
跳到目前目錄的上上兩層 :
cd ../..
二、touch命令
touch命令用於修改檔案或者目錄的時間屬性,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。
ls -l 可以顯示檔案的時間記錄。
語法
touch [-acfm][-d<日期時間>][-r<參考檔案或目錄>] [-t<日期時間>][--help][--version][檔案或目錄…]
引數說明:
-
-
- a 改變檔案的讀取時間記錄。
- m 改變檔案的修改時間記錄。
- c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
- f 不使用,是為了與其他 unix 系統的相容性而保留。
- r 使用參考檔的時間記錄,與 --file 的效果一樣。
- d 設定時間與日期,可以使用各種不同的格式。
- t 設定檔案的時間記錄,格式與 date 指令相同。
- --no-create 不會建立新檔案。
- --help 列出指令格式。
- --version 列出版本訊息。
-
例項
使用指令"touch"修改檔案"testfile"的時間屬性為當前系統時間,輸入如下命令:
$ touch testfile #修改檔案的時間屬性
首先,使用ls命令檢視testfile檔案的屬性,如下所示:
$ ls -l testfile #檢視檔案的時間屬性
#原來檔案的修改時間為16:09
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
執行指令"touch"修改檔案屬性以後,並再次檢視該檔案的時間屬性,如下所示:
$ touch testfile #修改檔案時間屬性為當前系統時間
$ ls -l testfile #檢視檔案的時間屬性
#修改後檔案的時間屬性為當前系統時間
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"時,如果指定的檔案不存在,則將建立一個新的空白檔案。例如,在當前目錄下,使用該指令建立一個空白檔案"file",輸入如下命令:
$ touch file #建立一個名為“file”的新的空白檔案
三、cat命令(用於連線檔案並列印到標準輸出裝置上)=======(英文全拼:concatenate)
使用許可權
所有使用者
語法格式
cat [-AbeEnstTuv] [--help] [--version] fileName
引數說明:
-n 或 --number:由 1 開始對所有輸出的行數編號。
-b 或 --number-nonblank:和 -n 相似,只不過對於空白行不編號。
-s 或 --squeeze-blank:當遇到有連續兩行以上的空白行,就代換為一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符號,除了 LFD 和 TAB 之外。
-E 或 --show-ends: 在每行結束處顯示 $。
-T 或 --show-tabs: 將 TAB 字元顯示為 ^I。
-A, --show-all:等價於 -vET。
-e:等價於"-vE"選項;
-t:等價於"-vT"選項;
例項:
把 textfile1 的文件內容加上行號後輸入 textfile2 這個文件裡:
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的文件內容加上行號(空白行不加)之後將內容附加到 textfile3 文件裡:
cat -b textfile1 textfile2 >> textfile3
清空 /etc/test.txt 文件內容:
cat /dev/null > /etc/test.txt
cat 也可以用來製作映象檔案。例如要製作軟盤的映象檔案,將軟盤放好後輸入:
cat /dev/fd0 > OUTFILE
相反的,如果想把 image file 寫到軟盤,輸入:
cat IMG_FILE > /dev/fd0
注:
-
-
-
-
- 1. OUTFILE 指輸出的映象檔名。
- 2. IMG_FILE 指映象檔案。
- 3. 若從映象檔案寫回 device 時,device 容量需與相當。
- 4. 通常用製作開機磁片。
-
-
-
四、more命令/less命令
more 命令類似 cat,不過會以一頁一頁的形式顯示,更方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明檔案,請按 h 。
語法
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
引數:
-
-
- -num 一次顯示的行數
- -d 提示使用者,在畫面下方顯示 [Press space to continue, 'q' to quit.] ,如果使用者按錯鍵,則會顯示 [Press 'h' for instructions.] 而不是 '嗶' 聲
- -l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
- -f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴充套件為兩行或兩行以上)
- -p 不以捲動的方式顯示每一頁,而是先清除螢幕後再顯示內容
- -c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
- -s 當遇到有連續兩行以上的空白行,就代換為一行的空白行
- -u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
- +/pattern 在每個文件顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
- +num 從第 num 行開始顯示
- fileNames 欲顯示內容的文件,可為複數個數
-
例項
逐頁顯示 testfile 文件內容,如有連續兩行以上空白行則以一行空白行顯示。
more -s testfile
從第 20 行開始顯示 testfile 之文件內容。
more +20 testfile
常用操作命令
-
-
- Enter 向下n行,需要定義。預設為1行
- Ctrl+F 向下滾動一屏
- 空格鍵 向下滾動一屏
- Ctrl+B 返回上一屏
- = 輸出當前行的行號
- :f 輸出檔名和當前行的行號
- V 呼叫vi編輯器
- !命令 呼叫Shell,並執行命令
- q 退出more
-
==========================================
less 與 more 類似,但使用 less 可以隨意瀏覽檔案,而 more 僅能向前移動,卻不能向後移動,而且 less 在檢視之前不會載入整個檔案。
語法
less [引數] 檔案
引數說明:
-
-
- -b <緩衝區大小> 設定緩衝區的大小
- -e 當檔案顯示結束後,自動離開
- -f 強迫開啟特殊檔案,例如外圍裝置代號、目錄和二進位制檔案
- -g 只標誌最後搜尋的關鍵詞
- -i 忽略搜尋時的大小寫
- -m 顯示類似more命令的百分比
- -N 顯示每行的行號
- -o <檔名> 將less 輸出的內容在指定檔案中儲存起來
- -Q 不使用警告音
- -s 顯示連續空行為一行
- -S 行過長時間將超出部分捨棄
- -x <數字> 將"tab"鍵顯示為規定的數字空格
- /字串:向下搜尋"字串"的功能
- ?字串:向上搜尋"字串"的功能
- n:重複前一個搜尋(與 / 或 ? 有關)
- N:反向重複前一個搜尋(與 / 或 ? 有關)
- b 向上翻一頁
- d 向後翻半頁
- h 顯示幫助介面
- Q 退出less 命令
- u 向前滾動半頁
- y 向前滾動一行
- 空格鍵 滾動一頁
- 回車鍵 滾動一行
- [pagedown]: 向下翻動一頁
- [pageup]: 向上翻動一頁
-
例項
1、檢視檔案
less log2013.log
2、ps檢視程序資訊並通過less分頁顯示
ps -ef |less
3、檢視命令歷史使用記錄並通過less分頁顯示
[root@localhost test]# history | less
22 scp -r tomcat6.0.32 root@192.168.120.203:/opt/soft
23 cd ..
24 scp -r web root@192.168.120.203:/opt/
25 cd soft
26 ls
4、瀏覽多個檔案
less log2013.log log2014.log
說明:
輸入 :n後,切換到 log2014.log
輸入 :p 後,切換到log2013.log
附加備註
1.全屏導航
-
-
-
- ctrl + F - 向前移動一屏
- ctrl + B - 向後移動一屏
- ctrl + D - 向前移動半屏
- ctrl + U - 向後移動半屏
-
-
2.單行導航
-
-
-
- j - 向前移動一行
- k - 向後移動一行
-
-
3.其它導航
-
-
-
- G - 移動到最後一行
- g - 移動到第一行
- q / ZZ - 退出 less 命令
-
-
4.其它有用的命令
-
-
-
- v - 使用配置的編輯器編輯當前檔案
- h - 顯示 less 的幫助文件
- &pattern - 僅顯示匹配模式的行,而不是整個檔案
-
-
5.標記導航
當使用 less 檢視大檔案時,可以在任何一個位置作標記,可以通過命令導航到標有特定標記的文字位置:
-
-
- ma - 使用 a 標記文字的當前位置
- 'a - 導航到標記 a 處
-
五、wc命令
wc命令用於計算字數。
利用wc指令我們可以計算檔案的位元組數,字數,或者列數,若不指定檔名,或所賦予的檔案稱為“-”,則wc指令會從標準輸入裝置讀取資料。
語法
wc [-clw] [-help] [-version] [檔案...]
引數:
-c或--bytes或--chars只顯示Bytes數。
-
-
- -l或--lines顯示行數。
- -w或--words只顯示字數。
- --help線上幫助。
- --version顯示版本資訊。
-
例項
在某些情況下,wc將計算指定檔案的行數,字數,以及位元組數。使用的命令為:
wc測試檔案
先檢視testfile檔案的內容,可以看到:
$ cat測試檔案 Linux網路變得越來越普遍,但是安全性常常被忽略問題。不幸的是,在當今環境下,所有網路都是潛在的黑客目標,將tp-secret軍事研究網路從小型家庭LAN傳輸出去。 Linux Network Securty致力於在網路環境中保護Linux的安全,其中需要考慮整個網路的安全性,而不僅僅是隔離的機器。 它結合了理論和實踐技巧,教管理員如何安裝和安裝使用安全性應用程式,以及應用程式如何工作以及為什麼必要。
使用wc統計,結果如下:
$ wc testfile#testfile檔案的統計資訊 3 92 598 testfile#testfile檔案的行數為3,單詞數92,位元組數598
其中,3個數字分別表示測試檔案檔案的行數,單詞數,以及該檔案的位元組數。
如果想同時統計多個檔案的資訊,例如同時統計testfile,testfile_1,testfile_2,可使用如下命令:
wc testfile testfile_1 testfile_2#統計三個檔案的資訊
輸出結果如下:
$ wc testfile testfile_1 testfile_2#統計三個檔案的資訊 3 92 598測試檔案#第一個檔案行數為3,單詞數92,位元組數598 9 18 78 testfile_1#第二個檔案的行數為9,單詞數18,位元組數78 3 6 32 testfile_2#第三個檔案的行數為3,單詞數6,位元組數32 15 116 708總用量#三個檔案總共的行數為15,單詞數116,位元組數708
六、head/tail命令
head 命令可用於檢視檔案的開頭部分的內容,有一個常用的引數-n用於顯示行數,預設為 10,即顯示 10 行的內容。
命令格式:
head [引數][檔案]
引數:
-
-
-
- -q 隱藏檔名
- -v 顯示檔名
- -c<數目> 顯示的位元組數。
-
-
- -n<行數> 顯示的行數。
例項
要顯示 runoob_notes.log 檔案的開頭 10 行,請輸入以下命令:
head runoob_notes.log
顯示 notes.log 檔案的開頭 5 行,請輸入以下命令:
head -n 5 runoob_notes.log
顯示檔案前 20 個位元組:
head -c 20 runoob_notes.log
==================================================================
tail 命令可用於檢視檔案的內容,有一個常用的引數-f常用於查閱正在改變的日誌檔案。
tail -f filename會把 filename 檔案裡的最尾部的內容顯示在螢幕上,並且不斷重新整理,只要 filename 更新就可以看到最新的檔案內容。
命令格式:
tail [引數][檔案]
引數:
-
-
-
- -f 迴圈讀取
- -q 不顯示處理資訊
- -v 顯示詳細的處理資訊
- -c<數目> 顯示的位元組數
- -n<行數> 顯示檔案的尾部 n 行內容
- --pid=PID 與-f合用,表示在程序ID,PID死掉之後結束
- -q, --quiet, --silent 從不輸出給出檔名的首部
- -s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒
-
-
例項
要顯示 notes.log 檔案的最後 10 行,請輸入以下命令:
tail notes.log
要跟蹤名為 notes.log 的檔案的增長情況,請輸入以下命令:
tail -f notes.log
此命令顯示 notes.log 檔案的最後 10 行。當將某些行新增至 notes.log 檔案時,tail 命令會繼續顯示這些行。 顯示一直繼續,直到您按下(Ctrl-C)組合鍵停止顯示。
顯示檔案 notes.log 的內容,從第 20 行至檔案末尾:
tail -n +20 notes.log
顯示檔案 notes.log 的最後 10 個字元:
tail -c 10 notes.log
七、sort命令
sort命令用於將文字檔案內容加以排序。
sort可針對文字檔案的內容,以行為單位來排序。
語法
sort [-bcdfimMnr][-o<輸出檔案>][-t<分隔字元>][+<起始欄位>-<結束欄位>][--help][--verison][檔案]
引數說明:
-
-
-
- -b 忽略每行前面開始出的空格字元。
- -c 檢查檔案是否已經按照順序排序。
- -d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元。
- -f 排序時,將小寫字母視為大寫字母。
- -i 排序時,除了040至176之間的ASCII字元外,忽略其他的字元。
- -m 將幾個排序好的檔案進行合併。
- -M 將前面3個字母依照月份的縮寫進行排序。
- -n 依照數值的大小排序。
- -u 意味著是唯一的(unique),輸出的結果是去完重了的。
-
- -o<輸出檔案> 將排序後的結果存入指定的檔案。
- -r 以相反的順序來排序。
-
-
- -t<分隔字元> 指定排序時所用的欄位分隔字元。
- +<起始欄位>-<結束欄位> 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
- --help 顯示幫助。
- --version 顯示版本資訊。
例項
在使用sort命令以預設的式對檔案的行進行排序,使用的命令如下:
sort testfile
sort 命令將以預設的方式將文字檔案的第一列以ASCII 碼的次序排列,並將結果輸出到標準輸出。
使用 cat命令顯示testfile檔案可知其原有的排序如下:
$ cat testfile #testfile檔案原有排序
test 30Hello95Linux85
使用sort命令重排後的結果如下:
$ sort testfile #重排結果 Hello95Linux85
test 30
八、uniq命令
uniq 命令用於檢查及刪除文字檔案中重複出現的行列,一般與 sort 命令結合使用。
uniq 可檢查文字檔案中重複出現的行列。
語法
uniq [-cdu][-f<欄位>][-s<字元位置>][-w<字元位置>][--help][--version][輸入檔案][輸出檔案]
引數:
-
-
- -c或--count 在每列旁邊顯示該行重複出現的次數。
- -d或--repeated 僅顯示重複出現的行列。
- -f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位。
- -s<字元位置>或--skip-chars=<字元位置> 忽略比較指定的字元。
- -u或--unique 僅顯示出一次的行列。
- -w<字元位置>或--check-chars=<字元位置> 指定要比較的字元。
- --help 顯示幫助。
- --version 顯示版本資訊。
- [輸入檔案] 指定已排序好的文字檔案。如果不指定此項,則從標準讀取資料;
- [輸出檔案] 指定輸出的檔案。如果不指定此選項,則將內容顯示到標準輸出裝置(顯示終端)。
- [輸入檔案] 指定已排序好的文字檔案。如果不指定此項,則從標準讀取資料;
-
例項
檔案testfile中第 2、3、5、6、7、9行為相同的行,使用 uniq 命令刪除重複的行,可使用以下命令:
uniq testfile
testfile中的原有內容為:
$ cat testfile #原有內容
test 30
test 30
test 30Hello95Hello95Hello95Hello95Linux85Linux85
使用uniq 命令刪除重複的行後,有如下輸出結果:
$ uniq testfile #刪除重複行後的內容
test 30Hello95Linux85
檢查檔案並刪除檔案中重複出現的行,並在行首顯示該行重複出現的次數。使用如下命令:
uniq -c testfile
結果輸出如下:
$ uniq -c testfile #刪除重複行後的內容 3 test 30#前面的數字的意義為該行共出現了3次 4Hello95#前面的數字的意義為該行共出現了4次 2Linux85#前面的數字的意義為該行共出現了2次
當重複的行並不相鄰時,uniq 命令是不起作用的,即若檔案內容為以下時,uniq 命令不起作用:
$ cat testfile1 # 原有內容
test 30Hello95Linux85
test 30Hello95Linux85
test 30Hello95Linux85
這時我們就可以使用 sort:
$ sort testfile1 | uniq
Hello95Linux85
test 30
統計各行在檔案中出現的次數:
$ sort testfile1 | uniq -c
3Hello953Linux853 test 30
在檔案中找出重複的行:
$ sort testfile1 | uniq -d
Hello95Linux85
test 30
九、grep命令
grep 命令用於查詢檔案裡符合條件的字串。
grep 指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。
若不指定任何檔名稱,或是所給予的檔名為-,則 grep 指令會從標準輸入裝置讀取資料。
語法
grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<範本樣式>][-f<範本檔案>][--help][範本樣式][檔案或目錄...]
引數:
-a 或 --text: 不要忽略二進位制的資料。
-
- -A<顯示行數> 或 --after-context=<顯示行數>: 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
- -b 或 --byte-offset: 在顯示符合樣式的那一行之前,標示出該行第一個字元的編號。
- -B<顯示行數> 或 --before-context=<顯示行數>: 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。
- -c 或 --count: 計算符合樣式的列數。
- -C<顯示行數> 或 --context=<顯示行數>或-<顯示行數>: 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。
- -d <動作> 或 --directories=<動作>: 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。
- -e<範本樣式> 或 --regexp=<範本樣式>: 指定字串做為查詢檔案內容的樣式。
- -E 或 --extended-regexp: 將樣式為延伸的正則表示式來使用。
- -f<規則檔案> 或 --file=<規則檔案>: 指定規則檔案,其內容含有一個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行一個規則樣式。
- -F 或 --fixed-regexp: 將樣式視為固定字串的列表。
- -G 或 --basic-regexp: 將樣式視為普通的表示法來使用。
- -h 或 --no-filename: 在顯示符合樣式的那一行之前,不標示該行所屬的檔名稱。
- -H 或 --with-filename: 在顯示符合樣式的那一行之前,表示該行所屬的檔名稱。
- -i 或 --ignore-case: 忽略字元大小寫的差別。
- -l 或 --file-with-matches: 列出檔案內容符合指定的樣式的檔名稱。
- -L 或 --files-without-match: 列出檔案內容不符合指定的樣式的檔名稱。
- -n 或 --line-number: 在顯示符合樣式的那一行之前,標示出該行的列數編號。
- -o 或 --only-matching: 只顯示匹配PATTERN 部分。
- -q 或 --quiet或--silent: 不顯示任何資訊。
- -r 或 --recursive: 此引數的效果和指定"-d recurse"引數相同。
- -s 或 --no-messages: 不顯示錯誤資訊。
- -v 或 --invert-match: 顯示不包含匹配文字的所有行。
- -V 或 --version: 顯示版本資訊。
- -w 或 --word-regexp: 只顯示全字符合的列。
- -x --line-regexp: 只顯示全列符合的列。
- -y: 此引數的效果和指定"-i"引數相同。
例項
1、在當前目錄中,查詢字尾有 file 字樣的檔案中包含 test 字串的檔案,並打印出該字串的行。
此時,可以使用如下命令:
grep test *file
結果如下所示:
$ grep test test*#查詢字首有“test”的檔案包含“test”字串的檔案
testfile1:This a Linux testfile!#列出testfile1 檔案中包含test字元的行
testfile_2:Thisis a linux testfile!#列出testfile_2 檔案中包含test字元的行
testfile_2:Linux test #列出testfile_2 檔案中包含test字元的行
2、以遞迴的方式查詢符合條件的檔案。
例如,
查詢指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有檔案中包含字串"update"的檔案,
並打印出該字串所在行的內容,使用的命令為:
grep -r update /etc/acpi
輸出結果如下:
$ grep -r update
/etc/acpi #以遞迴的方式查詢“etc/acpi” #下包含“update”的檔案
/etc/acpi/ac.d/85-anacron.sh:#(Things like the slocate updatedb cause a lot of IO.)Rather than
/etc/acpi/resume.d/85-anacron.sh:#(Things like the slocate updatedb cause a lot of IO.)Rather than
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update
3、反向查詢。前面各個例子是查詢並打印出符合條件的行,通過"-v"引數可以打印出不符合條件行的內容。
查詢檔名中包含 test 的檔案中不包含test 的行,此時,使用的命令為:
grep -v test *test*
結果如下所示:
$ grep-v test*#查詢檔名中包含test 的檔案中不包含test 的行
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linuxis a free unix-type opterating system.
十、find命令
find 命令用來在指定目錄下查詢檔案。
任何位於引數之前的字串都將被視為欲查詢的目錄名。
如果使用該命令時,不設定任何引數,則 find 命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。
語法
find path -option [-print][-exec-ok command ]{} \;
引數說明:
find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之後的是 expression。
如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預設 expression。
expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。
-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去n天內被讀取過的檔案
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去n天內被修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。
-type c : 檔案型別是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案
你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
例項
將當前目錄及其子目錄下所有檔案字尾為.c的檔案列出來:
# find . -name "*.c"
將目前目錄其其下子目錄中所有一般檔案列出
# find . -type f
將當前目錄及其子目錄下所有最近 20 天內更新過的檔案列出:
# find . -ctime -20
查詢 /var/log 目錄中更改時間在 7 日以前的普通檔案,並在刪除之前詢問它們:
# find /var/log -type f -mtime +7 -ok rm {} \;
查詢當前目錄中檔案屬主具有讀、寫許可權,並且檔案所屬組的使用者和其他使用者具有讀許可權的檔案:
# find . -type f -perm 644 -exec ls -l {} \;
查詢系統中所有檔案長度為 0 的普通檔案,並列出它們的完整路徑:
# find / -type f -size 0 -exec ls -l {} \;
十一、cut命令
cut命令用於顯示每行從開頭算起 num1 到 num2 的文字。
語法
cut [-bn][file]
cut [-c][file]
cut [-df][file]
使用說明:
cut 命令從檔案的每一行剪下位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。
引數:
-
-
- -b :以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 -n 標誌。
- -c :以字元為單位進行分割。
- -d :自定義分隔符,預設為製表符。
- -f :與-d一起使用,指定顯示哪個區域。
- -n :取消分割多位元組字元。僅和 -b 標誌一起使用。如果字元的最後一個位元組落在由 -b 標誌的 List 引數指示的
範圍之內,該字元將被寫出;否則,該字元將被排除
-
例項
當你執行who命令時,會輸出類似如下的內容:
$ who
rocrocket :02009-01-0811:07
rocrocket pts/02009-01-0811:23(:0.0)
rocrocket pts/12009-01-0814:15(:0.0)
如果我們想提取每一行的第3個位元組,就這樣:
$ who|cut -b 3
c
c
十二、locate命令
locate命令用於查詢符合條件的文件,他會去儲存文件和目錄名稱的資料庫內,查詢合乎範本樣式條件的文件或目錄。
一般情況我們只需要輸入locate your_file_name即可查詢指定檔案。
語法
locate [-d ][--help][--version][範本樣式...]
引數:
-
-
- -b, --basename -- 僅匹配路徑名的基本名稱
- -c, --count -- 只輸出找到的數量
- -d, --database DBPATH -- 使用 DBPATH 指定的資料庫,而不是預設資料庫 /var/lib/mlocate/mlocate.db
- -e, --existing -- 僅列印當前現有檔案的條目
- -1 -- 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到許可權無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的 許可權資料。
- -0, --null -- 在輸出上帶有NUL的單獨條目
- -S, --statistics -- 不搜尋條目,列印有關每個資料庫的統計資訊
- -q -- 安靜模式,不會顯示任何錯誤訊息。
- -P, --nofollow, -H -- 檢查檔案存在時不要遵循尾隨的符號連結
- -l, --limit, -n LIMIT -- 將輸出(或計數)限制為LIMIT個條目
- -n -- 至多顯示 n個輸出。
- -m, --mmap -- 被忽略,為了向後相容
- -r, --regexp REGEXP -- 使用基本正則表示式
- --regex -- 使用擴充套件正則表示式
- -q, --quiet -- 安靜模式,不會顯示任何錯誤訊息
- -s, --stdio -- 被忽略,為了向後相容
- -o -- 指定資料庫存的名稱。
- -h, --help -- 顯示幫助
- -i, --ignore-case -- 忽略大小寫
- -V, --version -- 顯示版本資訊
-
例項
查詢 passwd 檔案,輸入以下命令:
locate passwd
搜尋 etc 目錄下所有以 sh 開頭的檔案 :
locate /etc/sh
忽略大小寫搜尋當前使用者目錄下所有以 r 開頭的檔案 :
locate -i ~/r
附加說明
locate 與 find 不同: find 是去硬碟找,locate 只在 /var/lib/slocate 資料庫中找。
locate 的速度比 find 快,它並不是真的查詢,而是查資料庫,一般檔案資料庫在 /var/lib/slocate/slocate.db 中,
所以 locate 的查詢並不是實時的,而是以資料庫的更新為準,一般是系統自己維護,也可以手工升級資料庫 ,命令為:
updatedb
預設情況下 updatedb 每天執行一次。
十三、who/whoami命令
who命令用於顯示系統中有哪些使用者正在上面,顯示的資料包含了使用者 ID、使用的終端機、從哪邊連上來的、上線時間、呆滯時間、CPU 使用量、動作等等。
使用許可權:所有使用者都可使用。
語法
who -[husfV][user]
引數說明:
-
-
-
- -H 或 --heading:顯示各欄位的標題資訊列;
- -i 或 -u 或 --idle:顯示閒置時間,若該使用者在前一分鐘之內有進行任何動作,將標示成"."號,如果該使用者已超過24小時沒有任何動作,則標示出"old"字串;
- -m:此引數的效果和指定"am i"字串相同;
- -q 或--count:只顯示登入系統的帳號名稱和總人數;
- -s:此引數將忽略不予處理,僅負責解決who指令其他版本的相容性問題;
- -w 或-T或--mesg或--message或--writable:顯示使用者的資訊狀態列;
- --help:線上幫助;
- --version:顯示版本資訊。
-
-
例項
顯示當前登入系統的使用者
# who //顯示當前登入系統的使用者
root tty7 2014-05-1312:12(:0)
root pts/02014-05-1417:09(:0.0)
root pts/12014-05-1418:51(192.168.1.17)
root pts/22014-05-1419:48(192.168.1.17)
顯示標題欄
# who -H
NAME LINE TIME COMMENT
root tty7 2014-05-1312:12(:0)
root pts/02014-05-1417:09(:0.0)
root pts/12014-05-1418:51(192.168.1.17)
root pts/22014-05-1419:48(192.168.1.17)
顯示使用者登入來源
# who -l -H
NAME LINE TIME IDLE PID COMMENT
LOGIN tty4 2014-05-1312:11852 id=4
LOGIN tty5 2014-05-1312:11855 id=5
LOGIN tty2 2014-05-1312:11862 id=2
LOGIN tty3 2014-05-1312:11864 id=3
LOGIN tty6 2014-05-1312:11867 id=6
LOGIN tty1 2014-05-1312:111021 id=1
顯示終端屬性
# who -T -H
NAME LINE TIME COMMENT
root + tty7 2014-05-1312:12(:0)
root + pts/02014-05-1417:09(:0.0)
root - pts/12014-05-1418:51(192.168.1.17)
root - pts/22014-05-1419:48(192.168.1.17)
只顯示當前使用者
# who -m -H
NAME LINE TIME COMMENT
root pts/12014-05-1418:51(192.168.1.17)
精簡模式顯示
# who -q
root root root root
# users=4
==========================
whoami命令用於顯示自身使用者名稱稱。
顯示自身的使用者名稱稱,本指令相當於執行"id -un"指令。
語法
whoami [--help][--version]
引數說明:
-
-
- --help 線上幫助。
- --version 顯示版本資訊。
-
例項
顯示使用者名稱
# whoami
root
十四、ln命令(一個非常重要命令,它的功能是為某一個檔案在另外一個位置建立一個同步的連結)(英文全拼:link files)
當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在 其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁碟空間。
語法
ln [引數][原始檔或目錄][目標檔案或目錄]
其中引數的格式為
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
命令功能:
Linux檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 :
硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。
硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
不論是硬連結或軟連結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。
軟連結:
-
-
- 1.軟連結,以路徑的形式存在。類似於Windows作業系統中的快捷方式
- 2.軟連結可以 跨檔案系統 ,硬連結不可以
- 3.軟連結可以對一個不存在的檔名進行連結
- 4.軟連結可以對目錄進行連結
-
硬連結:
-
-
- 1.硬連結,以檔案副本的形式存在。但不佔用實際空間。
- 2.不允許給目錄建立硬連結
- 3.硬連結只有在同一個檔案系統中才能建立
-
命令引數
必要引數:
-
-
-
-
- -b 刪除,覆蓋以前建立的連結
- -d 允許超級使用者製作目錄的硬連結
- -f 強制執行
- -i 互動模式,檔案存在則提示使用者是否覆蓋
-
- -n 把符號連結視為一般目錄
- -s 軟連結(符號連結)
- -v 顯示詳細的處理過程
-
-
選擇引數:
-
-
- -S "-S<字尾備份字串> "或 "--suffix=<字尾備份字串>"
- -V "-V<備份方式>"或"--version-control=<備份方式>"
- --help 顯示幫助資訊
- --version 顯示版本資訊
-
例項
給檔案建立軟連結,為log2013.log檔案建立軟連結link2013,如果log2013.log丟失,link2013將失效:
ln -s log2013.log link2013
輸出:
[root@localhost test]# ll
-rw-r--r--1 root bin 6111-1306:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 1112-0716:01 link2013 -> log2013.log
-rw-r--r--1 root bin 6111-1306:03 log2013.log
給檔案建立硬連結,為log2013.log建立硬連結ln2013,log2013.log與ln2013的各項屬性相同
ln log2013.log ln2013
輸出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 1112-0716:01 link2013 -> log2013.log
-rw-r--r--1 root bin 6111-1306:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 1112-0716:01 link2013 -> log2013.log
-rw-r--r--2 root bin 6111-1306:03 ln2013
-rw-r--r--2 root bin 6111-1306:03 log2013.log