Useful Linux Commands
蒐集一些好用卻又常忘記的linux指令
linux command
df -h | 看硬碟所剩容量 |
du -h | 看目錄所佔硬碟空間大小 |
ls -lA | grep ^d | awk '{print $8}' | xargs du -s | sort -n | 看看第一層的目錄所佔大小(單位為K)並由小到大sort,注意ls的欄位,此處dir_name在第8,所以取$8,grep ^d是指取list後開頭為d的~也就是目錄 |
find ./ -type f | wc -l | 看目錄中有多少檔案(含子目錄) |
find ./ -type f -name *.jpg -size 0 | wc -l | 同上,加上檔名條件,size條件 |
find ./ -name "*.txt" -exec grep -H "main" {} ; | 同上,加上-exec執行grep,找有"main"的檔案. 分號前面有反斜線,斜線前面要有空格. find找到的檔名會帶入{}處,給grep去用,-H是印出檔名的意思. 給grep的參數到";"處為止. |
find . -name '*.php' -not -path "./*/*"| xargs wc -l | 計算檔案有多少行,path後面參數可以排除一些不算,不然會包含子資料夾 |
find -type f -size 0 -delete | 加上-delete可把特定條件檔案刪掉! |
grep -H "main" file.txt | 找檔案內容含有main的地方 |
ls -R */*.mat | wc -l | 可以看幾層資料以下的檔案,有幾個,缺點是,必須知道是"幾層"資料夾 |
rm -r */*.mat | 可以刪除幾層資料夾以下的特定檔案 |
screen -d -r | 叫回之前在別的登入用的視窗 |
screen -ls或screen -list | 列出目前screen session |
screen -S session_name -X kill或quit | 關掉指定的session, 或是直接到上面list出的session放置處刪除session file |
ln -s 被連結檔名 捷徑檔名 | 生成一個symbolic link |
cat file1 file2 > file3 | 把file1跟file2的內容接起來,存到file3 |
scp source destination | 用ssh copy檔案 source and dest could be user@host:~/xxx/ or user@host:/tmp2/xxx/ |
sftp user@host | secure ftp連線, 連上後put,上傳get下載,lls,local端ls |
wget -O local_path remote_http_path | 從remote_http_path下載檔案存到local_path |
wget -c path | 支援續傳(第一次下載跟續傳下載都要加-c) |
nautilus . | 檔案總管(搭配Xming使用) |
dpkg-deb -x [filename.deb] [target folder] | 得到compile好的deb package |
dpkg -l | 列出機器上安裝的package |
chsh | 改變預設shell,可以是/bin/bash or /bin/tcsh |
bind '"e[A":history-search-backward' bind '"e[B":history-search-forward' | 在.bashrc中加入, 可用上下鍵搜尋開頭字相同的歷史指令 |
bindkey -k up history-search-backward bindkey -k down history-search-forward | 在.cshrc中加入,可以上下鍵搜尋開頭字相同的歷史指令 |
vim -X | 不要搜尋X server,啟動vim速度較快 |
vim command
Ctrl+W+W | 切換視窗 |
:split 檔案名 | 開新視窗 |
/ | 搜尋 |
G | 遊標移到檔案結尾 |
gg | 遊標移到檔案開頭 |
:diffsplit | 把視窗切成上下 並比較兩個檔案 遊標會移動 用紅色標出不一樣之處 |
Ctrl+V | Column Mode選取 |
Shift+i | Column Mode Insert,此時只會顯示改一行,但是按下esc,就會全部都改了! |
:%s/abc/def/g | 把abc置換為def |
u | Undo |
Ctrl+r | Redo |
set pastetoggle= | 在vimrc中寫這行,之後貼上時,進入insert mode,按下f2便可切換是否要auto-indent |
:e ++enc=utf-8 myfile.txt | 更換編碼方式 |
screen command
Ctrl+a+數字 | 切換視窗 |
Ctrl+a+c | 開新視窗 |
Ctrl+a+[ | 進入copy mode,可往上看log, 按q可離開copy mode |
Ctrl+a+a+command | 兩層screen的視窗的操作 |
git command
git status | 目前狀況 |
git add | 加入檔案 |
git commit | commit file |
git push | push到遠端 |
git pull | 從遠端pull |
git remote add origin ssh://user@host:22/~/xxx.git | 加入遠端host |
git init | 建立local端空repository |
git init --bare | 建立遠端空repository |
git clone ssh://user@host:22/~/git/xxx.git | git clone with ssh |
git mv a.txt b.txt | rename file(git will also do mv in fs) |
git mergetool | 開啟內建mergetool |
git rm --cached filename | remove file from git without delete it |
git submodule init (enter) git submodule update | clone含有submodule的project時使用這兩個command, submodule相關可參考這裡 |
git config core.sharedRepository group | 在remote設定這項,之後push可確保group writable |
~/project $ git init ~/project $ git add . ~/project $ git commit -m "first commit" ~/project $ cd ~/Dropbox/git ~/Dropbox/git $ git init --bare project.git ~/Dropbox/git $ cd ~/project ~/project $ git remote add origin ~/Dropbox/git/project.git ~/project $ git push -u origin master | git local tips |
ssh免密碼方法
在工作站執行一次下面兩行指令($代表提示字元, [ENTER]代表按enter鍵) $ ssh-keygen -t rsa [ENTER] Enter file in which to save the key (/home/ta/.ssh/id_rsa): [ENTER] Enter passphrase (empty for no passphrase): [ENTER] Enter same passphrase again: [ENTER] $ cat .ssh/id_rsa.pub > .ssh/authorized_keys |
壓縮 解壓縮
解壓縮 tar.gz | tar -zxvf filename.tar.gz |
解壓縮 tar.gz裡的檔案xxx/abc.jpg 放到指定資料夾cde | tar zxvf filename.tar.gz -C cde/ xxx/abc.jpg --strip-components=1 (意思是去掉"xxx/abc.jpg"之前"1"個資料夾的) |
壓縮 tar.gz | tar -zcvf filename.tar.gz /folder |
解壓縮 tar.bz2 | tar -jxvf filename.tar.bz2 |
壓縮 tar.bz2 | tar -jcvf filename.tar.bz2 /folder |
解開 .tar | tar -xvf filename.tar |
打包 .tar | tar -cvf filename.tar /folder |
解壓縮 gz | gunzip filename.gz (解完gz檔會消失) |
壓縮 gz | gzip filename.xxx (只能壓單檔,壓完原始檔會消失) |
解壓縮 zip | unzip filename.zip |
壓縮 zip | zip filename.xxx /folder |
解壓縮 rar | unrar x filename.rar |
壓縮 7z | 7za a filename.7z /folder/ |
解壓縮 7z | 7za x filename.7z |
壓縮 rar | rar a filename.rar folder/ |
解壓縮 rar,並放到target_folder | rar x filename.rar target_folder/ |
解壓縮 rar,不管裡面路徑,並放到target_folder | rar e filename.rar target_folder/ |
解壓縮 tar.xz | xz -d filename.tar.xz |
自動更新ip位置
dhclient -r | 釋放IP |
dhclient | 更新IP |
noip2 | no-ip的update程式 |
Dropbox使用注意事項
~/.dropbox-dist/dropboxd | dropbox服務程式 |
~/bin/dropbox | dropbox控制interface,可看dropbox help有指令說明 |
目前裝在cml10 | 一定要dropbox執行的機器改檔案才會sync |
dropbox_ch_LANG | 要把語言設好 不然執行會error |
dropbox exclude add | 加ignore目錄,似乎要給絕對路徑才會成功 |
chmod o+rx ~/Dropbox | Dropbox預設權限是700,若要link到apache,要開權限 |
google drive sync (use grive)
grive -a | 在要sync的資料夾中執行此行, 加入帳號 |
grive | 在要sync的資料夾中執行此行,就開始sync,會跑很久 |