天天看點

學習shell 與shell腳本 學習筆記

一般模式:

編輯模式:

指令行指令模式: 一般模式下輸入:/ ?都會進入指令行模式

我們寫vi指令中最常用的方法:

0 移動到這一行的最前面字元處

$移動到這一行的最後面字元處G 移動到這個檔案的最後一行

gg移動到這個檔案的第一行

n n為數字 光标向下移動n行

/word 從光标位置開始向下搜尋一個名為word的字元串

:n1. n2s/word1/word2/g n1 n2 為數字,在n1與n2行之間尋找word1,然後替換成word2

1.$s/word1/word2/g 從頭到尾搜尋并替換

1.$s/word1/word2/gc 替換的時候需要确認

x X :x是向後删除一個字元,X是向前删除一個字元

dd 删除光标所在的那一行

ndd :n為數字 從光标位置開始,删除向下n列

yy:複制光标所在的那一行

p,P:p是貼在光标的下一行,P是貼在光标的上一行。

u 複原上一個操作

[ctrl]+r 重做上一個操作

. 這個是小數點,意思是重複前一個操作,如果想重複删除,重複粘貼,按下小數點就可以

:set nu 顯示行号

變量設定的規定:

1. 變量與變量内容以=來連接配接

2. 等号兩邊不能直接接空格符

3. 變量名稱隻能是英文字母或者數字,但數字不能是開頭字元

4. 若有空格,可以使用雙引号或者單引号将變量内容結合起來,注意:蘇昂引号的特殊字元可以保持變量特性,單引号内的特殊字元僅為一般字元

5. 必要時需要以轉義字元\将特殊字元變成一般符号

6. 指令中套指令,用反引号

7. 若變量需要擴充變量内容可以這樣:$PATH:/home/staid這樣的形式擴充

8. 若改變兩需要在其他子程式中執行,則需要用export使變量變成環境變量,如export PATH

9. 通常大寫字元為系統預設變量,自行設定的變量可以使用小寫字母

10. 取消變量的方法為:unset 變量名稱

env列出目前shell環境下的所有變量及其内容

随機數:RANDOM, 這個變量的内容介于0~32767之間

declare –i 申明一個整型的數

[root@staid ~]# declare -i number=$RANDOM*10/32767;echo $number

除了env裡面的變量,還有可以用set列出來的變量。set的變量是目前shell下有效

$? 上一個指令執行的狀态傳回值,成功就是0,不成功就是不同的數,反正不會是0

自定義變量轉變為環境變量:export

declare

r 将變量配置為隻讀。 

x 指定的變量會成為環境變量,可供shell以外的程式來使用。 

i 将後面的變量定義為整數數字。

語系設定:locale

變量鍵盤讀取,數組 與聲明:read array declare

read 讀取來自鍵盤輸入或者檔案的變量

read

-p:後面可以接提示符

-t:後面可以接當代的秒數

[root@staid ~]# read -p "keyin your name:" -t 30 named;echo $named

與檔案系統及程式的限制關系:ulimit

ulimit

-H 必定不能超過設定的值

-S:可以超過,發警告資訊

[root@staid ~]# vbird="/home/staid/testing/test.x.sh"

[root@staid ~]# echo ${vbird}

/home/staid/testing/test.x.sh

[root@staid ~]# echo ${vbird##/*/}

test.x.sh

[root@staid ~]# echo ${vbird#/*/}

staid/testing/test.x.sh

[root@staid ~]# echo ${vbird%%/*}

[root@staid ~]# echo ${vbird%%/*/}

[root@staid ~]#

有個圖在這兒插入

history指令

history 5

history –c

環境設定檔案:bashrc ~/.bashrc ~/.profile profile…., /etc/inputrc source

/etc/sysconfig/i18n 設定語系

/etc/profile 設定變量

個人設定值(~/.bash_profile ~/.bash_login ~/.profile)

~/.bashrc

~/.bash_history

source /etc/profile 來讓新加入的變量生效

ls -lda /etc/*[35]*

ls –lad /etc/[!a-z]*

cut指令

[root@staid ~]# echo $PATH|cut -d ":" -f 5

/sbin

[root@staid ~]# echo $PATH|cut -d ':' -f 5

-d分隔符 –f 第幾段

last看看這個月的登入者的資訊

grep

-c 統計搜尋字元串的次數

-i忽略大小寫

-n順序輸出行号

-v反向選擇

sort

-f 忽略大小寫

-n使用純數字排序

-r反向排序

-u 就是相同的資料中,僅出現一行

-k 按照那個字段來進行排序

uniq

-c 統計計數

wc

-l 僅顯示多少行

-w 僅顯示多少字

-m多少字元

tee [–a](累加) file 既顯示到螢幕上又列印到file檔案裡

tr 可以用來删除一段消息中的文字,或者是進行文字消息的替換 、

tr –d SET1

-d 删除消息中的SET1字元串

tr –s

替換重複的字元

[root@staid ~]# last |tr '[a-z]' '[A-Z]' 小寫字母全部大寫

将DOS檔案的換行符^M符号删除:

[root@staid ~]# cat /home/test/dostxt|tr -d '\r'

\r指的是DOS換行符。

tar –cvf - /home |gra –xvf –

将home的檔案愛你打包但是打包的資料不記錄到檔案,而是傳送到stdout。

本文轉自guoli0813 51CTO部落格,原文連結:http://blog.51cto.com/guoli0813/350989,如需轉載請自行聯系原作者