from http://elain.blog.51cto.com/3339379/623310
Linux指令大總結
------------------------------------------------------------------------------------
開機自啟動指令行模式和圖形模式:
vi /etc/inittab 改3為指令行模式 改5為圖形模式
開關機指令:
關機 init 0 shtudown -h now 重新開機 reboot init 6
從指令行模式切換圖形模式:
startx init 5
多使用者登入,可用使用 Alt+F1 Alt+F2 Alt+F3來切換
-------------------------------------------------------------------------------------
GRUB相關問題解決指令:
*無法引導*:
1)插入CD光牒,進入後按F5,然後輸入: linux rescue 回車
cd /mnt/sysimage/
cd /sbin
./grub-install /dev/hda
2)插入CD光牒,進入後按F5,然後輸入: linux rescue 回車
./grub
grub>root (hd0,0)
grub>setup (hd0)
grub>K
grub>Kernel /vmliuz-2.4.20-8
grub>initrd /initrd-2.4.30-8.img
重新開機……
*使用者名密碼忘記問題*:
選系統菜單 按“e” 。在kernel下輸入/1 按b引導核心
進入單使用者模式後 輸入:vi /etc/passwd
把root後的兩個冒号之間的"x"删除就行,重新開機……
或者進入單使用者模式後。輸入:passwd root 更改一個root密碼
檔案系統指令:
Ctrl+z 快速退出到字元輸入模式
df 檢視硬碟所剩空間
du 檢視檔案占用空間 -s -k -hs
touch 建立檔案
rm 删除檔案 -f -rf(常用)
mount 挂載 -t
用法:#mkdir usb /*建立一個挂載點*/
#cd /mnt /*進入挂載點*/
#ls
#mount -t auto /dev/sdb1 /mnt/usb
umount 解除安裝
#umount -a
#umount /mnt/usb
cal 萬年曆 如:cal 10 2008 /*顯示08年10月*/
data 更改日期 dmesg 顯示系統資訊
uname -a 顯示目前系統版本
man 顯示參考手冊 如:man -l
--help 檢視指令幫助
---------------------------------------------------------------------------------------
目錄檔案操作指令:
ls 顯示目錄下的檔案 -a -R ll -aR|more(多行顯示按ENTER翻頁)find 查找檔案
where is 尋找檔案 如:where is kqzj
clear 清屏
cd .. 傳回上一級目錄
pwd 顯示目前所在目錄的絕對路徑
cd 進入所對應的相對路徑
mkdir 建立檔案夾 -p(建立多層目錄)如:mkdir -p aaa/bbb/ccc
rmdir 删除檔案夾
cp 拷貝一個檔案
more 閱讀檔案 按Enter閱讀(每次向下翻幾行) 按q退出 再clear清屏
cat 閱讀檔案 (從頭看到尾)按PgUp向上翻
vi 同上 先按ESC,加冒号 q! (!表示強行退出)
chmod 修改檔案的權限
如:chmod 777 kqzj.img 表示kqzj完全控制
讀 寫 執行
r w x
4 2 1
chown 修改檔案的屬主
file 顯示檔案類型
檔案壓縮指令:
gzip 壓縮 -v(顯示進度)
gunzip 解壓 -fv(f表示不提示覆寫原檔案) 相當于gzip -d
zip 壓縮 格式:zip (壓縮後檔案名) (原檔案名)
unzip 解壓
bzip2 壓縮
bunzip2 解壓
tar -cvf 打包 格式:tar -cvf (壓縮後檔案名) (原檔案名)
-xvf 解包
-czvf 打包并壓縮 格式:tar -czvf kqzj.php.tar.gz kqzj.php
-zxvf 解包并解壓
也可以把tar和gz合并成tgz 如:tar -czvf kqzj.php.tgz kqzj.php
軟體包安裝指令:
*安裝二進制軟體包*
tar -zxvf 先解壓
chmod 755 再改權限
./ 執行目前目錄下的檔案 /usr/local/ 預設安裝路徑
./(程式名) & 執行程式并在背景運作
*安裝rpm軟體包*
rpm 常用指令: -ivh
-Uvh
-i 安裝一個新的安裝包
-U 更新一個系統存在的一個軟體包若不存在就安裝它
-F 更新一個軟體包若不存在就不安裝它
-v 顯示系統安裝軟體時顯示的各種資訊(路徑等)
-h 顯示系統安裝軟體時顯示的進度
-e 删除一個軟體包(接軟體名)
-q(a) 列出使用者已安裝的軟體
./setup.sh 進入安裝檔案目錄後執行直接安裝
*源代碼安裝指令*
tar -xvf 解包
./configure 配置安裝
vi README 檢視說明
make 讀取并編譯源代碼
./configure make make
使用者管理指令:
vi /etc/passwd 使用者名(passwd) :set nu 用序列形式顯示
vi /etc/shadow 密碼 (shadow)
vi /etc/login.defs 建立使用者時系統預設的資訊 #表示該資訊被注釋,不起作用
useradd 添加使用者 -u -g -G -d -s -p
如:useradd -u 502 -g root -G ftp -d /home/kqzj/ -s /bash -p 123456 kqzj
userdel 删除使用者 -r
passwd 更改使用者密碼
--------------------------------------------------------------------------------------- 程序管理指令:
who(w) 檢視目前登入的使用者 其實w更實用
last 顯示最近使用者登入的情況
top 系統監視指令
ps 顯示系統目前程序 -A -aux(基于top與ps指令的綜合)
kill 結束一個程序 -9(無條件)
踢出一個使用者,kill -9 pid(-bash)
日志管理指令:
vi /etc/syslog.conf 系統日志配置檔案
cd /var/log 進入日志檔案目錄
shell程式設計指令:
bash 執行shell腳本 bash < a.sh
=============================================
a.sh 腳本内容如下:
#! /bin/bash
abc()
{
a=kqzjhack
echo $a
}
echo hostname:$HOSTNAME
echo username:$USERNAME
echo uid:$UID
echo pwd:`pwd`
abc
ls -l
==============================================
--------------------------------------------------------------------------------------
網絡管理指令:
gdmconfig 登入界面的配置
ifconfig 檢視目前的網絡配置
setup 配置網絡
service network restart 重新開機網絡服務 stop start
service network state 檢視目前網絡狀态
vi /etc/sysconfig/network-scripts/ifcfg-eth0 用vi編輯器修改IP位址
ping 測試網絡的連通
at 計劃任務指令 [-V][-q 隊列][-f 檔案名][-mldbv] 時間
-c 作業
Vim
首先簡單的說一下vi編輯器──unix的通用編輯器,
讀作vee-eye (visual editor的簡寫)。
(這裡的vim,是改進的vi, Vi Improved簡寫,Vim 由Bram Moolenaar編寫)
vi的工作模式
分為指令模式和插入模式 以及 : ex模式;
按esc鍵就可以讓vi進入指令模式;
插入模式就是你輸入文本的模式了。
vi的一些簡單操作:
普通操作:
插入文本
指令 i 、a、I、A、o、O
i 進入指令模式輸入 i ,這時候就是和普通的文本編輯器一般了;
a 或者 輸入 a ,不同的是,a是在字元的後面插入追加文本,而i在字元的前面插入;
I 行首插入;
A 行尾插入。
o 光标下建立空行
O 光标上建立空行
修改删除文本
指令 c、x、d、D
cw 删除目前位置到該位置單詞的末尾,外加插入文本; cw删除的是英文單詞,中文不行的。
c$ or C 删除目前位置到行末,外加插入文本。
x 隻删除目前字元 如果要删一個中文字的話請用 2x (當然也可以用4x 8x) 因為一個漢字占兩個字元。
cc 删除一行,外加可以插入文本。
r 删除目前字元,外加可以插入文本。
dw 隻删除目前位置到這個單詞末。
[n]dd 删除[n]一行。 當然可以用 2dd 3dd 删除兩行,三行。
D 删除到行尾。
粘貼,複制,合并
指令 p、y、J、"(引号)
p 當你執行上面的删除操作後,你所删除的文本會留在緩存中,當你輸入 p 後會把這些删除的文本粘貼到目前光标後面。
y 組合有(yw,4yy,y$等) //複制單詞,複制四行,複制到行末 複制後可用p進行粘貼
J 把下一行合并到目前行,注意J大寫
"[x]yy 命名你的緩沖區 在複制指令前加上冒号和名稱(a到z) 例如 "ryy "d2dd "zd)複制一行到r緩沖區,删除2行到d緩沖區,删除光标到句尾到z緩沖區。
"[x]p 粘貼x緩沖區到目前位置後。
預設有1~9緩沖區 為前9次删除操作。
可視操作
指令 v、V、Ctrl+v
當用gvim可以用滑鼠選擇你需要複制,删除的文本,然後按d(删除)、p(粘貼)、y(複制)操作你的文本,
當然也可以和其他程式通過粘貼闆進行共享資料。
v 對于xterm中的vim 則輸入指令 v 進入可視狀态,這時候你可以用右鍵進行複制粘貼操作
重複操作與撤消
指令 . (點号) 、 u 、U
. 重複上一次的操作,當并不是那種重作,他隻是重複你上次輸入的指令。
Ctrl+R 重做
u 撤消上次操作
U 撤消目前行進行的任意修改。
查找文本
指令 /、?、n、N
/ 向後查找文本進入指令模式輸入 /[你要查找的文本]; 例如找edit 輸入 /edit ;
? 而向前查找文本就是輸入 ?[你要查找的文本] ;
n 當有許多搜尋結果時,指令模式下輸入 n 就可以找下一個搜尋結果,而輸入 N
N 則是反向下一個搜尋結果。
打開,儲存與退出
先進入ex模式,就是在指令模式下輸入 : 再輸入指令。
指令 ZZ、 q、 w、 e、r
:ZZ 進入指令模式 輸入 ZZ (大寫)就是儲存+退出;
:w 儲存文本 進入指令模式 輸入 w 就是儲存;
:q! 強行退出是輸入 q! ;
:e! 撤消目前所有編輯,傳回原始狀态的話,請輸入 e! ;
:w [filename] 另存為就是 w [filename] 。
:e [filename] 打開另外一個檔案(打開新檔案前,請先儲存檔案。
:r [filename] 讀入filename内容到目前檔案的目前位置後
移動光标
指令 hjkl、(、)、{、}、e、w、b、gg、G
hjkl 一般可直接用鍵盤上的方向鍵進行光标的移動。而page up/down 鍵就是前後翻頁了;
或者,指令模式下 按
h(左) j(下) k(上) l(右)
或者在這個基礎加上數字,進行幾行幾行的移動,例如 4j就表示向下移動四行。
nG 例如200G 就是移動200行了。而Ctrl+G就是顯示目前行資訊(多少行,在文本的位置);
G 到檔案尾
gg 到檔案頭
e 另外 輸入 e 可以一單詞的移動光标,
( 目前句首
) 下一句開始 例如 2) 向前移動兩個句子
{ 段開始
} 下一段頭
b、w 後前以單詞為機關移動。
标記指令 m、‘(單引号)、`(反引号也就是 ~ 那裡那個鍵)
m[x] 标記x(a~z)位置 例如 mb 标記目前光标位置為标志b
’x 移動光标到x标記行的行首
`x 移動光标到x标記的原始光标位置
'' 移動到上一标記行首
`` 移動到上一标記原光标位;
zl zh zs ze 視窗左滾 右滾 左開始 右結束 //可設定 :set sidescroll=32 設定滾動長度(我好象用不了這個指令)
其他
Ctrl+L 刷屏
return 到下一行行首
-、+ 移動光标上下一行,上下一行的行首(好象+号要用小鍵盤的+号才行);
Ctrl+G 顯示目前行資訊
H 螢幕起點
M 螢幕中間
L 螢幕尾
組合使用例子 指令模式下
例子:現有文本
aaabbb
cccdddeeefff (光标在第一行)
輸入 /aab回車 d /ccc回車 那就會删除掉目前位置aab(包括aab), 到ccc前所有資料并複制資料到緩沖(和剪切差不多)。當然d也可用改成y做複制用途,再用p粘貼。
vim的ex狀态 當在: ex模式下可以用tab進行自動補齊指令(用: set nu 顯示行數) 并可以利用 | 可以将多個指令組合在同一提示符下
文本搜尋,替換,移動,删除,複制
指令 :g/、:s/ 、:m 、:d、:co (或者:t)
:g :g/[文本] 全局搜尋文本,光标移動到最後一個搜尋文本,并顯示所有資料加所在行。
:g!/[文本] 沒有[文本]的行
:s :[第n行],[到第m行]s/[要替換的]/[替換的] n-m行之間進行替換,如果沒有n,m那麼就進行目前行的替換
:%/s/[要替換的]/[替換的]/g 進行全局替換。 %表示每一行, 另外有 . 表示目前行, $ 表示最後一行,另外可用+-号表示該行的上下n行,例如.-2 表示目前行上面第二行
:m :[要移動的資料]m[移動的地方] 例子 :20,30m100 20-30行移動到100行前(最後一行是100行)
例子: :g/^$/d 删除所有空行 d加上删除動作
搜尋模式
.(點号) 任一個單字元,漢字用兩個點 ..
* 比對前面字元零個或者多個任意(并不表示任意字元) 例如 /abcdl* 就會查找abcdl或者以abcd開始的,而查找所有是 /.*
^ 表示從行首開始
$ $在表達式末表示以正規表達式要在行末。
轉義 .表示找. *表示找* \表示找
[ ] [0~9]表示比對0~9之間任意一個數字 同理有[A~Z]和[a~z],而[AB3a]表示找有A,B, 3,a其中任意一個字元。
< , > 單詞開始或者末尾以空格或者标點符号開始或者結束。 例如 inux> 比對linux.
r 回車
t 制表符
執行sh指令
:![shell command] 例如 :!ls
添加資料到檔案末 >>
例子 :1,10w>>newfile
需要注意的是vim可以把一些指令組合起來應用
:1,3d | s/they/she/ 一到三行删除,并把目前行they替換為she
:.,/while/d 删除目前行到比對while行所有資料(包括目前行和含有while所在行)
:/aaa/,/bbbb/d aaa到bbbb之間行删除(包括這兩行)
:/aaa/,/bbb/m. aaa到bbb行move到目前行
分屏
:[N]sp[lit] [filename] 另開視窗,高度是N行,并打開filename檔案。
Ctrl+w [x] 準備進行視窗操作,其中x是按Ctrl+w後,需要選擇的功能鍵(可參見下一行) 例如Ctrl+w 再按t就會到頂端視窗
Ctrl+w [s/w/t/b/c/q/r/i/=] s 再分屏,w下一個視窗,t頂視窗,b底端視窗,c關閉視窗 q退出視窗 r循環視窗 i打開并進入新視窗 =所有視窗同高
:hide 隐藏目前視窗,當不關閉該檔案緩沖(也就是說再次用 :e [filename] 打開後依然是先前的檔案)
:q 關閉視窗,并釋放緩沖。
:qa[!] 關閉所有視窗并強行退出vim;
:on[ly] 隻顯示目前視窗
:new [filename] 建立檔案并打開新視窗。
:res[ize][n] :res[ize][+ -n] 改變視窗大小,或者增加減少行數
用vim程式設計
:make [arguments] 運作make 然後移動到第一個錯誤,
:cf[ile] [!] [errorfile]讀取錯誤檔案,并移動到第一個錯誤處,!強迫vim移動到另外的緩沖區,
:cl[ist] [!] 列出含有檔案名的錯誤,有!就列出所有錯誤,
:cc[!] [n] 如果有n就顯示錯誤n,否則重新顯示目前錯誤,
:cn[ext] 移動到下一個錯誤。
:cp 移動到上一個錯誤。
另外一個有用的程式設計功能是使用ctags(unix指令,給C語言中的函數打标記。這個指令與vi的tags結合使用)
先用ctags指令 :!ctags file.c 建立該c程式tags檔案,再在vi中使用 :tag [函數名] ,那麼vi就直接調出該c原檔案并跳到函數定義處。
例如: :!ctags *.c
:tag aaa 其中bbb.c 中有aaa函數,那麼就跳到aaa的定義處
:tn 跳到下一個比對标志
:tp 上一個标志
設定vim
:set all 顯示所有選項。
:set nu[mber] 顯示行數。
:set binary 可讀二進制檔案
:syntax on 文法高亮
:set taglength=4 設定tag長度
記不住可使用tab鍵補齊指令(也可以顯示可以選擇的指令)
vim的配置檔案 .vimrc
在vim的安裝目錄下有一個vimrc_example.vim檔案,你可以copy到你的工作目錄上作為你的原始vim配置檔案(檔案改名為.vimrc)
vi引證
最後,這裡有關vi的認證:vi是完美的
論證:VI在羅馬數字中是六,小于六的自然數可以整除6的是1,2,3, 6=1X2X3; 而6有可以表示為6=1+2+3,可見VI是個完美的數字,進而VI也是完美的。
對于vim
羅馬數字中VIM可能表示為(1000-(5+1))=994,而剛好等于2×496+2,而496剛好可以被1,2,4,8,16,31,62,124,248等整除,而且1+2+4+8+16+31+62+124+248=496
是以496是個更完美的數字,可見vim比vi更加完美了。