2013年8月15日 星期四

linux工作常用指令

工作常用指令
===============================================================================================================
tar ---壓縮及打包
[root@www ~]# tar [-j|-z] [cv] [-f 建立的檔名] filename...或目錄 <==打包與壓縮
[root@www ~]# tar [-j|-z] [tv] [-f 建立的檔名]               <==察看檔名
[root@www ~]# tar [-j|-z] [xv] [-f 建立的檔名] [-C 目錄]    <==解壓縮
選項與參數:
 -c  :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename)
 -t  :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了;
 -x  :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開
        特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
 -j  :透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
 -z  :透過 gzip  的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.gz
 -v  :在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來!
 -f filename:-f 後面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項囉!
 -C 目錄    :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
其他後續練習會使用到的選項介紹:
 -p  :保留備份資料的原本權限與屬性,常用於備份(-c)重要的設定檔
 -P  :保留絕對路徑,亦即允許備份資料中含有根目錄存在之意;
 --exclude=FILE:在壓縮的過程中,不要將 FILE 打包!
Rodney使用範例
--->tar -jpcv  -f  AES-M604+backup_20090323.tar.bz2  ./29-600-PAL
--->tar -zxvf   arm-linux-2.6.tar.gz 解壓縮此檔
--->tar -zxvf  pl_1029_src.tar.gz   -C   /home/abc/    解壓縮到 /home/abc/目錄下
--->tar -jxvf   AES-M604+backup_20090323.tar.bz2 解壓縮此檔
===============================================================================================================
useradd ---新增帳號
useradd -g 0 -G 0 -p 12345 username
若要把新增的帳號變成root,要進入/etc/passwd,將帳號的uid, gid,數字都改成0
===============================================================================================================
grep用途:顯示符合樣式的列
用法:
1.grep A *
結果:將含有 A 這個字元的檔案及列顯示出來
2.grep -i A *
結果:將含有 A或a 這個字元的檔案及列顯示出來 (-i 是不分大小寫之意)
3.grep -v La data3
結果:將不含 La 的列顯示出來 (-v 是不包含之意)
4.grep -l La *
結果:只顯示那些檔案包含 La,不秀出符合的列
5.grep -n La *
結果:也秀出列號
6.dmesg | grep eth0
結果:將含有 eth0 的訊息列顯示出來
7.grep -q keyword filename
結果:若 filename 含有 keyword 則傳回 0 (真),否則傳為非 0
命令執行完之後,它的傳回值放在 $? 這個變數中,只要 echo $? 便可得知成功與否,請記住:0 為成功,非 0 為失敗 !
8.grep  seti  *.txt
在現行目錄中,所有副檔名為".txt"的檔案之內容,尋找包含"seti"字串的檔案,並列出其檔案名稱.
9.grep  -r   deepwater   *
在現行目錄中的所有檔案,包括子目錄在內,尋找包含"deepwater"字串的檔案,並列出其檔案名稱.
==============================================================================================================
1.  linux下"搜尋特定內容的檔案"的方法:
$ grep   -r   "字串"   ./          --------------遞迴搜尋此層目錄包含其下所有子目錄中,包含「字串」的所有檔案,
    若「字串」中的英文字元大小寫不同,將被視為不同字串
2.找到 Linux 的 kernel 版本
 uname  -a   或   uname   -r
Rodney使用(20090722)--- PC---- 2.6.18-53.e15
   板子-- Linux pl1029 2.4.19
===============================================================================================================
vim --Linux下的文字編輯器1.搜尋 
 /  在 c-mode 的情形下,按 / 就會在左下方出現一個 /,然後鍵入您要尋找的字串,
  按個 Enter 就會開始找。? 和 / 相同,只是 / 是向前(下)找, ? 則是向後(上)找。 
 n 繼續尋找。 
 N 繼續尋找(反向)。

2.搜尋操作(Vim 才有) 
 * 尋找游標所在處之 word(要完全符合)。 
 # 同上,但 * 是向前(下)找,# 則是向後(上)找。 
 g* 同 * ,但部份符合即可。 
 g# 同 # ,但部份符合即可。n, N 之繼續尋找鍵仍適用。
3.視窗操作 
 Ctrl+w n 即 :new。開一空的新視窗。 
 Ctrl+w s 即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。 
 Ctrl+w f 開一新視窗,並編輯游標所在處之 word 為檔名的檔案。 
 Ctrl+w q 即 :q 結束分割出來的視窗。 
 Ctrl+w o 即 :only! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。 
 Ctrl+w j 移至下視窗。 
 Ctrl+w k 移至上視窗。還記得 hjkl 的按鍵移動方式嗎? 
 :sp 檔名 開另一新視窗來編輯檔案。 
4.書籤功能 
 這又是 Vim 的一個秘密武器,簡單的說,您可以在文章中的某處做個記號(marks),然後跑到其它地方去編輯,
  在呼叫這個 mark 時又會回到原處。妙吧! 
 mx x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。 
  `x 回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。 
  'x 回到書籤設定行行首。' 是 forward quote,是 Enter 鍵隔壁那一個。
5.還原
 u 這個太重要了,就是 undo,傳統的 vi 僅支援一次 undo,Vim 及 elvis 就不只了,Vim 幾乎是沒有限制的。 
 U 在游標沒離開本行之前,回復所有編輯動作。 
 Crtl+r 這個也是很重要,就是 redo 鍵。 
 
6.複製
 yy 複製游標所在行整行。或大寫一個 Y。 
 2yy 複製兩行,y2y 也可以。ㄟ,請舉一反三好不好!:-) 
 y^ 複製至行首,或 y0。不含游標所在處字元。 
 y$ 複製至行尾。含游標所在處字元。 
 yw 複製一個 word。 
 y2w 複製兩個字。 
 yG 複製至檔尾。 
 y1G 複製至檔首。
        yl 複製一個字元
7.貼上
 p 小寫 p 代表貼至游標後(下)。 
 P 大寫 P 代表貼至游標前(上)。整行的複製,按 p 或 P 時是插入式的貼在下(上)一行。非整行的複製則是貼在游標所在處之後(前)。
8.刪除
       dd 刪除游標所在行整行
       2dd 刪除兩行
       d$ 刪除至行尾(= D)
       dw 刪除一個 word。 
       d2w 刪除兩個字。
       yG 刪除至檔尾
       dl 刪除一個字元
9.替換(substitute) 
:[range]s/pattern/string/[c,e,g,i]5.1 
range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。 
pattern 就是要被替換掉的字串,可以用 regexp 來表示。 
string 將 pattern 由 string 所取代。 
c confirm,每次替換前會詢問。 
e 不顯示 error。 
g globe,不詢問,整行替換。 
i ignore 不分大小寫。

g 大概都是要加的,否則只會替換每一行的第一個符合字串。可以合起來用,如 cgi,表示不分大小寫,整行替換,替換前要詢問是否替換。
[實例] :%s/Edwin/Edward/g 
這樣整篇文章的 Edwin 就會替換成 Edward。 

10.再command line下打
:set nu    使用顯示行號
:set ai    使用縮排
:set cin   使用C語言格式
:25        游標跳到第25行
以上set設定可以加到~/.exrc檔案中,使的每次可自動載入
:q!        離開,!表示不用再確認
:w!        儲存,!表示不用再確認
:wq!       儲存後離開,!表示不用再確認
:ZZ        儲存後離開
:x         儲存後離開

11.
更進階的搜尋、替換的例子在說明 regexp 的時候還會再詳述。目前只知道最基本的用法就可以了!其實光這樣就非常好用了。:-)

===============================================================================================================
netstat顯示等待關閉的client/server連結
==========================================================
du
du -h -->顯示目前目錄下的所有檔案使用多少空間
顯示第一層的目錄容量大小
du -h --max-depth=1 ./
--------------------------
ll -h
==========================================================
ln
用途:鏈結檔案;ln 提供一個方便的機制,使同一個檔案可以有多個檔名
用法:
1.ln f1 f2
結果:將 f1 鏈結到 f2 (硬式鏈結),f2 的檔案內容和 f1 一模一樣
2.ln -s f1 f3
結果:將 f1 鏈結到 f3 (軟式鏈結),f3 是 f1 的別名,取用 f3 時,實際上是存取 f1
軟連結
ln -s [source] [destination]
3.ln -sf f1 f3
結果:同上,唯若 f3 早已存的話,將被刪除後再重建一個新的
4.其它進一步的用法,請 man ln 查閱線上文件。

==========================================================
cp --複製檔案
cp [來源檔案] [新檔案]
----------------------------
複製目錄 --將來源目錄複製一份成新目錄名稱
cp -v -r [來源目錄] [新目錄]
cp -dpR 來複製,這樣才可以完 整地將檔案屬性複製過去(特別是那些設備檔及符號連結檔)。
==========================================================
mv --Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
mv [OPTION]... [-T] SOURCE DEST   --->更名
or:  mv [OPTION]... SOURCE... DIRECTORY   --->搬移
==========================================================
rm --刪除檔案或目錄
===============================================================================================================
screen ---Linux文字介面下的多視窗管理
$screen  --啟用多screen
$screen -R  --Reattach if possible, otherwise start a new screen.
$screen -A  --新增 screen.
$screen -d  --detach 目前的screen,或列出所有目前已存在的 detached screen.
$screen -r [pid] --reattach 一個之前 detached 的 screen,若有多個 detached的 screen,擇要指定 screen的pid.
$screen -U tell screen to use UTF-8 encoding.
$screen -ls  --列出所有目前已存在的 detached screen.
$screen -q (quiet)--新增一個視窗
$exit       --終止一個視窗
----------------------------------------------------- 
已在一個screen中可用以下的快捷鍵
Ctrl+A+C   --新增一個視窗
Ctrl+D        --刪除一個視窗
Ctrl+左右鍵 ---切換視窗
Ctrl+A        --切換視窗
Ctrl+A+D   --detach 目前的screen

===============================================================================================================
cat用途:連結檔案內容並顯示出來
用法:
1.cat dataf1
結果:顯示 dataf1 的檔案內容
2.cat dataf1 dataf2
結果:連結 dataf1, dataf1 的內容,並予顯示。
3.cat >>urmail.txt
kdkdkdkdkdkdkdkdkdk (Enter)
^D
將 cat 拿來當作簡易編輯器。
4.其它進一步的用法,請 man cat 查閱線上文件。
===============================================================================================================
id   [user name]
顯示使用者帳號訊息
==========================================================
其他
ls -al -->詳細列出所有檔案資訊(包括隱藏檔)
pwd  -->顯示當前路徑
who  -->顯示目前誰登入
df -h -->顯示磁碟分割區的使用狀況

===============================================================================================================
find ---搜尋檔案
find 從哪裡找 -name 條件 -exec 做什麼事 {}空格\; 
ex1:
find /root -name 'install.log' -exec ls -l {} \;
ex2:搜尋目前路徑下的所有檔案,找出檔名含有aaa字串的檔案
find ./ | grep aaa
=================================================================================
who
用途:顯示現在誰登入主機
用法:
who
顯示: ols3 pts/0 Aug 1 13:54
whoami 則顯示自己的登入帳號
=================================================================================
wc用途:計算檔案內字數或列數
用法:
1.wc -l dataf1
結果:顯示 dataf1 的檔案內共有幾列
2.wc -c dataf1
結果:顯示 dataf1 共有多少字元。
3.wc -w dataf1
結果:顯示 dataf1 共有多少句元。
4.其它進一步的用法,請 man wc 查閱線上文件。

=================================================================================
install ---複製檔案及設定檔案屬性權限
  用法1:
    insatll [OPTION]... SOURCE...DIRECTORY    
    insatll [OPTION]... -t DIRECTORY...SOURCE
    insatll [OPTION]... [-T] SOURCE...DEST
    複製SOURCE到DEST 或多個SOURCE到已存在的目錄DIRECTORY,同時亦可設定權限,擁有者及群組.
    
  用法2:
    install [OPTION]... -d DIRECTORY 
    新增這些指定的目錄 
     
  參數:
    -d, --directory 視所有引數為目錄名稱;
    -m, --mode 設定存取權限(如 chmod)
    -t, --copy all SOURCE arguments into DIRECTORY.
    -T, --treat DEST as a normal file.
    -v, --verbose
    -g, --group
    -o, --owner
    -p, --perserve_timestamps, apply acccess/modification times of SOURCE files to corresponding
          destination files.
            
===============================================================================================================
set
查看環境變數:
$set
===============================================================================================================
> ---輸出指向
查看執行檔(或指令)的執行結果:   1代表執行正確的輸出 ,2代表執行錯誤的輸出
[root@localhost ~]# ls 1.txt 5.txt
ls: 無法存取 5.txt: 沒有此一檔案或目錄
1.txt
[root@localhost ~]# ls 1.txt 5.txt >yesno 2>yesno
[root@localhost ~]# cat yesno
1.txt
�法存取 5.txt: 沒有此一檔案或目錄
[root@localhost ~]# ls 1.txt 5.txt >yesno 2>&1
[root@localhost ~]# cat yesno
ls: 無法存取 5.txt: 沒有此一檔案或目錄
1.txt
===============================================================================================================
排程
10 5 * * * root /usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w
使用 cron 之後,每天 5:10 Linux 系統就會自動的進行網路校時,校時若成功則寫入 BIOS 時間!
===============================================================================================================
shell programming---------------------------------------------------------------------------
[rodney@cvs3 ~]$ basename --help
Usage: basename NAME [SUFFIX]
  or:  basename OPTION
Print NAME with any leading directory components removed.
If specified, also remove a trailing SUFFIX.
      --help     display this help and exit
      --version  output version information and exit
Examples:
  basename /usr/bin/sort       Output "sort".
  basename include/stdio.h .h  Output "stdio".
---------------------------------------------------------------------------
[rodney@cvs3 ~]$ dirname --help
Usage: dirname NAME
  or:  dirname OPTION
Print NAME with its trailing /component removed; if NAME contains no /'s,
output `.' (meaning the current directory).
      --help     display this help and exit
      --version  output version information and exit
Examples:
  dirname /usr/bin/sort  Output "/usr/bin".
  dirname stdio.h        Output ".".

===============================================================================

沒有留言: