學習shell 與shell指令碼 學習筆記

2021-09-21 10:26:03 字數 3360 閱讀 7558

一般模式:

編輯模式:

命令列命令模式: 一般模式下輸入:/ ?都會進入命令列模式

我們寫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 $

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

[root@staid ~]# echo $

test.x.sh

[root@staid ~]# echo $

staid/testing/test.x.sh

[root@staid ~]# echo $

[root@staid ~]# echo $

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

[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

/sbin

[root@staid ~]#

-d分隔符 –f 第幾段

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

grep

-c 統計搜尋字串的次數

-i忽略大小寫

-n順序輸出行號

-v反向選擇

sort

-f 忽略大小寫

-n使用純數字排序

-r反向排序

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

-k 按照那個欄位來進行排序

uniq

-i忽略大小寫

-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。

Shell指令碼學習 理解shell

使用者預設的shell 由 etc passwd 中的對應使用者的配置決定,一般為 bash shell bin bash bin sh 這個shell 一般用於shell 指令碼 通過 bash 命令可以建立子shell,及父程序建立子程序。ps f 可以檢視當前使用者程序的詳細資訊,ps p 可...

shell 指令碼學習

case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...

shell指令碼學習

shell 學習 1.shell 解釋型語言,有很多種直譯器。預設是 bin bash。shell指令碼第一行要寫 bin bash 2.shell指令碼執行的方法 1 sh sh 2 chmod a x sh sh 注意,一定要寫成.sh,而不是 sh。執行其它二進位制的程式也一樣,直接寫 sh,...