1.1 `find -regex` 與 `find -name` 的區(qū)別
若一個目錄中,有如下目錄:
susu@ubuntu:~/find_test$ lsaaa aaa 22 1susu@ubuntu:~/find_test$
可以使用 -name 進行名字匹配查詢:
susu@ubuntu:~/find_test$ find 。 -name “a*”。/aaa./aasusu@ubuntu:~/find_test$
若同樣的方式,使用 -regex 查詢,則不能得到想要的結果:
susu@ubuntu:~/find_test$ find 。 -regex “a*”susu@ubuntu:~/find_test$
出現以上結果的原因在于 -name 只要求匹配當前目錄中的文件(夾)名稱,而 -regex 則是把 find 輸出的完整結果作為匹配對象,所以上面的命令中,默認是以 a 作為開頭的字符串匹配,是不符合 -regex 規(guī)則,所以沒能匹配到想要的結果。
正確用法如下:
susu@ubuntu:~/find_test$ find 。 -regex “.*a+”。/aaa./aasusu@ubuntu:~/find_test$
注意:
根據正則表達式的語法,應該加上 .* 而不是 *,具體正則表達式語法,參見鏈接http://www.runoob.com/regexp/regexp-syntax.html。
命令選項之后的參數,可用雙引號包裹起來,也可以不用。
在 -name 語法中,可以使用星號 *,在知道部分文件名的情況下使用。但是正則表達式語法中的其他特殊字符是沒有效果的,而且兩種方式下的星號含義也不同。比如如下的操作,是找不到文件夾 “cccccc” 的。
susu@ubuntu:~/find_test$ ls1 aa cccccc mycprogram.c Program.c2 aaa mybashprogram.sh MyCProgram.csusu@ubuntu:~/find_test$ find 。 -name “c*”。/ccccccsusu@ubuntu:~/find_test$ find 。 -name “c.*”susu@ubuntu:~/find_test$
eg:
eclipse 工程文件夾下有 4 個 project:
susu@ubuntu:~/workspace$ lsRemoteSystemsTempFiles test_new_web_maventestJust test_quickstart_mavensusu@ubuntu:~/workspace$ cd 。.susu@ubuntu:~$
退回到上一層之后,用 -regex 查找 workspace 文件夾下的內容,使用如下語句:
susu@ubuntu:~$ find 。/workspace/ -regex “.*test_new.*”。/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core/state.dat./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/.markers./workspace/test_new_web_maven./workspace/test_new_web_maven/src./workspace/test_new_web_maven/src/main./workspace/test_new_web_maven/src/main/webapp./workspace/test_new_web_maven/src/main/webapp/index.jsp./workspace/test_new_web_maven/src/main/webapp/WEB-INF./workspace/test_new_web_maven/src/main/webapp/WEB-INF/web.xml./workspace/test_new_web_maven/src/main/resources./workspace/test_new_web_maven/.classpath./workspace/test_new_web_maven/.project./workspace/test_new_web_maven/target./workspace/test_new_web_maven/target/classes./workspace/test_new_web_maven/pom.xmlsusu@ubuntu:~$
1.2 Linux 命令中的 “permission denied” 問題
普通用戶在根目錄中使用 find 命令時,通常會碰到類似以下的問題:
susu@ubuntu:/$ find / -name *.txt.。.find: `。/.gvfs‘: Permission deniedfind: `。/.dbus’: Permission deniedfind: `。/.cache/dconf‘: Permission denied
因為管理員用戶 root 設置了某些文件夾“禁止”普通用戶訪問,所以普通用戶在使用以上命令時會出現如下錯誤。
解決方案:先給出鏈接,一個百度文庫,搜索關鍵字就可以看到解決方法。
/dev/null 稱為 Linux 黑洞,等價于一個只寫文件,所有寫入它的內容都會消失,既然會消失,那么該文件也是打不開的,也無法從該文件當中讀取任何內容。而解決的途徑就是把含有 permission denied 的報錯信息都輸入該文件即可。
對于可能存在該報錯信息的命令(在根目錄 / 下執(zhí)行 find 命令,通常都會有此報錯),那么可以該 find 命令后,添加一句話,比如上面的 find 命令:
susu@ubuntu:/$ find / -name *.txt 2》/dev/null
在后面加上命令 2》/dev/null 就避免了報錯問題。
1.3 find 命令忽略大小寫
只需要在命令選項前加一個 i,就可忽略大小寫。-name 換為 -iname,-regex 換為-iregex。
1.4 和文件訪問、修改以及對應時間相關的 find 命令
主要是 -mtime 和 -ctime 命令選項:
-amin n 查找系統中最后N分鐘訪問的文件 -atime n 查找系統中最后n*24小時訪問的文件 -cmin n 查找系統中最后N分鐘被改變文件狀態(tài)的文件 -ctime n 查找系統中最后n*24小時被改變文件狀態(tài)的文件 -mmin n 查找系統中最后N分鐘被改變文件數據的文件 -mtime n 查找系統中最后n*24小時被改變文件數據的文件
從上面的解釋看出,文件被改變,分為兩類,一類是文件狀態(tài)的改變,比如權限、歸屬關系,這個時候的前綴是 -c.。.(比如:-cmin n,-ctime n);一類是文件數據的改變,就是修改的文件內容,前綴是 -m.。.(-mmin n,-mtime n)。
后面的 n,有兩種,一種是 +n,一種是 -n,其各自含義如下:
-mtime -n 在 n 天之內改變文件數據的文件;-mtime +n 在 n 天之前改變文件數據的文件。
1.5 `-mindepth` 和 `-maxdepth` 的使用
限定搜索指定目錄的深度,兩者可以結合使用。其實多種命令選項都可結合使用,只要合理就行。比如:
susu@ubuntu:~/find_test$ find 。 -name “aa”。/aa./cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
檢索出了 3 個符合條件的路徑,如果限定搜索目錄最大深度不能超過 2 層,那么可使用如下語句:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -name “aa”。/aa./cccccc/aasusu@ubuntu:~/find_test$
從上面的例子可看出,對于 maxdepth,若為 1,那么就是指只在當前目錄下搜索,子目錄不再搜索。如果條件限定為搜索目錄深度最小是 2,最大是 3,那么命令可如下:
susu@ubuntu:~/find_test$ find 。 -mindepth 2 -maxdepth 3 -name “aa”。/cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
當然也可以只限定在某個固定搜索目錄深度下搜索:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -mindepth 2 -regex “.*aa.*”。/cccccc/aaa./cccccc/aasusu@ubuntu:~/find_test$
1.6 `find` 其他命令
《1》 相反匹配:
susu@ubuntu:~/find_test$ ls1 2 aa aaa cccccc mybashprogram.sh mycprogram.c MyCProgram.c Program.csusu@ubuntu:~/find_test$ susu@ubuntu:~/find_test$ find 。 -mindepth 1 -maxdepth 1 -not -name “aa*”。/MyCProgram.c./2./1./mybashprogram.sh./Program.c./cccccc./mycprogram.csusu@ubuntu:~/find_test$
《2》 在查找到的文件上執(zhí)行命令:
susu@ubuntu:~/find_test$ find 。 -maxdepth 1 -name “aa*” -exec md5sum {} ;d41d8cd98f00b204e9800998ecf8427e 。/aaad41d8cd98f00b204e9800998ecf8427e 。/aasusu@ubuntu:~/find_test$
計算 MD5 校驗和。
《3》 使用 inode 編號查找文件
任何一個文件都有一個唯一的 inode 編號,先查看每個文件的 inode 編號:
susu@ubuntu:~/find_test$ ls -i1 a*804182 aa804181 aaasusu@ubuntu:~/find_test$
然后使用 -num 命令:
susu@ubuntu:~/find_test$ find -inum 804182./aasusu@ubuntu:~/find_test$
當然以上舉例只是簡單情況,對于名字相似(特別是末尾多一個空格,看不出來差別的時候)的可使用 inode 進行辨別。
《4》 根據文件權限查找文件:
-perm ***
可用 ls -l 查看各個文件的權限:
susu@ubuntu:~/find_test$ ls -ltotal 4-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 1-rw-rw-r-- 1 susu susu 0 Jun 15 09:34 2-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aa-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aaadrwxrwxr-x 3 susu susu 4096 Jun 15 13:48 cccccc-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mybashprogram.sh-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mycprogram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 MyCProgram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 Program.csusu@ubuntu:~/find_test$
《5》 使用 -type 查找指定文件類型的文件:
find 。 -type f 普通文件find 。 -type s socket文件find 。 -type d 目錄文件find 。 -type f -name “.*” 查找所有一匿藏文件find 。 -type d -name “.*” 查找所有的隱藏目錄
下面看下具體用例。
比如,在文件夾 find_test 下,有如下的文件組成:
susu@ubuntu:~/find_test$ ls -R.:a aa aaa bbbbbb bewe.sh werrw.c./bbbbbb:bae.sh ccccc readme.txt wer.txt./bbbbbb/ccccc:wer.csusu@ubuntu:~/find_test$
如果要清空該文件夾下的所有內容,可以回退到上一層,然后使用 rm -rf find_test命令。也可以使用如下命令:
susu@ubuntu:~/find_test$ find 。 -regex “.*” -exec rm -rf {} ;rm: cannot remove directory: ‘?!痜ind: `。/bbbbbb’: No such file or directorysusu@ubuntu:~/find_test$ lssusu@ubuntu:~/find_test$
文件夾下的所有文件都已刪除,包括各層子目錄的文件夾。
2. `grep` 命令
主要作用:Linux 系統中一個文本搜索工具,能使用正則表達式搜索文本,并把搜索結果打印出來。
比如,a.txt 文件中如下內容:
susu@ubuntu:~/grep_test$ cat a.txttihis test1 werwr.dfsdfefwfgwerwer teststttttwesdf wtest234.susu@ubuntu:~/grep_test$
現在,要在 a.txt 中找所有包含“test”字符串的行,并顯示出來:
susu@ubuntu:~/grep_test$ grep “test” a.txt tihis test1 werwr. werwer teststtttt wesdf wtest234. susu@ubuntu:~/grep_test$
其中,“test”字符串在 ubuntu 的命令行下是紅色高亮顯示的。
$ grep ‘test’ d*
顯示所有以 d 開頭的文件中含有“test”關鍵字的行。
如下命令:
grep “[a-z]{5}” a.txt
表示每個字符串包含至少 5 個以上連續(xù)小寫字母的字符串。
除了搜索限定的文本,也可以搜索指定目錄下的所有文件,如下:
susu@ubuntu:~$ grep “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
注意:默認情況下,grep 只在跟定的目錄下進行搜索,不會進入子目錄,所以搜索深度只有 1 層,而且會跳出來“*** is a directory”。如果想讓其搜索所有子目錄的文件,可以使用如下語句:
susu@ubuntu:~$ grep -r “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrgrep_test/ddddd/c.txt~:werwert testtgrep_test/ddddd/c.txt~:testgrep_test/ddddd/c.txt~:testsetwtwgrep_test/ddddd/c.txt~:sdffsddfsfftetsettest sdfgrep_test/ddddd/c.txt:werwert testtgrep_test/ddddd/c.txt:testgrep_test/ddddd/c.txt:testsetwtwgrep_test/ddddd/c.txt:sdffsddfsfftetsettest sdfsusu@ubuntu:~$
或者,使用如下語句跳過子目錄:
susu@ubuntu:~$ grep -d skip “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
如果現實內容過多,可以通過管道轉到 less 上閱讀,語句如下:
susu@ubuntu:~$ grep -r “test” grep_test/* | less
note:less 是一個工具,用于文件或者其他輸入的分頁顯示,是 Linux 系統查看文本內容的工具。比如可以用以下方式打開文件:
susu@ubuntu:~/grep_test$ less a.txt
然后就會轉到一個新頁面,只顯示 a.txt 中的內容。更多關于 less 的講解,參看鏈接:http://www.cnblogs.com/peida/archive/2012/11/05/2754477.html。
3. diff 命令
diff 命令可以比較文本,也可比較目錄。比較文本,就是逐行比較,給出異同點,比較目錄時,同名的文件會進行比較,不同名的文件,會列出各自屬于哪個目錄。
比較文件:
susu@ubuntu:~/grep_test$ diff a.txt c.txt3c3《 sdfef---》 wr6c6,8《 ---》 add》 wer》 rtysusu@ubuntu:~/grep_test$
比較目錄:
susu@ubuntu:~$ diff grep_test/ workspace/diff grep_test/a.txt workspace/a.txt1,10d0《 tihis test1 werwr.《 df《 sdfef《 wf《 g《 《 werwer teststtttt《 《 wesdf wtest234.《 Only in grep_test/: b.txtOnly in grep_test/: c.txtOnly in grep_test/: c.txt~Only in grep_test/: dddddOnly in workspace/: .metadataOnly in workspace/: .recommendersOnly in workspace/: RemoteSystemsTempFilesOnly in workspace/: testJustOnly in workspace/: test_new_web_mavenOnly in workspace/: test_quickstart_mavensusu@ubuntu:~$
對于兩個文件的比較,會有兩個箭頭表示:“《”和“》”符號。符號“《”表示第一個參數代表的文件,符號“》”表示第二個參數代表的文件。上面的代碼中,首先給出提示:diff grep_test/a.txt workspace/a.txt,然后接下來是要比較的內容。
第一行,給出了“1,10d0”,結合下面的左側指向箭頭“《”,說明在第 0 行(最開始),第一個文本比第二個文本多了 1 ~ 10 行。
diff 命令中間可加入各個參數,比如:
susu@ubuntu:~/grep_test$ diff --brief a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$ diff -q a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$
-q 或者 --brief 簡化了比較的信息,只告訴兩個文本是否相同,不顯示詳細的不同之處。更多 diff 的命令參數可參考:http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html。
4. mount 命令
在 Linux 系統中,mount 命令用于掛在光盤鏡像文件、移動硬盤、U盤等。
格式:
mount [-t vfstype] [-o options] device dir
[-t vfstype] 指定所掛載的文件系統的類型,通常 mount 可自動識別,不用人為指定。常用類型如下:
光盤或光盤鏡像:iso9660DOS fat16 文件系統:msdosWindows 9x fat32 文件系統:vfatWindows NT ntfs文件系統:ntfsMount Windows 文件網絡共享:smbfsUNIX(LINUX)
[-o options] 說明掛載方式,其和上面的命令,兩者可互換。常用參數如下:
oop:用來把一個文件當成硬盤分區(qū)掛接上系統ro:采用只讀方式掛接設備rw:采用讀寫方式掛接設備iocharset:指定訪問文件系統所用字符集
device 表示要掛載的設備;dir 設備在系統上的掛載點(mount point)。
實踐操作如下。
在插入 U 盤之前,輸入以下命令:
susu@ubuntu:~$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / Solarissusu@ubuntu:~$
這地方的命令一定要加 sudo,否則什么也不會顯示。
可以看到,Linux 文件系統下,有一塊硬盤 sda ,硬盤中有 2 個分區(qū) sda1 和 sda2 。另外一個 sda5 是邏輯分區(qū)。
插入 U 盤后,重新敲一遍命令,得到如下信息:
susu@ubuntu:/$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / SolarisDisk /dev/sdb: 4057 MB, 4057989120 bytes91 heads, 45 sectors/track, 1935 cylinders, total 7925760 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/sdb1 * 63 7925759 3962848+ c W95 FAT32 (LBA)susu@ubuntu:/$
會發(fā)現,下面多出來很多信息,這個信息都是描述剛剛插入的 U 盤的。系統多了一個硬盤 sdb 和一個磁盤分區(qū) sdb1 。我們要掛載的就是磁盤分區(qū) sdb1 。
先在 /mnt/ 目錄下創(chuàng)建一個掛載點:
susu@ubuntu:/mnt$ sudo mkdir usbhd1susu@ubuntu:/mnt$ lsusbhd1susu@ubuntu:/mnt$
然后根據 mount 命令的語法,將 USB 添加到該掛載點:
susu@ubuntu:/$ mount -o loop dev/sdb1 mnt/usbhd1/mount: only root can do thatsusu@ubuntu:/$ sudo mount -o loop dev/sdb1 mnt/usbhd1/susu@ubuntu:/$ cd mnt/usbhd1/susu@ubuntu:/mnt/usbhd1$ ls???? EVM?????.txt???? ?? Microsoft Word ??.doc????? ???????????????????.pdf????05.06.07.09????-4.pdf Reimbursement Form for interview trip.xls??1_??.png System Volume Information???????????????(2010?).pdf Vocabulary.doc2012??????????(?????)-12.pdf VS2012_ULT_chs.iso????????.docx ????????????????.xlssusu@ubuntu:/mnt/usbhd1$
mount 掛載成功!
上述代碼中,剛開始沒有加 sudo,提示只有 root 可以。最后 ls ,發(fā)現是亂碼,是因為 U 盤中都是中文名字,所以顯示亂碼。可用以下命令解決此問題:
susu@ubuntu:/$ sudo mount -o iocharset=cp936 。/dev/sdb1 。/mnt/usbhd1/
卸載就相對簡單了,只需要把掛載點卸掉即可,命令如下:
susu@ubuntu:/$ sudo umount 。/mnt/usbhd1
5. ps 命令
ps 與 top 的區(qū)別:ps 是進程快照,給出了輸入 ps 命令按回車時的進程,而 top 是實時動態(tài)進程。
顯示所有進程信息:
susu@ubuntu:~$ ps -A PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:16 rcu_sched 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 migration/0 10 ? 00:00:00 watchdog/0 。..。..
顯示指定用戶信息:
susu@ubuntu:~$ ps -u susu PID TTY TIME CMD 1757 ? 00:00:00 gnome-keyring-d 1759 ? 00:00:00 init 1828 ? 00:00:04 dbus-daemon 1839 ? 00:00:00 upstart-event-b 1848 ? 00:00:00 window-stack-br 1850 ? 00:00:55 ibus-daemon 1864 ? 00:00:00 gvfsd 1874 ? 00:00:00 ibus-dconf 1875 ? 00:00:00 gvfsd-fuse 1876 ? 00:00:14 ibus-ui-gtk3 。..。..
與 grep 結合,查找特定進程:
susu@ubuntu:~$ ps -ef|grep sshsusu 5920 2409 0 17:41 pts/6 00:00:00 grep --color=auto sshsusu@ubuntu:~$
列出目前正在運行在內存中的所有程序:
susu@ubuntu:~$ ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.2 4452 2076 ? Ss 09:00 0:03 /sbin/initroot 2 0.0 0.0 0 0 ? S 09:00 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/0:0H]root 7 0.0 0.0 0 0 ? S 09:00 0:16 [rcu_sched]root 8 0.0 0.0 0 0 ? S 09:00 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S 09:00 0:00 [migration/0]root 10 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/0]root 11 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/1]root 12 0.0 0.0 0 0 ? S 09:00 0:00 [migration/1]root 13 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/1]root 14 0.0 0.0 0 0 ? S 09:00 0:03 [kworker/1:0]root 15 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/1:0H]root 16 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/2]root 17 0.0 0.0 0 0 ? S 09:00 0:00 [migration/2]。..。..
以上內容中各字段含義如下:
USER:該 process 屬于那個使用者賬號的PID :該 process 的號碼%CPU:該 process 使用掉的 CPU 資源百分比%MEM:該 process 所占用的物理內存百分比VSZ :該 process 使用掉的虛擬內存量 (Kbytes)RSS :該 process 占用的固定的內存量 (Kbytes)TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。STAT:該程序目前的狀態(tài),主要的狀態(tài)有R :該程序目前正在運作,或者是可被運作S :該程序目前正在睡眠當中 (可說是 idle 狀態(tài)),但可被某些訊號 (signal) 喚醒。T :該程序目前正在偵測或者是停止了Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆尸) 程序的狀態(tài)START:該 process 被觸發(fā)啟動的時間TIME :該 process 實際使用 CPU 運作的時間COMMAND:該程序的實際指令
6. free 命令
顯示系統中使用和空存情閑的內況:包括物理區(qū)內存,交互區(qū)內存(swap)和內核緩沖區(qū)內存(buffer),無共享內存。
7 ifconfig(interface configs)
類似于 Windows 下的 ipconfig 指令,獲取網絡接口配置信息。
顯示網絡設備信息:
susu@ubuntu:/$ ifconfigeth0 Link encap:Ethernet HWaddr 00:0c:29:36:a8:68 inet addr:192.168.168.128 Bcast:192.168.168.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe36:a868/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:53539 errors:3 dropped:1 overruns:0 frame:0 TX packets:48878 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:29473130 (29.4 MB) TX bytes:8479638 (8.4 MB) Interrupt:19 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:12501 errors:0 dropped:0 overruns:0 frame:0 TX packets:12501 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1211710 (1.2 MB) TX bytes:1211710 (1.2 MB)
抄一段對以上內容的說明:
eth0 表示第一塊網卡, 其中 HWaddr 表示網卡的物理地址,可以看到目前這個網卡的物理地址(MAC 地址)是 00:50:56:BF:26:20
inet addr 用來表示網卡的 IP 地址,此網卡的 IP 地址是 192.168.120.204,廣播地址, Bcast:192.168.120.255,掩碼地址 Mask:255.255.255.0
lo 是表示主機的回壞地址,這個一般是用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,只能在此臺主機上運行和查看所用的網絡接口。比如把 HTTP 服務器指定到回壞地址,在瀏覽器輸入 127.0.0.1 就能看到你所架 Web 網站了。但只是您能看得到,局域網的其它主機或用戶無從知道。
第一行:連接類型:Ethernet(以太網)HWaddr(硬件 MAC 地址)
第二行:網卡的IP地址、子網、掩碼
第三行:UP(代表網卡開啟狀態(tài))RUNNING(代表網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500 字節(jié) 第四、五行:接收、發(fā)送數據包情況統計第七行:接收、發(fā)送數據字節(jié)數統計信息。
根據以上的解釋說明,可用如下方式來打開和關閉網卡。
打開:
sudo ifconfig eth0 down
關閉:
sudo ifconfig eth0 up
其他功能包括:為網卡配置和刪除 IPv6 地址、配置 IP 地址、啟用 / 關閉 ARP 協議、設置網卡做大傳輸單元(ifconfig eth0 mtu 1500)等。
8. telnet 命令
主要用于遠程登錄。
telnet 程序是基于 Telnet 協議的遠程登錄客戶端程序。Telnet 協議是 Internet 遠程服務的標準協議也主要方式?,F在很多 Linux 服務器因為安全問題不再支持 Telnet 協議,改用 SSH,部分還在支持。
telnet 不僅能夠登錄遠程,然后進行遠程操作,還能查看遠程服務器狀態(tài),某端口是否可訪問。
這部分內容,暫時不作深入了解,有需要的小伙伴可自行搜索了解。
9. scp(secure copy) 命令
用于遠程文件(夾)拷貝的命令,基于 ssh。而類似功能的命令 cp 只能在本地拷貝。
格式:
scp [options] 《source_path》 《desti_path》
參數說明(網上摘抄):
-1 強制scp命令使用協議 ssh1;-2 強制scp命令使用協議 ssh2; -4 強制scp命令只使用 IPv4 尋址;-6 強制scp命令只使用 IPv6 尋址;-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語);-C 允許壓縮。(將 -C 標志傳遞給 ssh ,從而打開壓縮功能); -p 保留原文件的修改時間,訪問時間和訪問權限;-q 不顯示傳輸進度條;-r 遞歸復制整個目錄; -v 詳細方式顯示輸出。scp 和 ssh(1) 會顯示出整個過程的調試信息。這些信息用于調試連接,驗證和配置問題;-c cipher 以 cipher 將數據傳輸進行加密,這個選項將直接傳遞給 ssh;-F ssh_config 指定一個替代的 ssh 配置文件,此參數直接傳遞給 ssh; -i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給 ssh;-l limit 限定用戶所能使用的帶寬,以 `Kbit/s` 為單位;-o ssh_option 如果習慣于使用 `ssh_config(5)` 中的參數傳遞方式;-P port 注意是大寫的P,port 是指定數據傳輸用到的端口號;-S program 指定加密傳輸時所使用的程序,此程序必須能夠理解 ssh(1) 的選項。
10. zip 和 unzip 命令
壓縮、解壓命令。過于簡單,具體使用不再描述。
11. gzip 命令
gzip 與 zip 的區(qū)別:
gzip 是一個壓縮工具,適用于壓縮單個文件,其壓縮的文件的后綴為 .gz。而 zip 是一種數據結構,類似于 rar,其適用于壓縮多個文件。在 Linux 下,下載壓縮包的時候,多會看到有 tar.gz 后綴的文件,這種就是先用 tar 命令將多個文件打包成一個文件,然后再使用 gzip 命令進行壓縮,得到 tar.gz 格式,更多細節(jié)見:鏈接。
具體命令格式:
gzip [options] 《file or dir》
各參數說明:
-a 或 --ascii 使用 ASCII 文字模式。-c 或 --stdout 或 --to-stdout 把壓縮后的文件輸出到標準輸出設備,不去更動原始文件。-d 或 --decompress 或 ----uncompress 解開壓縮文件。-f 或 --force 強行壓縮文件。不理會文件名稱或硬連接是否存在以及該文件是否為符號連接。-h 或 --help 在線幫助。-l 或 --list 列出壓縮文件的相關信息。-L 或 --license 顯示版本與版權信息。-n 或 --no-name 壓縮文件時,不保存原來的文件名稱及時間戳記。-N 或 --name 壓縮文件時,保存原來的文件名稱及時間戳記。-q 或 --quiet 不顯示警告信息。-r 或 --recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。-S 《 壓縮字尾字符串 》 或 ----suffix 《 壓縮字尾字符串 》 更改壓縮字尾字符串。-t 或 --test 測試壓縮文件是否正確無誤。-v 或 --verbose 顯示指令執(zhí)行過程。-V 或 --version 顯示版本信息。-num 用指定的數字num調整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),-9 或 --best 表示最慢壓縮方法(高壓縮比)。系統缺省值為 6。
舉幾個簡單例子:
gzip * 是壓縮當前目錄下所有文件,但是不包含子目錄:
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$
其逆過程(解壓)為 gzip -d *
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -d *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$
若解壓過程中需要列出詳細信息,則為:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -dv *a.txt.gz: 18.6% -- replaced with a.txtb.txt.gz: 19.7% -- replaced with b.txtc.txt.gz: 16.7% -- replaced with c.txtgzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$
其實就是多個參數選項的結合(-d and -v -》 -dv)。
若壓縮完了,想看每個壓縮文件的詳細信息,則用如下命令:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -l * compressed uncompressed ratio uncompressed_name 81 70 18.6% a.txt 77 66 19.7% b.txt 89 78 16.7% c.txtgzip: subDir is a directory -- ignored 247 214 -4.2% (totals)susu@ubuntu:~/grep_test$
因為有一個目錄,總是跳出來一個 ignored 的信息,很討厭啊有木有,可使用 -r 選項進行地柜壓縮,壓縮一個目錄下所有的文件(包括子目錄):
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip -r *susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ cd subDir/susu@ubuntu:~/grep_test/subDir$ lsd.txt.gz e.txt.gzsusu@ubuntu:~/grep_test/subDir$
有了遞歸的壓縮,當然也有遞歸的解壓,只需要把-d換成-dr即可。
12. ll 命令
每天都在使用 ls 命令,但是今天才知道 ll 和 ls 的區(qū)別,這里發(fā)個鏈接,可詳細了解,解釋的挺清楚。【linux ls和 ll 命令】:http://blog.csdn.net/cgzhello1/article/details/7839534/
13. netstat 命令
作用:
顯示和各協議(TCP / IP / UDP / ICMP 等)相關的統計信息,檢驗本機各端口的網絡連接情況。
命令較多,暫時不打算細看,詳細信息,這里給出鏈接,netstat命令詳解:http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html。
14. kill 命令
作用:
終止正在運行的進程,進程管理常用命令。
進程分為前臺進程和后臺進程。前臺進程,可以使用 ctrl+c 來終止,后臺進程,只能使用 kill 命令終止。
首先用 ps 或者 top 來獲得進程的 id,然后再使用 kill 命令。通常,kill 命令通過向進程發(fā)送信號的方式來終止進程。默認情況下,使用編號為 15 的 TERM 信號,TERM 信號能殺死所有不能捕獲該信號的進程,對于捕獲該信號的進程,使用編號為 9 的 kill 信號,強行殺掉該進程。
命令使用方式:
kill [-options] 《PID》
更多:kill命令詳解:http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html。
15. set 命令
作用:
顯示系統中已經存在的 shell 變量,以及設置 shell 變量的新變量值。更多說明:linux set命令:http://man.linuxde.net/set。
16. su 命令
作用:
切換用戶。
上來就碰到一個錯誤:
susu@ubuntu:/$ suPassword: su: Authentication failuresusu@ubuntu:/$
原因:是 root 用戶默認是沒有密碼的,而上面的密碼部分,我輸入的是賬戶 susu 對應的密碼,并不是 root 的密碼。所有才會出錯。
解決方式就是先給 root 設置密碼,在 susu 賬戶下就可以設置:
susu@ubuntu:/$ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullysusu@ubuntu:/$
另外,用戶切換,如果想回到 root 用戶,那么使用:
susu@ubuntu:~$ sudo -i[sudo] password for susu: root@ubuntu:~#
注意:這里的 passwd,輸入的是當前賬戶(susu)對應的密碼。
也可以使用:
susu@ubuntu:/root$ su rootPassword: root@ubuntu:~#
注意:這里的 passwd,輸入的是 root 賬戶對應的密碼,而不是 susu 賬戶對應的密碼。
如果由 root 用戶切換到普通用戶,那么使用 su 《 普通用戶名 》 即可,而不能使用 sudo,在 root 用戶下,沒有 sudo 《 用戶名 》 命令。
susu@ubuntu:/$ sudo -iroot@ubuntu:~# su susususu@ubuntu:/root$ cd 。.susu@ubuntu:/$ lsbin dev initrd.img media proc sbin tmp vmlinuzboot etc lib mnt root srv usrcdrom home lost+found opt run sys varsusu@ubuntu:/$
-
Linux
+關注
關注
87文章
11207瀏覽量
208721 -
U盤
+關注
關注
7文章
488瀏覽量
63163 -
移動硬盤
+關注
關注
2文章
175瀏覽量
44230
發(fā)布評論請先 登錄
相關推薦
評論