天天看點

【Linux學習】Shell基礎知識

轉載于:https://blog.csdn.net/a15803617402/article/details/84936151

長指令與短指令

ls -l -a /root #長指令
ls -la /root #短指令
           
  • 1
  • 2

在Linux系統中,指令可以分為:bash内置的指令和應用程式。

#可以使用which指令檢視哪些指令是bash内置的指令,哪些是應用程式。
[email protected]:/# which ls
/usr/bin/ls
           
  • 1
  • 2
  • 3

常用控制組合鍵

  • Ctrl+l:清屏
  • Ctrl+o:執行目前指令,并選擇上一條指令
  • Ctrl+s:阻止螢幕輸出
  • Ctrl+q:允許螢幕輸出
  • Ctrl+c:終止指令
  • Ctrl+z:挂起指令
  • Ctrl+d:輸入結束或登出Linux系統

常用光标操作

Ctrl+a:移到指令首行

Ctrl+e:移到指令行尾

Ctrl+u:删除從光标到指令行首的部分

Ctrl+k:删除從光标到指令行尾部分

特殊字元

在Linux系統中,許多字元對于shell具有特殊意義
~:使用者主目錄
`:反引号,用來指令代替
#:注釋
$:變量取值
():子shell開始與結束
\:使指令持續到下一行
|:管道
<:輸入重定向
> 輸出重定向
>>:追加重定向
':單引号(不具有變數置換功能)
“:雙引号(具有變數置換功能)
/:路徑分隔符
;:指令分隔符
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

通配符

?:表示任何單一字元
*:表示任意字元
[charlist]:在中括号中的字元都符合
[!charlist]:不在中括号中的字元都符合
           
  • 1
  • 2
  • 3
  • 4

指令曆史記錄

bash啟動時會讀取/.bash_history檔案,并将其載入記憶體中,$HISTFILE變量用于設定/.bash_history檔案,bash退出時也會把記憶體中的曆史記錄回寫到此檔案中。
[email protected]:/# echo $HISTFILE
/root/.bash_history
#在etc/profile檔案中,預設定義了1000個指令曆史記錄
$HISTSIZE:設定bash會話期間指令曆史包含的指令數量
$HISTFILESIZE:設定曆史檔案中實際存儲的指令數量
           
  • 1
  • 2
  • 3
  • 4
  • 5

使用history指令可以檢視指令曆史記錄,每一條指令都有一個序列号标示。

-c:清除指令曆史記錄
-w:将目前的曆史指令寫到.bash_history檔案中(覆寫操作)
-a:将目前新增的曆史指令追加到.bash_history檔案中
n:顯示最近n個指令曆史記錄
-r:讀取曆史檔案的内容,并把它們作為目前曆史
           
  • 1
  • 2
  • 3
  • 4
  • 5

指令排列

1、使用;
先執行指令1,不管指令1是否出錯,接下來執行指令2
[email protected]:~# ls;pwd
test
/root
2、使用&&
隻有指令1正确執行完畢後才能執行指令2
[email protected]:~# ls&&pwd
test
/root
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

指令替換

在Linux系統中,shell指令的參數可以由另一個指令的結果來代替,這種操作稱為指令替換,有兩種替換字元:$()、``反引号
[email protected]:~# ls $(pwd)
test
[email protected]:~# ls `pwd`
test
           
  • 1
  • 2
  • 3
  • 4

指令别名

在需要執行某一個非常長的指令時,所有的指令及指令的選項、參數都可以用快捷方式來定義簡單的别名
文法說明:
alias [别名]=[需要定義的指令]
[email protected]:~# alias hello="ls -al /root"
[email protected]:~# hello
total 4
drwx------ 1 root root 4096 Dec 10 09:39 .
drwxr-xr-x 1 root root 4096 Dec  5 11:10 ..
-rw------- 1 root root  179 Dec  9 10:34 .bash_history
-rw-r--r-- 1 root root  570 Sep 12 14:36 .bashrc
-rw-r--r-- 1 root root  148 Sep 12 14:36 .profile
drwxrwxrwx 1 root root 4096 Dec 10 09:39 test
取消别名:
unalias [别名]
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

管道

可以将某個指令的輸出資訊作為某個指令的輸入,用|來标示
[email protected]:~# cat .bash_history |grep c
cd /
curl
nc
           
  • 1
  • 2
  • 3
  • 4

重定向

1、輸出重定向,即将某一個指令執行的輸出儲存到檔案中,如果已存在該檔案,那麼将覆寫操作。

[指令] > [檔案]
[email protected]:~# history > history.txt
[email protected]:~# cat history.txt
    1  cd /
    2  .......省略
[email protected]:~# echo hello>hello.txt
[email protected]:~# cat hello.txt
hello
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、追加重定向

[email protected]:~# echo world>>hello.txt
[email protected]:~# cat hello.txt
hello
world
           
  • 1
  • 2
  • 3
  • 4

3、錯誤重定向,将某一指令執行的出資訊輸出到指定的檔案中

[指令] 2> [檔案]
[email protected]:~# cat /root/123 2>2.txt
[email protected]:~# cat 2.txt
cat: /root/123: No such file or directory
錯誤追加:
[指令] 2>> [檔案]
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

VI編輯器

vi編輯器是Linux系統字元界面下最常用的文本編輯器,用于編輯任何ASCII文本,可以進行文本的建立、查找、替換、删除、複制和粘貼等操作。
  • 指令模式:進入vi編輯器後,系統預設處于指令模式,指令模式控制螢幕光标的移動、字元、字或行的删除等,在指令模式下可以按:進入末行模式,按下字母a鍵進入插入模式
  • 插入模式:隻有在插入模式下,才能進行文本編輯,按下WSC鍵可以回到指令模式。
  • 末行模式:在末行模式下,可以将檔案進行儲存或退出vi編輯器,也可以進行字元替換或删除操作。
常用插入模式指令:
i:從光标目前所在的位置開始插入
a:從光标目前所在的位置之後開始插入
o:在光标所在行的下面新開一行插入
常用指令模式操作:
x:删除光标所在位置的字元
X:删除光标所在位置前面一個字元
dd:删除光标所在行
yy:複制光标所在行
u:撤銷上一個操作
Ctrl+g:列出行号
ZZ:儲存退出
ZQ:不儲存退出
/關鍵字:先按下/鍵,在輸入要查找的内容,按下n鍵會繼續查找下一個關鍵字。
末行操作模式:先按下ESC鍵,再按下:鍵進入末行模式:
:w    儲存檔案
:w fimename    另存為
:wq    儲存并退出VI編輯器
:wq!    儲存檔案并強制退出
:x    與:wq!效果一樣
:q!如果無法離開vi,則強制退出
:set number    在檔案每行前面列出行号
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
</div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" target="_blank" rel="external nofollow"  rel="stylesheet">
                </div>
           

長指令與短指令

ls -l -a /root #長指令
ls -la /root #短指令
           
  • 1
  • 2

在Linux系統中,指令可以分為:bash内置的指令和應用程式。

#可以使用which指令檢視哪些指令是bash内置的指令,哪些是應用程式。
[email protected]:/# which ls
/usr/bin/ls
           
  • 1
  • 2
  • 3

常用控制組合鍵

  • Ctrl+l:清屏
  • Ctrl+o:執行目前指令,并選擇上一條指令
  • Ctrl+s:阻止螢幕輸出
  • Ctrl+q:允許螢幕輸出
  • Ctrl+c:終止指令
  • Ctrl+z:挂起指令
  • Ctrl+d:輸入結束或登出Linux系統

常用光标操作

Ctrl+a:移到指令首行

Ctrl+e:移到指令行尾

Ctrl+u:删除從光标到指令行首的部分

Ctrl+k:删除從光标到指令行尾部分

特殊字元

在Linux系統中,許多字元對于shell具有特殊意義
~:使用者主目錄
`:反引号,用來指令代替
#:注釋
$:變量取值
():子shell開始與結束
\:使指令持續到下一行
|:管道
<:輸入重定向
> 輸出重定向
>>:追加重定向
':單引号(不具有變數置換功能)
“:雙引号(具有變數置換功能)
/:路徑分隔符
;:指令分隔符
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

通配符

?:表示任何單一字元
*:表示任意字元
[charlist]:在中括号中的字元都符合
[!charlist]:不在中括号中的字元都符合
           
  • 1
  • 2
  • 3
  • 4

指令曆史記錄

bash啟動時會讀取/.bash_history檔案,并将其載入記憶體中,$HISTFILE變量用于設定/.bash_history檔案,bash退出時也會把記憶體中的曆史記錄回寫到此檔案中。
[email protected]:/# echo $HISTFILE
/root/.bash_history
#在etc/profile檔案中,預設定義了1000個指令曆史記錄
$HISTSIZE:設定bash會話期間指令曆史包含的指令數量
$HISTFILESIZE:設定曆史檔案中實際存儲的指令數量
           
  • 1
  • 2
  • 3
  • 4
  • 5

使用history指令可以檢視指令曆史記錄,每一條指令都有一個序列号标示。

-c:清除指令曆史記錄
-w:将目前的曆史指令寫到.bash_history檔案中(覆寫操作)
-a:将目前新增的曆史指令追加到.bash_history檔案中
n:顯示最近n個指令曆史記錄
-r:讀取曆史檔案的内容,并把它們作為目前曆史
           
  • 1
  • 2
  • 3
  • 4
  • 5

指令排列

1、使用;
先執行指令1,不管指令1是否出錯,接下來執行指令2
[email protected]:~# ls;pwd
test
/root
2、使用&&
隻有指令1正确執行完畢後才能執行指令2
[email protected]:~# ls&&pwd
test
/root
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

指令替換

在Linux系統中,shell指令的參數可以由另一個指令的結果來代替,這種操作稱為指令替換,有兩種替換字元:$()、``反引号
[email protected]:~# ls $(pwd)
test
[email protected]:~# ls `pwd`
test
           
  • 1
  • 2
  • 3
  • 4

指令别名

在需要執行某一個非常長的指令時,所有的指令及指令的選項、參數都可以用快捷方式來定義簡單的别名
文法說明:
alias [别名]=[需要定義的指令]
[email protected]:~# alias hello="ls -al /root"
[email protected]:~# hello
total 4
drwx------ 1 root root 4096 Dec 10 09:39 .
drwxr-xr-x 1 root root 4096 Dec  5 11:10 ..
-rw------- 1 root root  179 Dec  9 10:34 .bash_history
-rw-r--r-- 1 root root  570 Sep 12 14:36 .bashrc
-rw-r--r-- 1 root root  148 Sep 12 14:36 .profile
drwxrwxrwx 1 root root 4096 Dec 10 09:39 test
取消别名:
unalias [别名]
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

管道

可以将某個指令的輸出資訊作為某個指令的輸入,用|來标示
[email protected]:~# cat .bash_history |grep c
cd /
curl
nc
           
  • 1
  • 2
  • 3
  • 4

重定向

1、輸出重定向,即将某一個指令執行的輸出儲存到檔案中,如果已存在該檔案,那麼将覆寫操作。

[指令] > [檔案]
[email protected]:~# history > history.txt
[email protected]:~# cat history.txt
    1  cd /
    2  .......省略
[email protected]:~# echo hello>hello.txt
[email protected]:~# cat hello.txt
hello
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2、追加重定向

[email protected]:~# echo world>>hello.txt
[email protected]:~# cat hello.txt
hello
world
           
  • 1
  • 2
  • 3
  • 4

3、錯誤重定向,将某一指令執行的出資訊輸出到指定的檔案中

[指令] 2> [檔案]
[email protected]:~# cat /root/123 2>2.txt
[email protected]:~# cat 2.txt
cat: /root/123: No such file or directory
錯誤追加:
[指令] 2>> [檔案]
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

VI編輯器

vi編輯器是Linux系統字元界面下最常用的文本編輯器,用于編輯任何ASCII文本,可以進行文本的建立、查找、替換、删除、複制和粘貼等操作。
  • 指令模式:進入vi編輯器後,系統預設處于指令模式,指令模式控制螢幕光标的移動、字元、字或行的删除等,在指令模式下可以按:進入末行模式,按下字母a鍵進入插入模式
  • 插入模式:隻有在插入模式下,才能進行文本編輯,按下WSC鍵可以回到指令模式。
  • 末行模式:在末行模式下,可以将檔案進行儲存或退出vi編輯器,也可以進行字元替換或删除操作。
常用插入模式指令:
i:從光标目前所在的位置開始插入
a:從光标目前所在的位置之後開始插入
o:在光标所在行的下面新開一行插入
常用指令模式操作:
x:删除光标所在位置的字元
X:删除光标所在位置前面一個字元
dd:删除光标所在行
yy:複制光标所在行
u:撤銷上一個操作
Ctrl+g:列出行号
ZZ:儲存退出
ZQ:不儲存退出
/關鍵字:先按下/鍵,在輸入要查找的内容,按下n鍵會繼續查找下一個關鍵字。
末行操作模式:先按下ESC鍵,再按下:鍵進入末行模式:
:w    儲存檔案
:w fimename    另存為
:wq    儲存并退出VI編輯器
:wq!    儲存檔案并強制退出
:x    與:wq!效果一樣
:q!如果無法離開vi,則強制退出
:set number    在檔案每行前面列出行号
           
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
</div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" target="_blank" rel="external nofollow"  rel="stylesheet">
                </div>
           

繼續閱讀