linux - 雜項

$cal 日曆
$cal 2015 指定年
$cal 7 2015 指定月
$bc 計算器node

man

$man -f socket 查看socket有多少個幫助文檔linux

# man -f socket
socket               (3pm)  - load the C socket.h defines and structure manipulators
socket               (2)  - create an endpoint for communication
socket               (3p)  - create an endpoint for communication
socket               (7)  - Linux socket interface
socket               (n)  - Open a TCP network connection

$man n socket 查看對應於n的解釋shell

$ sync 直接在文字接口下輸入 sync , 那麼在內存中還沒有被更新的數據,就會被寫入硬盤中!因此,這個指令在系統關機或從新開機以前, 很重要喔!最好多執行幾回!(注:這個指令也只有 root 能夠執行喔! )vim

shutdown

[root@linux ~]# /sbin/shutdown [-t 秒] [-arkhncfF] [時間] [警告訊息]
實例:
[root@linux ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
告訴你們,這部機器會在十分鐘後關機!而且會顯示在目前登入者的屏幕前方!

-t sec : -t 後面加秒數,亦即『過幾秒後關機』的意思
-k : 不要真的關機,只是發送警告訊息出去!
-r : 在將系統的服務停掉以後就從新開機
-h : 將系統的服務停掉後,當即關機。
-n : 不通過 init 程序,直接以 shutdown 的功能來關機
-f : 關機並開機以後,強制略過 fsck 的磁盤檢查
-F : 系統從新開機以後,強制進行 fsck 的磁盤檢查
-c : 取消已經在進行的 shutdown 指令內容。

df

[root@linux ~]# df [-ahikHTm] [目錄或文件名]
參數:
-a :列出全部的檔案系統,包括系統特有的 /proc 等檔案系統;
-k :以 KBytes 的容量顯示各檔案系統;
-m :以 MBytes 的容量顯示各檔案系統;
-h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
-H :以 M=1000K 取代 M=1024K 的進位方式;
-T :連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
-i :不用硬盤容量,而以 inode 的數量來顯示
範例:
範例一:將系統內全部的 partition 列出來!
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3012332 2632680 54% /
/dev/shm 192836 0 192836 0% /dev/shm
/dev/hda5 9492644 221604 8781060 3% /home
# 特別注意,在 Linux (FC4) 底下,若是 df 沒有加任何參數,
# 那麼預設會將系統內全部的 (不含特殊內存內的檔案系統與 swap) 都以 Kbytes
# 的容量來列出來!至於那個 /dev/shm 是與內存有關的掛載,先不要理他!

du數組

ln

[root@linux ~]# ln [-sf] 來源文件 目標文件
參數:
-s :若是 ln 不加任何參數就進行連結,那就是hard link,至於 -s 就是symbolic link
-f :若是 目標文件 存在時,就主動的將目標文件直接移除後再創建!

mount 掛載

[root@linux ~]# mount -a
[root@linux ~]# mount [-tonL] 裝置名稱代號 掛載點
參數:
-a :依照 /etc/fstab 的內容將全部相關的磁盤都掛上來!
-n :通常來講,當咱們掛載檔案系統到 Linux 上頭時, Linux 會主動的將
目前的 partition 與 filesystem 還有對應的掛載點,都記錄到 /etc/mtab
那個檔案中。不過,有些時刻 (例如不正常關機致使一些問題,而進入單人模式)
系統沒法寫入 /etc/mtab 時,就能夠加上 -n 這個參數來略過寫入 mtab 的動做。
-L :系統除了利用裝置名稱代號 (例如 /dev/hda1) 以外,還能夠利用 partition
的表頭名稱 ( Label ) 來進行掛載喔!因此,最好爲您的 partition 取一個
在您系統當中獨一無二的名稱吧!
-t :您的 Linux 支持的檔案格式,就寫在這裏吧!舉例來講,咱們在上面創建
/dev/hdb5 是 ext3 檔案系統,那麼要掛載時,就得要加上 -t ext3
來告知系統,用 ext3 的檔案格式來掛載該 partition 呢!
至於系統支持的 filesystem 類型在 /lib/modules/`uname -r`/kernel/fs 當中。
常見的有:
ext2, ext3, reiserfs, 等 Linux 慣用 filesystem
vfat, msdos 等 Windows 常見 filesystem
iso9660 爲光盤片的格式
nfs, smbfs 等爲網絡相關檔案系統。這部分將來咱們會在網絡方面說起!
若 mount 後面沒有加 -t 檔案系統格式時,則 Linux 在預設的狀況下,
會主動以 /etc/filesystems 這個檔案內規範的檔案系統格式
來嘗試主動的掛載喔!
-o :後面能夠接一些掛載時,額外加上的參數喔!比方說帳號、密碼、讀寫權限等:
ro, rw: 此 partition 爲只讀(ro) 或可擦寫(rw)
async, sync: 此 partition 爲同步寫入 (sync) 或異步 (async),這個與咱們
以前提到的檔案系統運做方式有關,預設是 async
auto, noauto: 容許此 partition 被以 mount -a 自動掛載(auto)
dev, nodev: 是否容許此 partition 上,可創建裝置檔案? dev 爲可容許
suid, nosuid: 是否容許此 partition 含有 suid/sgid 的檔案格式?
exec, noexec: 是否容許此 partition 上擁有可執行 binary 檔案?
user, nouser: 是否容許此 partition 讓 user 執行 mount ?通常來講,
mount 僅有 root 能夠進行,但下達 user 參數,則可以讓
通常 user 也可以對此 partition 進行 mount 。
defaults: 默認值爲:rw, suid, dev, exec, auto, nouser, and async
remount: 從新掛載,這在系統出錯,或從新更新參數時,頗有用!
範例:
範例一:將剛剛創建的 /dev/hdb5 掛載到 /mnt/hdb5 上面!
[root@linux ~]# mkdir /mnt/hdb5
[root@linux ~]# mount -t ext3 /dev/hdb5 /mnt/hdb5
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
....中間省略.....
/dev/hdb5 700144 20664 643336 4% /mnt/hdb5
範例二:掛載光盤!
[root@linux ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom
[root@linux ~]# mount /dev/cdrom
# 上面的參數當中提到,若是沒有加上 -t 這個參數時,系統會主動的以
# /etc/filesystems 裏面規範的內容給他測試一下是否掛載~另外,
# 由於咱們的 /etc/fstab 裏面會規範 /dev/cdrom 應該掛載到那個掛載點,
# 所以,直接下達 mount /dev/cdrom 也是能夠的喔!(固然要看/etc/fstab設定啦!)
-範例三:掛載 Window fat 軟盤!
[root@linux ~]# mount -t vfat /dev/fd0 /mnt/floppy
範例四:將 / 從新掛載,並加入參數爲 rw !
[root@linux ~]# mount -o remount,rw /
範例五:將 Label 名爲 logical 的 partition 掛載到 /mnt/hdb5 中
[root@linux ~]# mount -t ext3 -L logical /mnt/hdb5
範例六:將系統全部的以掛載的 partition 數據列出來
[root@linux ~]# mount
/dev/hda1 on / type ext3 (rw)
/dev/proc on /proc type proc (rw)
/dev/shm on /dev/shm type tmpfs (rw)
/dev/hda5 on /home type ext3 (rw)
/dev/hdb5 on /mnt/hdb5 type ext3 (rw)
# 嗯!不加任何參數,則 mount 會將目前系統的全部 partition
# 與相關對應的 filesystem 及 mount point 都列出來!

umount

範例二:將 /tmp/home 卸載:
[root@linux ~]# umount /tmp/home
[root@linux ~]# umount 裝置代號或掛載點
[root@linux ~]# umount /dev/hdb5
[root@linux ~]# umount /mnt/hdb5

cd 特殊符號表明的目錄

. 表明此層目錄
.. 表明上一層目錄
- 表明前一個工做目錄
~ 表明『目前使用者身份』所在的家目錄
~account 表明 account 這個使用者的家目錄

文件查看

• cat 由第一行開始顯示檔案內容
• tac 從最後一行開始顯示,能夠看出 tac 是 cat 的倒着寫!
• nl 顯示的時候,順道輸出行號!
• more 一頁一頁的顯示檔案內容
• less 與 more 相似,可是比 more 更好的是,他能夠往前翻頁!
• head 只看頭幾行
• tail 只看尾巴幾行
• od 以二進制的方式讀取檔案內容!

文件隱藏屬性

[root@linux ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱
參數:
+ :增長某一個特殊參數,其它本來存在參數則不動。
- :移除某一個特殊參數,其它本來存在參數則不動。
= :設定必定,且僅有後面接的參數
A :當設定了 A 這個屬性時,這個檔案(或目錄)的存取時間 atime (access)
將不可被修改,可避免例如手提式計算機容易有磁盤 I/O 錯誤的狀況發生!
S :這個功能有點相似 sync 的功能!就是會將數據同步寫入磁盤當中!
能夠有效的避免數據流失!
a :當設定 a 以後,這個檔案將只能增長數據,而不能刪除,只有 root
才能設定這個屬性。
c :這個屬性設定以後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮,
可是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案彷佛蠻有用的!)
d :當dump(備份)程序被執行的時候,設定 d 屬性將可以使該檔案(或目錄)不具備dump功能
i :這個 i 可就很厲害了!他可讓一個檔案『不能被刪除、更名、設定連結也沒法寫入
或新增資料!』對於系統安全性有至關大的幫助!
j :當使用 ext3 這個檔案系統格式時,設定 j 屬性將會使檔案在寫入時先記錄在
journal 中!可是當 filesystem 設定參數爲 data=journalled 時,因爲已經設定了
日誌了,因此這個屬性無效!
s :當檔案設定了 s 參數時,他將會被徹底的移除出這個硬盤空間。
u :與 s 相反的,當使用 u 來設定檔案時,則數據內容其實還存在磁盤中,
可使用來 undeletion.
注意:這個屬性設定上面,比較常見的是 a 與 i 的設定值,並且不少設定值必需要身爲
root 纔可以設定的喔!
範例:
[root@linux ~]# cd /tmp
[root@linux tmp]# touch attrtest
[root@linux tmp]# chattr +i attrtest
[root@linux tmp]# rm attrtest
rm: remove write-protected regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted
# 看到了嗎?呼呼!連 root 也沒有辦法將這個檔案刪除呢!趕忙解除設定!
[root@linux tmp]# chattr -i attrtest

lsattr緩存

[root@linux ~]# lsattr [-aR] 檔案或目錄
參數:
-a :將隱藏文件的屬性也秀出來;
-R :連同子目錄的數據也一併列出來!
範例:
[root@linux tmp]# chattr +aij attrtest
[root@linux tmp]# lsattr
----ia---j--- ./attrtest

locate filename 在緩存中查詢文件 緩存文件在 /var/lib/slocate/安全

find

[root@linux ~]# find [PATH] [option] [action]
參數:
1. 與時間有關的參數:
-atime n :n 爲數字,意義爲在 n 天以前的『一天以內』被 access 過的檔案;
-ctime n :n 爲數字,意義爲在 n 天以前的『一天以內』被 change 過狀態的檔案;
-mtime n :n 爲數字,意義爲在 n 天以前的『一天以內』被 modification 過的檔案;
-newer file :file 爲一個存在的檔案,意思是說,只要檔案比 file 還要新,
就會被列出來~
2. 與使用者或羣組名稱有關的參數:
-uid n :n 爲數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
/etc/passwd 裏面與帳號名稱對應的數字。這方面咱們會在第四篇介紹。
-gid n :n 爲數字,這個數字是羣組名稱的 ID,亦即 GID,這個 GID 記錄在
/etc/group,相關的介紹咱們會第四篇說明~
-user name :name 爲使用者帳號名稱喔!例如 dmtsai
-group name:name 爲羣組名稱喔,例如 users ;
-nouser :尋找檔案的擁有者不存在 /etc/passwd 的人!
-nogroup :尋找檔案的擁有羣組不存在於 /etc/group 的檔案!
當您自行安裝軟件時,極可能該軟件的屬性當中並無檔案擁有者,
這是可能的!在這個時候,就可使用 -nouser 與 -nogroup 搜尋。
3. 與檔案權限及名稱有關的參數:
-name filename:搜尋文件名稱爲 filename 的檔案;
-size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有:
c: 表明 byte, k: 表明 1024bytes。因此,要找比 50KB
還要大的檔案,就是『 -size +50k 』
-type TYPE :搜尋檔案的類型爲 TYPE 的,類型主要有:通常正規檔案 (f),
裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s),
及 FIFO (p) 等屬性。
-perm mode :搜尋檔案屬性『恰好等於』 mode 的檔案,這個 mode 爲相似 chmod
的屬性值,舉例來講, -rwsr-xr-x 的屬性爲 4755 !
-perm -mode :搜尋檔案屬性『必需要所有囊括 mode 的屬性』的檔案,舉例來講,
咱們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744,
當一個檔案的屬性爲 -rwsr-xr-x ,亦即 4755 時,也會被列出來,
由於 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。
-perm +mode :搜尋檔案屬性『包含任一 mode 的屬性』的檔案,舉例來講,咱們搜尋
-rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性爲 -rw-------
也會被列出來,由於他有 -rw.... 的屬性存在!
4. 額外可進行的動做:
-exec command :command 爲其它指令,-exec 後面可再接額外的指令來處理搜尋到
的結果。
-print :將結果打印到屏幕上,這個動做是預設動做!
範例:
範例一:將過去系統上面 24 小時內有更動過內容 (mtime) 的檔案列出
[root@linux ~]# find / -mtime 0
# 那個 0 是重點!0 表明目前的時間,因此,從如今開始到 24 小時前,
# 有變更過內容的檔案都會被列出來!那若是是三天前的 24 小時內?
# find / -mtime 3 ,意思是說今天以前的 3*24 ~ 4*24 小時之間
# 有變更過的檔案都被列出的意思!同時 -atime 與 -ctime 的用法相同。
範例二:尋找 /etc 底下的檔案,若是檔案日期比 /etc/passwd 新就列出
[root@linux ~]# find /etc -newer /etc/passwd
# -newer 用在分辨兩個檔案之間的新舊關係是頗有用的!
範例三:搜尋 /home 底下屬於 dmtsai 的檔案
[root@linux ~]# find /home -user dmtsai
# 這個東西也頗有用的~當咱們要找出任何一個使用者在系統當中的全部檔案時,
# 就能夠利用這個指令將屬於某個使用者的全部檔案都找出來喔!
範例四:搜尋系統中不屬於任何人的檔案
[root@linux ~]# find / -nouser
# 透過這個指令,能夠輕易的就找出那些不太正常的檔案。
# 若是有找到不屬於系統任何人的檔案時,不要太緊張,
# 那有時候是正常的~尤爲是您曾經以原始碼自行編譯軟件時。
範例五:找出檔名爲 passwd 這個檔案
[root@linux ~]# find / -name passwd
# 利用這個 -name 能夠搜尋檔名啊!
範例六:搜尋檔案屬性爲 f (通常檔案) 的檔案
[root@linux ~]# find /home -type f
# 這個 -type 的屬性也頗有幫助喔!尤爲是要找出那些怪異的檔案,
# 例如 socket 與 FIFO 檔案,能夠用 find /var -type p 或 -type s 來找!
範例七:搜尋檔案當中含有 SGID/SUID/SBIT 的屬性
[root@linux ~]# find / -perm +7000
# 所謂的 7000 就是 ---s--s--t ,那麼只要含有 s 或 t 的就列出,
# 因此固然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的全部三個權限,
# 所以,就是 +7000 ~瞭乎?
範例八:將上個範例找到的檔案使用 ls -l 列出來~
[root@linux ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那個 -exec 後面的 ls -l 就是額外的指令,
# 而那個 {} 表明的是『由 find 找到的內容』的意思~因此, -exec ls -l {}
# 就是將前面找到的那些檔案以 ls -l 列出長的數據!至於 \; 則是表示
# -exec 的指令到此爲止的意思~意思是說,整個指令其實只有在
# -exec (裏面就是指令下達) \;
# 也就是說,-exec 最後必定要以 \; 結束才行!這樣瞭解了嗎?!
範例九:找出系統中,大於 1MB 的檔案
[root@linux ~]# find / -size +1000k
# 雖然在 man page 提到可使用 M 與 G 分別表明 MB
# 不過,俺卻試不出來這個功能~因此,目前應該是僅支持到 c 與 k 吧!

tar

[root@linux ~]# tar [-cxtzjvfpPN] 檔案與目錄 ....
參數:
-c :創建一個壓縮檔案的參數指令(create 的意思);
-x :解開一個壓縮檔案的參數指令!
-t :查看 tarfile 裏面的檔案!
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!
由於不可能同時壓縮與解壓縮。
-z :是否同時具備 gzip 的屬性?亦便是否須要用 gzip 壓縮?
-j :是否同時具備 bzip2 的屬性?亦便是否須要用 bzip2 壓縮?
-v :壓縮的過程當中顯示檔案!這個經常使用,但不建議用在背景執行過程!
-f :使用檔名,請留意,在 f 以後要當即接檔名喔!不要再加參數!
例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成
『 tar -zcvPf tfile sfile』纔對喔!
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P :可使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的纔會被打包進新建的檔案中!
--exclude FILE:在壓縮的過程當中,不要將 FILE 打包!
範例:
範例一:將整個 /etc 目錄下的檔案所有打包成爲 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==僅打包,不壓縮!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮
# 特別注意,在參數 f 以後的檔案檔名是本身取的,咱們習慣上都用 .tar 來做爲辨識。
# 若是加 z 參數,則以 .tar.gz 或 .tgz 來表明 gzip 壓縮過的 tar file ~
# 若是加 j 參數,則以 .tar.bz2 來做爲附檔名啊~
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/' from member names』那是關於絕對路徑的特殊設定。
範例二:查閱上述 /tmp/etc.tar.gz 檔案內有哪些檔案?
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 因爲咱們使用 gzip 壓縮,因此要查閱該 tar file 內的檔案時,
# 就得要加上 z 這個參數了!這很重要的!
範例三:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在預設的狀況下,咱們能夠將壓縮檔在任何地方解開的!以這個範例來講,
# 我先將工做目錄變換到 /usr/local/src 底下,而且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢!另外,若是您進入 /usr/local/src/etc
# 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不一樣喔!
範例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我能夠透過 tar -ztvf 來查閱 tarfile 內的文件名稱,若是單隻要一個檔案,
# 就能夠透過這個方式來下達!注意到! etc.tar.gz 內的根目錄 / 是被拿掉了!
範例五:將 /etc/ 內的全部檔案備份下來,而且保存其權限!
[root@linux ~]# tar -zcvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤爲是當您要保留本來檔案的屬性時!
範例六:在 /home 當中,比 2005/06/01 新的檔案才備份
[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home
範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生檔案!
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 這個動做有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的!
# 要注意的地方在於輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在~
# 這分別表明 standard output, standard input 與管線命令啦!
# 這部分咱們會在 Bash shell 時,再次提到這個指令跟你們再解釋囉!

vim

通常模式: 移動光標的方法
h 或 向左方向鍵(←)
光標向左移動一個字符
j 或 向下方向鍵(↓)
光標向下移動一個字符
k 或 向上方向鍵(↑)
光標向上移動一個字符
l 或 向右方向鍵(→)
光標向右移動一個字符
若是想要進行屢次移動的話,例如向下移動 30 行,可使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動做便可!
[Ctrl] + [f]
屏幕『向下』移動一頁,至關於 [Page Down]按鍵 (經常使用)
[Ctrl] + [b]
屏幕『向上』移動一頁,至關於 [Page Up] 按鍵 (經常使用)
[Ctrl] + [d]
屏幕『向下』移動半頁
[Ctrl] + [u]
屏幕『向上』移動半頁
+
光標移動到非空格符的下一列
-
光標移動到非空格符的上一列
n<space>
那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向後面移動 20 個字符距離。
0
這是數字『 0 』:移動到這一行的最前面字符處 (經常使用)
$
移動到這一行的最後面字符處(經常使用)
H
光標移動到這個屏幕的最上方那一行
M
光標移動到這個屏幕的中央那一行
L
光標移動到這個屏幕的最下方那一行
G
移動到這個檔案的最後一行(經常使用)
nG
n 爲數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg
移動到這個檔案的第一行,至關於 1G 啊! (經常使用)
n<Enter>
n 爲數字。光標向下移動 n 行(經常使用)
通常模式: 搜尋與取代
/word
向光標之下尋找一個字符串名稱爲 word 的字符串。例如要在檔案內搜尋 vbird 這個字符串,就輸入 /vbird 便可! (經常使用)
?word
向光標之上尋找一個字符串名稱爲 word 的字符串。
n
這個 n 是英文按鍵。表明『重複前一個搜尋的動做』的意思。舉例來講, 若是剛剛咱們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 後,會向下繼續搜尋下一個名稱爲 vbird 的字符串。若是是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱爲 vbird 的字符串!
N
這個 N 是英文按鍵。與 n 恰好相反,爲『反向』進行前一個搜尋動做。 例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。
:n1,n2s/word1/word2/g
n1 與 n2 爲數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代爲 word2 !舉例來講,在 100 到 200 行之間搜尋 vbird 並取代爲 VBIRD 則: 『:100,200s/vbird/VBIRD/g』。(經常使用)
:1,$s/word1/word2/g
從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !(經常使用)
:1,$s/word1/word2/gc
從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !且在取代前顯示提示字符給使用者確認 (conform) 是否須要取代!(經常使用)
通常模式: 刪除、複製與貼上
x, X
在一行字當中,x 爲向後刪除一個字符 (至關於 [del] 按鍵), X 爲向前刪除一個字符(至關於 [backspace] 亦便是退格鍵) (經常使用)
nx
n 爲數字,連續向後刪除 n 個字符。舉例來講,我要連續刪除 10 個字符, 『10x』。
dd
刪除遊標所在的那一整列(經常使用)
ndd
n 爲數字。刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列 (經常使用)
d1G
刪除光標所在到第一行的全部數據
dG
刪除光標所在到最後一行的全部數據
d$
刪除遊標所在處,到該行的最後一個字符
d0
那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字符
yy
複製遊標所在的那一行(經常使用)
nyy
n 爲數字。複製光標所在的向下 n 列,例如 20yy 則是複製 20 列(經常使用)
y1G
複製光標所在列到第一列的全部數據
yG
複製光標所在列到最後一列的全部數據
y0
複製光標所在的那個字符到該行行首的全部數據
y$
複製光標所在的那個字符到該行行尾的全部數據
p, P
p 爲將已複製的數據在光標下一行貼上,P 則爲貼在遊標上一行! 舉例來講,我目前光標在第 20 行,且已經複製了 10 行數據。則按下 p 後, 那 10 行數據會貼在本來的 20 行以後,亦即由 21 行開始貼。但若是是按下 P 呢? 那麼本來的第 20 行會被推到變成 30 行。 (經常使用)
J
將光標所在列與下一列的數據結合成同一列
c
重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]
u
復原前一個動做。(經常使用)
[Ctrl]+r
重作上一個動做。(經常使用)
這個 u 與 [Ctrl]+r 是很經常使用的指令!一個是復原,另外一個則是重作一次~ 利用這兩個功能按鍵,您的編輯,嘿嘿!很快樂的啦!
.
不要懷疑!這就是小數點!意思是重複前一個動做的意思。 若是您想要重複刪除、重複貼上等等動做,按下小數點『.』就行了! (經常使用)
進入編輯模式
i, I
插入:在目前的光標所在處插入輸入之文字,已存在的文字會向後
退; 其中, i 爲『從目前光標所在處插入』, I 爲『在目前所在行的第一個非空格符處開始插入』。 (經常使用)
a, A
a 爲『從目前光標所在的下一個字符處開始插入』, A 爲『從光標所在行的最後一個字符處開始插入』。(經常使用)
o, O
這是英文字母 o 的大小寫。o 爲『在目前光標所在的下一行處插入新的一行』; O 爲在目前光標所在處的上一行插入新的一行!(經常使用)
r, R
取代:r 會取代光標所在的那一個字符;R會一直取代光標所在的文字,直到按下 ESC 爲止;(經常使用)
上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--』或『--REPLACE--』的字樣。 由名稱就知道該動做了吧!!特別注意的是,咱們上面也提過了,你想要在檔案裏面輸入字符時, 必定要在左下角處看到 INSERT/REPLACE 才能輸入喔!
Esc
退出編輯模式,回到通常模式中(經常使用)
指令列命令模式
:w
將編輯的數據寫入硬盤檔案中(經常使用)
:w!
若檔案屬性爲『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 仍是跟您對該檔案的檔案權限有關啊!
:q
離開 vi (經常使用)
:q!
若曾修改過檔案,又不想儲存,使用 ! 爲強制離開不儲存檔案。
注意一下啊,那個驚歎號 (!) 在 vi 當中,經常具備『強制』的意思~
:wq
儲存後離開,若爲 :wq! 則爲強制儲存後離開 (經常使用)
:e!
將檔案還原到最原始的狀態!
ZZ
若檔案沒有更動,則不儲存離開,若檔案已經通過更動,則儲存後離開!
:w [filename]
將編輯的數據儲存成另外一個檔案(相似另存新檔)
:r [filename]
在編輯的數據中,讀入另外一個檔案的數據。亦即將 『filename』 這個檔案內容加到遊標所在行後面
:n1,n2 w [filename]
將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command
暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如 『:! ls /home』便可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息!
:set nu
顯示行號,設定以後,會在每一行的前綴顯示該行的行號
:set nonu
與 set nu 相反,爲取消行號!

vi /etc/sysconfig/i18n 更改語言系bash

變量設置

[root@linux ~]# declare [-aixr] variable
參數:
-a :將後面的 variable 定義成爲數組 (array)
-i :將後面接的 variable 定義成爲整數數字 (integer)
-x :用法與 export 同樣,就是將後面的 variable 變成環境變量;
-r :將一個 variable 的變量設定成爲 readonly ,該變量不可被更改內容,也不能 unset
範例:
範例一:讓變量 sum 進行 100+300+50 的加總結果
[root@linux ~]# sum=100+300+50
[root@linux ~]# echo $sum
100+300+50 <==咦!怎麼沒有幫我計算加總?由於這是文字型態的變量屬性啊!
[root@linux ~]# declare -i sum=100+300+50
[root@linux ~]# echo $sum
450 <==瞭乎??
範例二:將 sum 變成環境變量
[root@linux ~]# declare -x sum
範例三:讓 sum 變成只讀屬性,不可更動!
[root@linux ~]# declare -r sum
[root@linux ~]# sum=tesgting
-bash: sum: readonly variable <==老天爺~不能改這個

split分割文件

[root@linux ~]# split [-bl] file PREFIX
參數:
-b :後面可接欲分割成的檔案大小,可加單位,例如 b, k, m 等;
-l :以行數來進行分割。
範例:
範例一:個人 /etc/termcap 有七百多K,若想要分紅 300K 一個檔案時?
[root@linux ~]# cd /tmp; split -b 300k /etc/termcap termcap
[root@linux tmp]# ls -l termcap*
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapaa
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapab
-rw-rw-r-- 1 root root 184848 8月 17 00:25 termcapac
# 那個檔名能夠隨意取的啦!咱們只要寫上前導文字,小檔案就會以
# xxxaa, xxxab, xxxac 等方式來創建小檔案的!
範例二:如何將上面的三個小檔案合成一個檔案,檔名爲 termcapback
[root@linux tmp]# cat termcap* >> termcapback
# 很簡單吧?就用數據流重導向就好啦!簡單!
範例三:使用 ls -al / 輸出的信息中,每十行記錄成一個檔案
[root@linux tmp]# ls -al / | split -l 10 - lsroot
# 重點在那個 - 啦!通常來講,若是須要 stdout/stdin 時,但恰恰又沒有檔案,*斜體文字*
# 有的只是 - 時,那麼那個 - 就會被當成 stdin 或 stdout ~
相關文章
相關標籤/搜索