顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2013年1月12日 星期六

Vi 的使用

二. 開啟檔案, 關閉檔案
vi 檔名開啟檔案
:進入命令列的方法
q離開 (命令列)
wq存檔然後離開 (命令列)
q!放棄存檔, 強迫離開 (命令列)
ZZ存檔然後離開 (不在命令列使用)
:e 檔名在 Vi 中開啟檔案
三. Vi 的操作模式:
Vi 有二種主要的操作模式, ESC 鍵為單向的切換鍵(由本文輸入模式回到編輯命令模式)
  • 編輯命令模式 : 要 vi 做一些特定目的的動作. 如插入,附加,取代,修改,刪除,移動游標,搜尋等等. 若是存檔等動作, 則需在命令列中下達, 欲切換至命令列, 需先按 :

     
  • 本文輸入模式 : 在此模式下, 任何字元, 皆被視為輸入的資料.
一開始進入 Vi 之後, 即進入編輯命令模式, 你輸入的每一個字元, 皆被預視為一個指令. 有效的指令會被接受, 若是無效的指令, 會產生 beep beep 聲, 以示警告.
若想做輸入的動作, 必須切換為本文輸入模式, 切換的方法, 只要單按一個特殊意義的字元鍵即可, 如下所示:
 i 或 I插入狀態
 a 或 A附加狀態
按 R取代狀態
R 會進行連續字元取代
按 s 或 S刪除一個字元;刪除游標所在那一列
按 cw, c2b, c$, c0修改狀態
 o 或 O新增空白列
你不必一下子全用上, 只要會 i, a, o 這個三個模式即可勝任愉快, 因為大部份時候, 你也只用這三個.
OK, 現在你可以試著在本文輸入模式下, 鍵入一些資料看看. 然後, 按 ESC 切換回編輯命令模式.
四. 移動游標:
Vi 為了適用於各種不同的終端機模式, 因此以字鍵的方式來操控游標.
k j h l上 下 左 右
Enter換列
w b往前一個 word ; 倒退一個 word
0 $至該列開頭 ; 至該列尾端
+ -往下一列; 往上一列
請記住一個要訣:
在 Vi 中, 大部份的命令都可以在其前面加上數字, 該數字表示重覆該命令的次數.
例如: 8l 表示往右移動 8 個字元, 3w 表示往前移動三個 word, 2b 表示倒退 2 個 word
註: word 的定義, 連續英數字元形成一個 word, 而其它特殊符號則每一個字元便是一個 word(除非連續特殊字元), 例如: --classify 中含有 2 個 word, 一個是 -- ; 一個是 classify
 -x, 則有 3 個 word.
在特殊的終端機模式下, 方向鍵也是可以使用的. 如 linux 或 vt100.
其實大部份時候, 你仍可以保有使用方向鍵的習慣. 但大概只有 local 下才能使用 PgUp , PgDn, End, Home 等鍵喔!
不過, 若你所使用的終端機模式不支援方向鍵, 那麼上表中的按鍵, 就相當重要了.
五. 捲頁:
^f往下一頁 (forward)
^b往上一頁 (before)
^d往下半個螢幕(down)
^u往上半個螢幕(up)
六. 跳列:
你可以指定跳至某一列位置. 跳動之前, 先查看一下目前所在列數是多少.
^g 可以顯示目前的位置, 如: "ls.txt" line 53 of 264 --20%-- col 16-23
上面表示, 目前是在第 53 列, 全部共有 264 列, 佔該檔百分之20的位置, 目前的游標, 實際是在第23行, 但只算成第16行, 因為中間有使用 tab 鍵.
80G 或 80gg跳至第 80 列
G跳至檔尾
gg跳至檔頭
七. 刪除: (但不會進入本文輸入模式)
x刪除一個字元
dd刪除一行
r取代一個字元
以上皆針對游標目前的所在位置產生作用.
還有 dw, db, de, d0, d$ 等命令, 但你不須一下子全用上. 上表中這三個夠用了.
記住一個要訣: Vi 的命令繁多, 但你真正用上手的不必多, 而且這些也就夠了.
八. undo (回復動作):
若你對上一個動作反悔了, 可以使用 undo 的功能:
u取消上一個動作所產生的改變
U取消游標所在那一列所有的改變
:e!取消所有的改變, 回復至未修改之前
九. 關鍵字搜尋/取代:
/ 關鍵字往下搜尋關鍵字
? 關鍵字往上搜尋關鍵字
n重覆搜尋命令(不管往下或往上)
N和 n 相反方向
cw字串以該字串取代原有的關鍵字
n.繼續取代該字串的動作
%s/目標/取代/g將目標字串全換成取代字串
十. 選取、複製與搬移:
Y 或 yy選取游標所在那一列
5Y 或 5yy選取游標列所在共5列
(5 只是一個例子, 可改用其它數字)
p將選取的內容, 複製至游標之後
P將選取的內容, 複製至游標之前
cw, x, dd 等刪除命令會將被刪除的內容放入 buffer 中, 配合 p 或 P 即可做出搬移的效果.
十一. 暫時跳出 Vi:
在編輯過程中, 你可能想要執行其它命令, 方法如下:
:! 命令執行該令命
:sh暫時跳出 Vi, 欲回 Vi 按 ^d 或 exit
 

Linux常用指令~1

Linux中最常使用到的指令,和最常用到的參數。

※ ls 列出目錄
-a 連隱藏檔都列出
-l 列出詳細資訊
-d 只顯示目錄訊息而非目錄下的檔案
-R 遞迴列出檔案及子目錄其下的所有子目錄和檔案

※ pwd 顯示使用者目前的目錄
-p 則將結徑目錄顯示出來 (專門用在連結目錄)

※ mkdir 建立目錄
-m 直接設定目錄屬性 (mkdir -m 700 test)
-p 建立目錄中的子目錄 (mkdir -p test1/test2)
※ mv 移動檔案或改檔名
-f 強制移動
-i 已存在目的檔,會詢問是否over wirte
※ cp 檔案複製
-i 若已存在則會詢問要否over write
-f 強制複製或取代
-a 完全複裂含使用人,屬性一樣的複制過來 (用在root)
-r 用於目錄copy (重要)
-d 若來源檔為連結檔的屬性,則複製連結檔而非檔案本身
-s 複製成符號連結檔
-l 複製成硬式連結檔
※ rm 移除檔案
-f 強制移除
-r 用於移除目錄
-i 會詢問使用者是否真的要移除

※ cat 看檔
-n 印出行號
-A 可列出一些特殊字元
查詢Linux 系統版本
#cat /etc/*-release

※ more 分頁顯示檔案內容
enter 下翻一行
space 下翻一頁
:f 顯示目前行數和檔名
q 離開
/ 尋找字串
n 符合字串下一筆
N 反向尋找符合字串下一筆
※ less 分頁顯示檔案內容 (可上翻)
enter 下翻一行
space 下翻一頁
page up 上翻一頁
page down 下翻一頁
q 離開
/ 尋找字串
n 符合字串下一筆
N 反向尋找符合字串下一筆

※ chmod, chown 改變檔案屬性, 改變檔案所有人
-R 連同子目錄都更新為同屬性
變所屬群組, chgrp
※ file 顯示某個檔案的基本資料
※ which 尋找某指令在那裡 (依所脫定的環境path去找)
※ whereis 尋找某指令
-b 只找binary檔
-m 只找man檔
-s 只找source檔
-u 找沒有說明的文件
※ locate 尋找檔案 (找資料庫)
使用前先updatedb
※ find 尋找檔案 (找檔案系統)
-name 尋找檔名
ex: find / -name test1.c

※ Linux 的搜尋技巧
在檔案內搜尋指定文字,search_key 是搜尋字串,/path/to/filename 是檔案名稱:
grep search_key /path/to/filename
功能同上,但不分大小寫:
grep -i search_key /path/to/filename

※ 搜尋檔案:在指定目錄中搜尋檔案,以下是在 /var/www/ 目錄下搜尋 upload.php 的檔案:
find /var/www/ -name upload.php
功能同上,但目標不是檔案,而是目錄:
find /var/www/ -name uploads -type d

※ df 檢查磁碟使用量
-a 列出所有使用量
-h 容量以k, m, g顯示
-T 連fs name都顯示出來
-i 使用掉的i-node數量

※ du 檢查資料夾用量
-a 列出目錄下所有子目錄檔案的所有用量
-h 容量以k, m, g顯示
-s 只顯示目錄總量 (和-a不能共用)

※ ln 製做符號連結和硬式連結
-s 符號連結
-f 目標檔有在的話移除再建立
不加參數則是建立硬式連結
ex: ln -s test s_test

※ gzip 建立gun zip壓縮檔 (只能對單一檔案)
-c 壓縮後輸出到銀目,配合資料流重導向
-d 解壓縮
-t 檢查有沒有錯誤
-1~9 壓縮比
ex:(壓) gzip test
ex:(解) gzip -d test
※ tar 打包加壓縮 (重要)
-j 使用bzip壓縮
-z 使用gzip壓縮
-c 建立打包
-x 解開打
-v 看檔案打包過程
-f 輸出檔案的檔名
-p 包留原來屬性
ex:(包) tar -zcvf test.tar.gz test/
ex:(解) tar -zxvf test.tar.gz
unlink 是用來移除 symlink 他不能刪目錄
可以避免誤刪    也可以保留原來的目錄
但若用  rm -r 不管後面接的是 symlink or regular file 都會刪掉
w => 看看是不是在線上
ps -u test => 看看有沒有跑什麼程式.

顯示核心的版本
# uname -r
列出(list)已經載入模組
# lsmod


範例:建立一個使用者,名稱為 vbird1
[root@linux ~]# useradd vbird1
範例:建立一個系統帳號,名稱為 vbird3
[root@linux ~]# useradd -r vbird3
範例一:如果 root 要幫 dmtsai 修改密碼時?
[root@linux ~]# passwd dmtsai
範例一:刪除 vbird2 ,連同家目錄一起刪除
[root@www ~]# userdel -r vbird2

clamav 常用指令

#clamdscan -V                 //  顯示版本
# freshclam                       //  更新 Virus DB
# /etc/init.d/clamd restart   //  重新啟動 clamav
# rm -rf /var/clamav/*       //  刪除 Virus DB
# /etc/init.d/clamd stop   //  暫停 Service
# yum update clamav      // 使用 yum 手動 update clamav