shell 學習筆記整理(一)

2021-09-20 14:45:28 字數 2311 閱讀 7189

shell指令碼地功能--使用者和核心連線的特殊程式。

程式語言:編譯型和指令碼語言(script 。shell就是指令碼語言)

shell指令碼的型別:

1.非互動式指令碼

2.互動式指令碼

shell程式設計的基礎:

1.文字編輯器 vi(vim)當然,shell是純文字,可以使用任何文字編輯器(不要用word)

2.熟悉linux檔案系統的布局

3.學習shell的各種功能

重定向,管道,命令替換,命令聚合

4.學習各種管理和監視命令的使用

使用者管理,許可權管理,程序管理,包管理,系統監視,網路監視

5.學習各種文字檔案工具使用:

cat grep tr sed awk,正規表示式

shell 指令碼的格式:

sha-bang(#!)(shell 指令碼開始符號的讀法)

#! /bin/bash  告訴直譯器用什麼工具(或語言)解釋下面的**。

可執行語句和shell控制結構

乙個shell指令碼通常由一組linux命令,shell命令,控制結構和注釋語句構成。

shell指令碼是純文字檔案,可以使用任何文字編輯器編寫。

一般預設.sh結尾的字尾名(約定俗成,但是不要誤會,linux沒有字尾名這個東西。一切都是檔案)

命令是shell指令碼最基本元素,通常由命令名稱、選項和引數組成

指令碼例項:

./test.sh -f config.conf -v --prefix=/home

-(短選項)與後面連線用空格  --(長選項)和後面用等號連線

執行:第一種方法:授權chmod +x script_name(讓指令碼有可執行許可權)

755第二種執行方式:通過工具(命令/bin/bash)

bash

; && || 區別

; 可同時執行多個命令。並且每個命令都不會對其它命令產生影響。

&& 一般是2個命令連線。如果前乙個命令執行成功,才會執行後乙個命令,如果失敗後面的命令就不執行。

|| 一般也是2個命令的連線,如果前乙個命令執行不成功,才會執行後乙個命令。

例項:[root@swallow ~]# more test.sh 

#!/bin/bash

datt;date

echo

datt&&date

echo

datt||date

exit 0

從執行結果理解含義:

[root@swallow ~]# sh test.sh 

test.sh: line 2: datt: command not found

sun mar 19 06:17:40 cst 2017

test.sh: line 4: datt: command not found

test.sh: line 6: datt: command not found

sun mar 19 06:17:40 cst 2017

特殊字元:

#! 開始的標誌

;  多個命令一起連用的分隔符

[root@swallow log]# echo a;echo b;echo cab

c.  多種作用:

1. 相當與 source 命令

2. 作為檔名稱的一部分(隱藏檔名)  (使用ls -a  可以檢視linux下面的隱藏檔案)

3.如果作為目錄名的話,乙個單獨的點代表當前工作目錄,兩個點代表上一級目錄。

一般用於複製的時候使用   $ cp  /usr/local/mysql/* .

4.在匹配字元的時候用來匹配 任意單個字元

\ 稱為轉義符。一種對單字元的引用機制。

/ 檔名稱分隔符  比如 (/usr/local/mysql)

``(esc按鍵下面的那個按鍵) 用於引用命令。一般用法:`command` 將結果作為引數。

>  >>  |

覆蓋(重定向) 追加(重定向) 管道符(前面的輸入作為和麵的輸出)

控制字元:(適用於crt(連線終端))

ctrl + l  清屏

ctrl + u 刪除游標到開頭的字元

ctrl + k 刪除游標所在位置到行尾的字元

ctrl + c (break 終結乙個前台作業)

ctrl + d (和 exit很想。登出乙個)

ctrl + m (回車)

ctrl + s (掛起。在乙個終端中凍結stdin)

ctrl + q (恢復。在乙個終端恢復stdin

ctrl + z (暫停操作)

ctrl + a (游標移動到行首)

ctrl + e (游標移動到行尾)

shell學習筆記(一)

1.在變數的設定中,單引號與雙引號有什麼不同呢?單引號與雙引號的最大的不同在於雙引號仍然可以保有變數的內容,但單引號僅能是一般字元,而不會有特殊符號。2.在指令下達的過程中,quote 這個符號代表的意義為何?在一串指令中,在 之內的指令將會被先執行,而其執行出來的結果將作為外部的輸入資訊!例如 u...

shell學習筆記(一)

1.history 執行命令歷史紀錄 2.執行上一次命令3.n執行這條命令4.vim執行最近的乙個 vim 5.alias 可以簡單修改名字別名也就是把貓叫個咪 也可以比如 alias ls 6.ctrl z jobs,fg bg作業控制 7.mail s vayne 1219345363 qq.c...

shell學習筆記(一)

一.指令碼編寫和使用 1.sh指令碼宣告 bin sh 2.注釋寫法 該行都是 3.使指令碼可執行 chmod x filename 4.執行指令碼 在終端terminal中輸入.filename即可 二.變數的定義和使用 1.定義變數 變數名 屬性值 2.使用變數 變數名 大括號用來表示變數名的範...