1. 程式人生 > >Linux 常用命令01

Linux 常用命令01

一、編碼轉換

1、iconv

應該算是LINUX下最常用的文字編碼轉換工具,一般系統自帶。使用方法如

iconv -f gb2312 -t utf-8 filename -o newfilename

引數解釋:

-f,–from 檔案原編碼
-t,–to 轉換之後的編碼
-o,–output 轉換成功後另存為的檔名,如果省略此引數和新檔名,則將轉換結果輸出到標準輸出)

2、enca

這個和 iconv 命令一樣,也是用來轉換文字編碼的。相對於 iconv ,它有兩個優點,一是可以檢視檔案編碼,二是可以直接批量轉換資料夾下所有檔案(非遞迴)。 但它有一個非弱點的弱點,即非系統內建。下載地址:

使用方法:

//轉換編碼: -x 表示目標編碼 -L zh_CN 指定語言,這個好蛋疼,能省略麼?不省略真心不想用^^
enca -L zh_CN -x utf-8 filename
//enca -L zh_CN -x utf-8 * //可以批量轉換資料夾下所有檔案(非遞迴)
//檢視檔案編碼
enca -L zh_CN filename

這個工具不太建議使用,只是因為它不是系統內建。而且可以被 iconv 替代,如下面我簡單寫了個 iconv1 放到PATH目錄下:
複製程式碼

dir=1touchtmpforiindir/*
do
iconv -c -f gbk -t utf8 i

>tmpcptmpi
done
rm -rf tmp

複製程式碼

執行 iconv1 src/ 即可批量轉換 src 目錄下所有檔案編碼,效果同 enca 想要遞迴轉換?也很簡單:
複製程式碼

dir=$1
filelist=find $dir -type f
for i in filelistdoiconvcfgbktutf8i > tmp
mv tmp iechoi
done

複製程式碼

使用方法同上。

3、convmv

這個命令不同於上面兩個,它是用來轉換檔名中的亂碼的。比如說我們專案中一般會有 “協議文件.doc”,在LINUX下檔名就會顯示亂碼,就可以通過下面命令轉換:

convmv -f gb2312 -t utf-8 -r doc/ –notest

其它引數不用說吧,用法和 iconv 非常相似,不同的是,它內建了遞迴,即 -r 引數,另一個引數 –notest 如果不加上,表示測試顯示而非正式轉換,所以呢如果只是想看一下亂碼中的檔名是什麼,就忽略此引數吧,否則記得加上此引數。 同樣可惜的是,此命令也非一般LINUX發行版內建,下載地址同上:

二、批量搜尋和替換

1、grep

帶上 –color=auto 引數可以使用搜索的結果彩色顯示。

grep -r “find_str” dir/ –color=auto

另外,也可以使用

export GREP_OPTIONS=’–color=auto’
//或:
export GREP_OPTIONS=’–color=auto’ GREP_COLORS=’ms=01;4;31:fn=36’

來匯入 grep 的配色方案,其中 ms 表示查詢的關鍵字顏色,fn 表示查詢關鍵字所在檔名的顏色。(LINUX下,項與項之間一般使用冒號或空格分開)

帶上 –include *.{h,cpp} 可以指定搜尋的檔案格式(或檔名關鍵字)

grep -n -B2 -A3 errno ./ -r //顯示行號,顯示前2行,後3行的共6行內容

2、find

全域性替換檔案中指定字串:

find dir/ -name “*.cpp” -exec sed ‘s/vector/list/g’ -i {} \;

三、程序相關

1、lsof (list open file)

lsof -i:80

2、netstat

檢視所有端口占用情況:

netstat -anp

檢視通訊的資料是否阻塞:

netstat -tn

可以看 Recv-Q Send-Q 是否很大。

3、檢視程序詳細資訊

檢視程序完整路徑:

ll /proc/$PID/exe

四、md5加密

md5sum config.plist | cut -d ’ ’ -f1

五、zip 壓縮與解壓縮

zip -r test.zip ./test
unzip -o -d /root/ test.zip
-o:覆蓋檔案時不提示,直接覆蓋
-d:指明解壓路徑

三、批量刪除SVN目錄

find . -type d -name “.svn” | xargs rm -rf