shell-01-基礎知識

      網友投稿 707 2022-05-29

      一、基礎知識

      一、Shell簡介

      Shell 是一個 C 語言編寫的腳本語言,它是用戶與 Linux 的橋梁,用戶輸入命令交給 Shell 處理, Shell 將相應的操作傳遞給內核(Kernel),內核把處理的結果輸出給用戶。

      程序=指令+數據

      二、Shell分類

      GUI 為 Unix 或者類 Unix 操作系統構造一個功能完善、操作簡單以及界面友好的桌面環境。主流桌面環境有 KDE,Gnome 等。

      CLI 是在用戶提示符下鍵入可執行指令的界面,用戶通過鍵盤輸入指令,完成一系列操作。

      在 Linux 系統上主流的 CLI 實現是 Bash,是許多 Linux 發行版默認的 Shell。還有許多 Unix 上Shell。

      [root@10-234-2-128 pyworkspace]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin

      Shell的分類:

      * Bourne Shell(/usr/bin/sh或/bin/sh) * Bourne Again Shell(/bin/bash) * C Shell(/usr/bin/csh) * K Shell(/usr/bin/ksh) * Shell for Root(/sbin/sh)

      腳本命名:

      注意:見名知意,后綴規范為.sh

      三、第一個Shell

      #!/bin/bash echo "this is my first shell script"

      #! 告訴系統其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序

      /bin/bash 指定使用的是那種shell

      echo在終端打印出內容

      四、執行Shell的三種方法

      [root@shell workspace]# ll total 4 -rw-r--r-- 1 root root 44 Sep 3 14:16 01-scripts.sh [root@shell workspace]# cat 01-scripts.sh #!/bin/bash echo "this is my first script" [root@shell workspace]# bash 01-scripts.sh this is my first script

      [root@shell workspace]# ./01-scripts.sh -bash: ./01-scripts.sh: Permission denied [root@shell workspace]# chmod +x 01-scripts.sh [root@shell workspace]# ll total 4 -rwxr-xr-x 1 root root 44 Sep 3 14:16 01-scripts.sh [root@shell workspace]# ./01-scripts.sh this is my first script

      這種方式默認根據腳本第一行指定的解釋器處理,如果沒寫以當前默認 Shell 解釋器執行。

      4.3 source執行

      [root@shell workspace]# source 01-scripts.sh this is my first script

      五、Shell變量

      變量名+內存空間

      變量賦值:name=value

      弱類型變量,所有變量類型視為字符串類型,對于數值相加自動轉換為數組類型,無需實現聲明

      命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭。

      中間不能有空格,可以使用下劃線(_)。

      不能使用標點符號。

      不能使用bash里的關鍵字(可用help命令查看保留關鍵字)

      做到見名知意

      環境變量作用范圍:當前shell進程及其子進程

      本地變量作用范圍:當前shell

      局部變量作用范圍:代碼片段

      利用export將本地變量導入到環境,擴大作用范圍

      在命令行提示符直接執行env、set查看系統或環境變量。env 顯示用戶環境變量,set 顯示 Shell 預先定義好的變量以及用戶變量。可以通過 export 導出成用戶變量。

      還可通過printevn/declare -x

      $SHELL 默認 Shell $HOME 當前用戶家目錄 $IFS 內部字段分隔符 $LANG 默認語言 $PATH 默認可執行程序路徑 $PWD 當前目錄 $UID 當前用戶 ID $USER 當前用戶 $HISTSIZE 歷史命令大小,可通過 HISTTIMEFORMAT 變量設置命令執行時間 $RANDOM 隨機生成一個 0 至 32767 的整數 $HOSTNAME 主機名

      特殊變量

      ${1..n} 指定第n個輸入的變量名稱

      ${1..n} 指定第n個輸入的變量名稱 $0 腳本自身名字 $? 返回上一條命令是否執行成功,0 為執行成功,非 0 則為執行失敗 $# 位置參數總數 $* 所有的位置參數被看做一個字符串 $@ 每個位置參數被看做獨立的字符串 $$ 當前進程 PID $! 上一條運行后臺進程的 PID

      腳本自身名字 $? 返回上一條命令是否執行成功,0 為執行成功,非 0 則為執行失敗 $# 位置參數總數 $* 所有的位置參數被看做一個字符串 $@ 每個位置參數被看做獨立的字符串 $$ 當前進程 PID $! 上一條運行后臺進程的 PID

      相同點:都是引用所有參數。

      不同點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數 1、2、3,,則 " * " 等價于 “1 2 3”(傳遞了一個參數),而 “@” 等價于 “1” “2” “3”(傳遞了三個參數)。

      profile 類型:

      定義全局變量

      運行命令或腳本

      bashrc 類型:

      定義本地變量

      定義命令別名

      交互式登錄shell:

      加載順序:/etc/profile -> /etc/profile.d/* -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

      非交互式登錄shell:

      加載順序:~/.bashrc -> /etc/bashrc -> /etc/profile.d/*

      普通變量

      [root@shell workspace]# var=normal [root@shell workspace]# echo $var normal

      臨時環境變量

      在當前shell下定義的變量,只對當前shell有效,新的bash已經其子bash無法使用當前定義的shell,如果在本shell存在的情況下,使用export來導入到系統變量中,如果當前shell終端終端,那么導入的變量將全部失效,永久生效需要寫入linux配置文件中。

      只讀變量

      [root@shell ~]# var='test' [root@shell ~]# echo $var test [root@shell ~]# readonly var [root@shell ~]# var='bbb' -bash: var: readonly variable

      刪除變量

      unset variable_name

      變量被刪除后不能再次使用。unset 命令不能刪除只讀變量。

      = 變量賦值

      += 變量相加

      [root@shell data]# var=123 [root@shell data]# var+=234 [root@shell data]# echo $var 123234

      為避免特殊字符及變量與字符連接使用,建議引用變量添加大括號

      六、引號

      單引號是告訴 Shell 忽略特殊字符,而雙引號則解釋特殊符號原有的意義,比如$、!。

      [root@xuel-tmp-shell www]# var1="aaa" [root@xuel-tmp-shell www]# echo '$var1' $var1 [root@xuel-tmp-shell www]# echo "$var1" aaa

      [root@xuel-tmp-shell www]# var2="aa" [root@xuel-tmp-shell www]# var3='bb $var2' [root@xuel-tmp-shell www]# echo $var3 bb $var2 [root@xuel-tmp-shell www]# var4="bb $var2" [root@xuel-tmp-shell www]# echo $var4 bb aa

      七、注釋

      shell-01-基礎知識

      單行注釋使用#

      多行注釋固定函數格式

      :<

      Shell

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Javaweb之實現文件上傳+點擊下載功能【奔跑吧!JAVA】
      下一篇:linux定時任務進程是否存在,并添加定時任務
      相關文章
      亚洲熟女乱综合一区二区| 国产成人人综合亚洲欧美丁香花 | 香蕉视频在线观看亚洲| 国产自偷亚洲精品页65页| 亚洲情a成黄在线观看| 国产精品亚洲一区二区三区久久| 亚洲av无码日韩av无码网站冲| 亚洲爆乳精品无码一区二区| 亚洲中文字幕无码久久| 亚洲熟妇自偷自拍另欧美| 亚洲精品又粗又大又爽A片| 亚洲精品久久无码| 亚洲AV无码一区二区三区网址 | 亚洲成在人线在线播放无码| 亚洲区日韩精品中文字幕| 亚洲一级大黄大色毛片| 亚洲色图古典武侠| 亚洲jjzzjjzz在线播放| 最新亚洲卡一卡二卡三新区| 亚洲欧美乱色情图片| 亚洲精品色在线网站| 国产精品亚洲专区无码牛牛| 偷自拍亚洲视频在线观看| 亚洲人成网站色在线入口| 中文字幕在亚洲第一在线| 亚洲国产综合无码一区| 亚洲av伊人久久综合密臀性色| 亚洲va久久久噜噜噜久久天堂| 日韩精品一区二区亚洲AV观看| 亚洲色偷偷偷网站色偷一区| 亚洲av午夜精品无码专区| 亚洲乱码中文字幕在线| 国产亚洲美女精品久久久久| 久久精品国产亚洲5555| 亚洲Av综合色区无码专区桃色| 亚洲午夜未满十八勿入| 亚洲av片不卡无码久久| 亚洲老熟女五十路老熟女bbw| 亚洲AV无码一区二区三区国产 | 国产精品亚洲自在线播放页码| 亚洲AV无码一区二区三区网址|