1. shell概述
shell的作用—命令直譯器;shell作為乙個人機介面,用於解釋使用者輸入的命令,將命令解釋為linux核心可以執行的2進製**,並將執行的結果返回在標準終端上。
shell的兩種主要語法型別有bourne和c,二者彼此不相容;bash與sh相容,現在使用的linux就是使用bash作為使用者的基本shell, 其屬於bourne家族。
2. shell基礎
在bash中,命令與檔案補全是非常方便與常用的功能,在輸入命令或檔案時,按「tab」鍵就會自動進行補全,經常使用。
命令別名:alias 別名='原命令';刪除別名:unalias 別名。
alias的作用僅在該次登入的操作,即輸入一次alias後,這個修改只在當前的shell生效。如果重新開啟乙個 shell,或者重新登入,則這些alias將無法使用。好在linux中提供alias永久化的方法:
1).若要每次登入就自動生效別名,則把別名加在/etc/profile或~/.bashrc中,然後# source ~/.bashrc
2).若要讓每一位使用者都生效別名,則把別名加在/etc/bashrc最後面,然後# source /etc/bashrc
---多命令順序執行---
執行符 格式 作用
; 命令1;命令2 多個命令順序執行,命令之間沒有邏輯關係
&& 命令1&&命令2 邏輯與:當命令1正確執行,則命令2才執行;當命令1執行不正確,則命令2不執行
|| 命令1||命令2 邏輯或:當命令1執行不正確,則命令2才會執行;當命令1正確執行,則命令2不執行
(1)| :管道符; 命令1 | 命令2,命令1的正確輸出作為命令2的操作物件。
(3)echo:輸出命令;-e,支援反斜線控制的字元轉換;-n,不換行輸出;\a,發出警告聲;\b,刪除前乙個字元;\c,最後不加上換行符號;\f,換行但游標仍舊停留在原來的位置;\n,換行且游標移至行首;\r,游標移至行首,但不換行;\t,插入tab;\v,與\f相同;\\,插入\字元;\nnn,插入nnn(八進位制)所代表的ascii字元;
3. shell指令碼
使用指令碼程式語言的好處是,它們多半執行在比編譯型語言還高的層級,能夠輕易處理檔案與目錄之類的物件。
缺點:它們的效率通常不如編譯型語言。不過權衡之下,通常使用指令碼程式設計還是值得的,花乙個小時寫成的簡單指令碼,同樣功能用c或c++來編寫實現,可能需要兩天,而且一般來說,指令碼執行的速度已經夠快了,快到足以讓人忽略它效能上的問題。
shell指令碼的基本元素:1) #!/bin/bash 必須的,指出shell的型別;2)# 注釋;3)變數;4)控制
執行shell指令碼方法:1)# sh ./datewho.sh;2)# chmod +x datewho.sh # ./datewho.sh
shell變數:可以儲存如路徑名、檔名或者乙個數字;變數名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。如果變數名是「2name」則是錯誤的;在bash中,變數的預設型別都是字串型,如果要進行數值運算,則必修指定變數型別為數值型。
---變數分類---
1)本地變數(使用者變數):在使用者現在的shell生命期的指令碼中使用,可以在shell程式內任意使用和修改它們。
注意:1)變數宣告及賦值格式:變數=值(等號兩邊不能有空格);2)取值包含空格,必須用雙引號括起來;3)shell變數可以用大小寫字母,區分大小寫;4)變數是弱型別的(不用宣告型別);5)變數使用:$變數名、$。顯示變數:echo命令可以顯示單個變數取值,變數名前加$;清除變數:unset 變數名。
2)環境變數:可以在建立它們的shell及其派生出來的任意子程式中使用;有些變數是使用者建立的,其他的則是專用的(比如path、home)是系統環境的一部分,不必去定義它們,可以在shell程式中使用它們,還能在shell中加以修改。環境變數用於所有使用者程序(通常稱為子程序)。登陸程序稱為父程序,通過pstree可以檢視。環境變數可以用於所有子程式,著包括編輯器、指令碼和應用。環境變數可以在命令列中設定,但使用者登出時這些值將丟失;環境變數均為大寫;必須用export命令匯出。設定環境變數:variable-name=value 、export variable-name(環境變數名大寫);顯示環境變數:env,可以看到所有的環境變數;echo $環境變數名 (顯示乙個變數);清除環境變數:unset 環境變數名。
主要環境變數列舉:home:代表使用者的家目錄。cd ~,去到使用者的家目錄或者利用 cd 就可以直接回到使用者家目錄了。shell:目前這個環境使用的 shell 是哪個程式; 如果是 bash 的話,預設是 /bin/bash。pwd:使用者當前工作目錄的路徑。它指出使用者目前在linux檔案系統中處在什麼位置,是由linux自動設定的。histsize:這個與「歷史命令」有關,曾經下達過的指令可以被系統記錄下來,而記錄的「數目」則是由這個值來設定的。env:這個使用者所使用的個性化環境設定的讀取檔案。mail:當我們使用 mail 這個指令在收信時,系統會去讀取的郵件信箱檔案(mailbox)。path:就是執行檔案搜尋的路徑,目錄與目錄中間以冒號(:)分隔,由於檔案的搜尋是依序由 path 變數內的目錄來查詢,所以目錄的順序也很重要的。lang:語系檔案,很多資料都會用到他,當出現編碼錯誤的時候往往需要設定它,中文編碼是zh_cn.utf8。
讓環境變數的修改在退出shell再次登入時仍有效,需要在相關配置檔案中修改。bash的初始化檔案有:/etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc。/etc/profile,存放一些全域性(共有)變數,不管哪個使用者,登入時都會讀取該檔案。通常設定一些shell變數,如path,user,hostname和histsize等;~/.bash_profile,每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次。預設情況下設定一些環境變數,要執行使用者的.bashrc檔案;~/.bashrc,該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新shell時,該檔案才被讀取;/etc/bashrc,為每乙個執行bash shell的使用者執行此檔案,當bash shell被開啟時,該檔案被讀取。
配置檔案的作用:1)登入linux先啟動系統配置檔案/etc/profile,並從/etc/profile.d目錄的配置檔案中蒐集shell的設定,為系統的每個使用者設定環境資訊。2)使用者配置檔案~/.bash_profile,每個使用者專用於自己使用的shell資訊,僅使用者登入時執行一次;預設情況下,此檔案通過指令碼執行同目錄下使用者的.bashrc檔案。區別:bash_profile只在會話開始的時候讀取一次,而bashrc則每次開啟終端時都會讀取。3)~/.bashrc檔案包含專用於使用者bash shell的bash資訊,登入及每次開啟新的shell時都會執行,裡面又會呼叫/etc/bashrc。
3)內部變數:由系統提供的;與環境變數不同,但使用者不能修改它們。內部變數是linux所提供的一種特殊型別的變數,這類變數在程式中用來作出判斷。在shell程式內這類變數的值是不能修改的。
部分內部變數是:$#,傳送給shell程式的位置引數的數量;$?,最後命令的完成碼或者在shell程式內部執行的shell程式(返回值),0表示沒有錯誤,其他任何值表明有錯誤; $0,shell程式的名稱; $@,呼叫shell程式時所傳送的全部引數的單字串,「引數1」「引數2」…形式儲存的引數;$*,「引數1 引數2」…形式儲存的引數;$n,第n個引數;$$,本程式的pid。
特殊符號:注釋符#,除了#!/bin/bash裡的#特殊;美元符 $,變數符。與反斜槓轉義符相反,使其後的普通字元作為變數名,如$a表示變數a的值。變數字元長度超過1個時,用{}括起來;單引號,被引起的字元全部做普通字元,即全部原樣echo 『my $shell』 ;雙引號,引號內的內容,除$、轉義符\、倒引號`這三個保留特殊功能,其他字元均做普通字元;倒引號(數字1鍵旁邊的那個鍵),引號內的字串當做shell命令列解釋執行,得到的結果取代整個倒引號括起來的部分;反斜線,轉義字元,它能把特殊字元變成普通字元。在某個字元前面利用反斜槓(\)能夠阻止shell把後面的字元解釋為特殊字元;string="abcd" echo $ #輸出 4,獲取字串長度;string="runoob is a great site" echo $ # 輸出 unoo,提取子字串。
Linux運維培訓
課程介紹 上課方式 yy 上課費用 不要19999,也不要6999,最終定價 3200 乙個同學曾說,相當於請幾個朋友吃一頓大餐的錢,能成就自己的linux職業生涯,這麼好的事情,你不幹,我幹 上課方式 linux入門到高階全套課程講解 實戰演練 手把手教會 學員要求 最好有計算機基礎,下決心提公升...
Linux 運維培訓筆記
2018 01 05 許可權管理 sudoers檔案 kaifa admins all op1 kaifacmd 使用者 大寫 主機 角色 命令 全路徑 設定使用者密碼方法 方法一 for n in seq 1 10 do useradd n echo user n echo user n md5s...
PMP培訓第3 4天
這回沒啥專案管理筆記。因為。昨天客戶那裡有個緊急問題,不得已放棄了pmp的培訓,趕去單位解決問題。今天上pmp培訓時直犯睏,靠在椅背上聽著聽著就迷迷糊糊要睡了,調整一下姿勢不靠椅背,看著教材,一會兒就頭低了下來迷迷糊糊要睡著了,這課聽得。中午小組 pmp培訓是分小組學習的 一起吃飯時,被選為了副組長...