工作常用指令
===============================================================================================================
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 ---搜尋檔案
<syntax> 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 ".".
===============================================================================================================
留言列表