那些你可能不常用卻很有用的Linux命令及配置

1. du -sh directory     查詢directory佔用磁盤空間的大小du -sh * 可查看當前目錄下所有文件夾所佔空間大小,如果直接用du -sh可查詢當前目錄佔用的磁盤空間。

  1. long@long-Ubuntu:~$ du -sh *  
  2. 28K forsystempro  
  3. 370M    Git  
  4. 12M ipbench2  
  5. 761M    linux-3.7.1  
  6. 719M    linux-3.7.3  
  7. 184M    mywork_g1_s2  
long@long-Ubuntu:~$ du -sh *
28K	forsystempro
370M	Git
12M	ipbench2
761M	linux-3.7.1
719M	linux-3.7.3
184M	mywork_g1_s2

2. grep -v [pattern] [file1, file2...]      用來輸出文件中不包含pattern形式的行。

                   
3. ls --full-time       顯示文件被修改的詳細時間,包括年月日時分秒,還有時區。
           
  1. long@long-Ubuntu:~$ ls --full-time  
  2. 總用量 188  
  3. drwxrwxr-x  2 long long  4096 2013-01-05 09:19:16.849998240 +0800 forsystempro  
  4. drwxrwxr-x  3 long long  4096 2013-01-03 12:16:27.023333001 +0800 Git  
  5. drwxr-xr-x 10 long long  4096 2013-03-05 23:27:21.436202000 +0800 ipbench2  
  6. drwxrwxr-x 24 long long  4096 2013-03-07 13:58:52.808348013 +0800 linux-3.7.1  
  7. drwxrwxr-x 23 long long  4096 2013-02-24 16:48:08.186917994 +0800 linux-3.7.3  
long@long-Ubuntu:~$ ls --full-time
總用量 188
drwxrwxr-x  2 long long  4096 2013-01-05 09:19:16.849998240 +0800 forsystempro
drwxrwxr-x  3 long long  4096 2013-01-03 12:16:27.023333001 +0800 Git
drwxr-xr-x 10 long long  4096 2013-03-05 23:27:21.436202000 +0800 ipbench2
drwxrwxr-x 24 long long  4096 2013-03-07 13:58:52.808348013 +0800 linux-3.7.1
drwxrwxr-x 23 long long  4096 2013-02-24 16:48:08.186917994 +0800 linux-3.7.3

                                   
4. 統計文件總數
包括當前目錄及子目錄:find . -type f | wc -l
統計子目錄個數:ls -lR|grep "^d"|wc -l
參考鏈接:http://bbs.linuxeden.com/thread-165574-1-4.html
                                                       
5. 修改系統時間並保存
修改系統日期:date -s yy/mm/dd 
修改系統時鐘:date -s hh/mm/ss
將修改後的時間保存到CMOS:clock -w
                                                         
6. 通配符進行文件名匹配
(1)使用星號"* "可以匹配文件名中的任何字符串;
(2)使用問號"?"可以匹配文件名中的單個字符;
(3)使用 [...]可以用來匹配方括號[] 中的任何字符。在這一方法中,還可以使用一個橫槓 -來連
接兩個字母或數字,以此來表示一個範圍, 使用 [!...] 不匹配 [] 中的任意字符。
參考鏈接:http://www.lupaworld.com/home/space-16106-do-blog-id-114802.html
                            
7. 讀取內存的相關信息--hexdump & od
如果因某種需要,想直接從內存的某個位置讀取數據,譬如BIOS的一些信息,是可以在進入系統之後讀取出來的,所需要讀取的文件就是/dev/mem
已知我要讀取的位置偏移是0xFF4F0, 讀取長度爲8 bytes。那麼可以用 hexdump 直接讀取出來:
[root@localhost ~]# hexdump -C -n 8 -s 0xff4f0 /dev/mem 
000ff4f0  31 41 43 42 54 30 35 31                           |1ACBT051|
000ff4f8
也可以通過 od 命令讀取:
[root@localhost ~]# od -c  -N 8 -j 0x0FF4F0 /dev/mem 
3772360   1   A   C   B   T   0   5   1
3772370


8. 關閉控制檯響鈴

(1)關閉命令行的響鈴:
打開/etc/inputrc
文件中應該有一行如下內容:
#set bell-style none
這一行就是用來打開或者關閉控制檯命令行響鈴的,當前狀態是被註釋掉的,因此刪除'#'即可,
set bell-style none
當然,如果文件中沒有這一行內容的話,直接添加上去即可。
這個更改會在下一次啓動系統生效。

(2)關閉vi編輯器的響鈴:
打開/etc/virc或/etc/vim/vimrc,想該文件中添加一行:
set vb t_vb= 
這個修改是即時生效的。編輯完成之後,再用vi編輯其他文件,就沒有了響鈴。           
                                                         

9. Linux下獲取主板相關號信息 --  dmidecode


10. vi以標籤頁方式打開多個文件
#vi -p file1 file2
:tabp {count}  跳到前一個或者第count個文件
:tabn {count}  跳到下一個或者第count個文件
:tabc[lose]    關閉單籤標籤頁,應該用:q也可以關閉.
更多信息請參考:http://hi.baidu.com/cdcchen/blog/item/abc7f6a9baefcff91f17a235.html

11. 保存iptables配置的規則
這裏是以Redhat系列的Linux爲例,具體實現方法:
#/sbin/service iptables save
保存在/etc/sysconfig/iptables中,下次系統啓動會自動引導已經保存的所有iptables規則。


12. vi中設置ctags的路徑

通常,在源碼目錄,用ctags -R ./* 就可以生成整個源碼的tags文件。這時,進入源碼的子目錄的話,發現不能引用到tags文件。
解決的方法如下:
編輯vi的配置文件.vimrc或.virc文件,添加一行內容: 

  1. <SPAN style="FONT-SIZE: 18px">set tags=tags;   
  2. set autochdir</SPAN>  
set tags=tags; 
set autochdir

     第一個命令裏的分號是必不可少的。這個命令讓vim首先在當前目錄裏尋找tags文件,如果沒有找到tags文件,或者沒有找到對應的目標,就到父目錄中查找,一直向上遞歸。因爲tags文件中記錄的路徑總是相對於tags文件所在的路徑,所以要使用第二個設置項來改變vim的當前目錄。
    當然你如果想直接使用絕對路徑,這樣也是可以的:

    set tags=/path/to/tags

更多vim配置參考:http://blog.csdn.net/longerzone/article/details/7789581  


13.grep, sed 在目錄及遞歸子目錄中的所有文件 查找並替換字符串    
查找: grep "要找的字符串" -rl 目錄
替換: sed -i "s/要查找的字符串/替換字符串/g" `grep "要查找的字符串" -rl 目錄`
注意: 替換中的 grep 命令要被 TAB 鍵上邊的那個引號包起來
參考鏈接:http://hi.baidu.com/kik107732781/blog/item/469c5d7f28c5370029388a5a.html

14. 在shell中使用ftp,避免交互
#!/bin/bash
HOST='xx.xx.xx.xx'
USER='user'
PASSWD='passwd'
FILE='yourfile'

ftp -n $HOST << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
bin
prompt
get(/put) $FILE
quit
END_SCRIPT
exit 0
通過以上的腳本,就可以實現自動的從ftp服務器上下載文件,或者上傳文件。
                                                      
15. 檢測MD5字符串的有效性
應用情形是這樣的:一個文件,存儲的全是MD5值,而且每一個MD5從頂格佔一行。行尾可能是‘\n’或者'\r\n',需要輸出所有無效的MD5的行。
使用awk,命令如下:
             
 $ awk --re-interval '$0 !~/^[0-9A-Fa-f]{32}[\r]?$/' md5file

16. diff 遞歸目錄的代碼
               $ diff -rq -x .svn dirA/ dirB/
diff中遞歸比較帶子目錄的源碼使用-r選項,只打印文件名使用-q選項。要排除一些目錄或者文件,不參與比較,可以使用-x選項。比如通常我們不比較版本代碼中的.svn中的文件。
                                                           
17. vsftp服務器上文件時間的配置
問題:直接登陸系統看到/var/ftp/pub目錄下所有文件的日期與通過ftp登陸上去看到文件的時間不一致,我的測試環境上是相差8個小時,應該就是時區設置的問題。
對vsftp的配置文件/etc/vsftpd/vsftpd.conf最後添加一行內容,如下:
               use_localtime=YES
重啓vsftpd即可。可見,默認情況下vsftpd使用的是GMT時間。
                                                          
18. 刪除名字中帶空格或換行符的目錄或文件
通常我們想刪除某些文件的時候,可以使用find+xargs命令的組合:
$find . -name filename | xargs rm -rf
但是,當搜索的文件名是某個長文件名的一部分,或者該文件的路徑中某個目錄名爲帶空格或者換行符的時候,最終無法刪除該文件。
這個原因在於當前find和xargs默認文件名的分隔符是以空格或者換行符的,遇到一次空格就認爲一個文件了。因此,處理帶空格或者換行符的文件名時將失敗,修正的方法就是修改find和xargs處理文件名是的分割符,讓它們以NULL(0)爲分隔符,修正方式如下:
$find . -name filename -print0 | xargs -0 rm -rf
這樣就實現了find輸出的所有文件名以NUL分割,xargs也以同樣的方式進一步處理find輸出的所有文件。
                                                          
19. tar排除指定目錄打包
如果 /opt/apache/目錄下有 a b c d  這幾個目錄
現在要將 a b目錄tar打包,不打包c d目錄

命令如下,當前在opt目錄下
opt>  tar -zcvf apache.tar.gz --exclude=c --exclude=d    apache
opt> tar -zcvf test.tar.gz --exclude=/apache/c --exclude=apache/d   apache 

注意: 要打包的目錄要放在最後面的!、--------------------------------------------

tar分卷壓縮:tar cvzpf - somedir | split -d -b 500m (-d不是split的選項,是shell的選項,表示將tar命令的輸出作爲split的輸入)

tar多卷合併:cat x* > mytarfile.tar.gz
引用鏈接:http://blog.chinaunix.net/u/19637/showart_441607.html
                                                          
20. 非交互進行ftp下載--wget
下載單個文件:
#$wget -b ftp://user:pass@ftpserver/[dir/]file
其中[dir/]/file代表所欲下載的文件相對於ftp根目錄的路徑。

21.對於終端下命令行前綴的修改
現在很多終端下使用命令行,前綴都會標記出當前目錄,但是如果目錄很深的話,這麼長的前綴難免會影響工作,所以,我們可以使用:
  1. root@long-Ubuntu:/home/long/linux-3.7.3/drivers/uio# it's too long^C^C  
  2. root@long-Ubuntu:/home/long/linux-3.7.3/drivers/uio# PS1=#  
  3. #ls  
root@long-Ubuntu:/home/long/linux-3.7.3/drivers/uio# it's too long^C^C
root@long-Ubuntu:/home/long/linux-3.7.3/drivers/uio# PS1=#
#ls

22.添加IP地址與mac地址的關聯
  1. ip neigh add 192.168.1.226 lladdr 00:11:09:40:68:3f dev eth0 nud perm  
ip neigh add 192.168.1.226 lladdr 00:11:09:40:68:3f dev eth0 nud perm

23.網絡查找命令
用namp對局域網掃描一遍,然後查看arp緩存表就可以知道局域內ip-mac的對應了,namp比較強大也可以直接掃描mac地址和端口。
首先進行安裝:(Ubuntu下直接apt-get即可)#apt-get install nmap
進行ping掃描,打印出對掃描做出響應的主機:   
nmap -sP 192.168.1.0/24   

僅列出指定網絡上的每臺主機,不發送任何報文到目標主機:   
nmap -sL 192.168.1.0/24   

探測目標主機開放的端口,可以指定一個以逗號分隔的端口列表(如-PS22,23,25,80):   
nmap -PS 192.168.1.234  
 
使用UDP ping探測主機:   
nmap -PU 192.168.1.0/24  
 
使用頻率最高的掃描選項:SYN掃描,又稱爲半開放掃描,它不打開一個完全的TCP連接,執行得很快:   
nmap -sS 192.168.1.0/24 
執行掃描之後就可以 cat /proc/net/arp查看arp緩存表了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章