在以前的博客《Linux下經常使用命令與使用技巧》中,介紹了Linux的經常使用命令,在今天的博客中,給你們介紹其餘的有用命令。linux
在Linux下工做,咱們不可避免地要和文件格式作鬥爭,相信你們也深入地體會過格式的複雜性。今天給你們介紹幾個在實際中常常用到的和格式相關的命令。android
在linux命令行中輸入漢字的時候有時候會顯示亂碼,這時咱們就須要設置一下系統的編碼方式。能夠先用locale命令查看當前的編碼方式,若是不是zh_CN.utf8,咱們就能夠經過export命令進行設置,設置命令以下:
export LC_ALL=zh_CN.utf-8
經過上面的命令就能夠將系統格式設置成utf8,固然也能夠設置成其餘格式。可是utf8是Linux下默認的編碼方式,建議設置成utf8。vim
有時候,咱們在將windows下的文件拷貝到linux下的時候,會出現文件名亂碼。這是由於windows下默認的編碼方式是gbk,而linux下是utf8,編碼方式不一致致使gbk的文件名沒法正常顯示。這時能夠經過convmv命令進行文件名的轉碼,經常使用選項以下:windows
選項 | 說明 |
---|---|
-f enc | 原文件名的編碼方式 |
-t enc | 新的編碼方式 |
-r | 遞歸處理整個目錄下的全部文件 |
-notest | 實際作轉碼,不然只是列出哪些文件須要轉碼 |
例如咱們將windows某個目錄下的全部文件拷貝到linux下,而後對其進行轉碼:
convmv –f gbk –t utf8 –notest –r dir/*markdown
不少狀況下,咱們並不僅有文件名是gbk編碼,文件內容也是gbk的,這時咱們就須要對文件內容進行轉碼,這個能夠經過iconv命令實現,經常使用選項以下:編輯器
選項 | 說明 |
---|---|
-f,–from-code=名稱 | 原始文本編碼 |
-t,–to-code=名稱 | 輸出編碼 |
-o,–output=FILE | 輸出文件 |
注意一點,這個命令不會直接修改文件,若是沒有指定輸出文件會輸出到命令行中,通常會重定向到新文件中:
iconv –f gbk –t utf8 input_file > output_fileide
有時候,雖然windows下的文件是utf8編碼,可是放到linux下仍是有點問題。DOS下的文本文件是以\r\n做爲斷行標誌的,而linux下的文本文件是以\n做爲斷行標誌的,用vim打開時有時會在行尾顯示^M符號。爲了去除這個符號,咱們能夠利用dos2unix命令。在使用的過程當中,在該命令後面直接添加要轉換的一個或多個文件便可,該命令就會直接在源文件裏進行轉換。若是不想覆蓋源文件,能夠利用-n選項。unix2dos命令的使用方式與dos2unix命令的相似。函數
在Linux下,有時咱們想知道某個進程的id,咱們能夠經過pidof得到。若是一次啓動了多個相同的進程,咱們能夠經過killall一次性殺掉全部相同的進程。這兩個命令的參數都是進程的名字。ui
在linux下工做,咱們有時候會出現磁盤滿的狀況,能夠經過df命令查看各個盤的剩餘空間,-h可讓顯示更易懂。
除了df命令,還有一個du命令也很是有用。有時咱們想統計某個目錄佔用的空間大小,就能夠用du命令。不加任何參數的du命令會遞歸打印目錄下全部文件的大小,咱們能夠經過參數—max-depth=1來設置只打印給定目錄下可見文件和目錄的大小,從而避免打印過多。-h也可讓顯示更易懂。編碼
在linux下,咱們能夠經過scp命令實現不一樣機器之間的文件傳輸,既能夠從本地傳到遠端,也能夠從遠端傳到本地。向遠端發送文件的命令格式以下:
scp send_file root@10.136.128.48:/root
可是有時要傳遞的文件很是大或者文件個數不少,當scp命令沒執行完斷掉以後下次再進行scp會從新執行所有的複製,這就會致使作了不少無用功。避免此種狀況的方法是用rsync命令,rsync也能夠實現文件傳輸,同時針對已經發送的文件再也不重複發送。
當一個文件很大時,可能須要將文件進行切分生成多個小文件,split命令能夠實現這個功能。它既能夠用來處理文本文件,也能夠用來處理二進制文件。既能夠按照行數切分,也能夠按照字節數切分。
這個命令和shuf命令組合使用就能夠達到隨機打亂文本加切割的目的。
這兩個命令的做用是對一個包含完整路徑的文件名進行切分,切分出該文件名的不包含路徑的文件名和單純的路徑名。例如,basename /home/work/test.wav會返回test.wav,dirname /home/work/test.wav會返回/home/work。這個命令在腳本中用的比較多。
用ls命令能夠生成一個目錄下全部文件的文件名,可是文件名不包含路徑,若是想讓文件名包含路徑,則能夠用find命令實現。例如想得到/home/work/下全部wav文件的文件名,則能夠利用下面的命令:
find /home/work –name *.wav >list
生成的文件名列表能夠用來遍歷這些文件。
xxd命令爲給定的標準輸入或者文件作一次十六進制的輸出,它也能夠將十六進制輸出轉換爲原來的二進制格式。這個命令有什麼用呢?舉個例子。utf8文件包含兩種不一樣的格式:無bom和有bom。用常規的編輯器打開可能沒法區分,可是利用這個命令就能夠。用xxd查看文件的開頭是否包含EF BB BF這幾個字節便可。
在調試安卓代碼的時候,常常會遇到段錯誤,提示「Fatal signal 11 (SIGSEGV), code 2, fault addr 0x7faa993968 in tid 27841」,遇到這種錯誤會讓人頭大。有一種調試方法能夠比較容易定位出錯的位置。在上面提示中給出了一個地址,咱們能夠用arm-linux-androideabi-addr2line命令將地址反編譯成出錯的函數和行數。