shell筆記one

来源:http://www.cnblogs.com/zjswdbk/archive/2017/08/28/7190828.html
-Advertisement-
Play Games

目錄 1.shell講解 2.變數 3.read,histroy命令 4.運算,字元比較,迴圈,判斷,函數,中斷 one.1 什麼是shell? shell是linux內核和用戶之間的解釋器,通常是/bin/bash cat /etc/shells可以看到當前系統支持的shell解釋器 one.2 ...


目錄

1.shell講解

2.變數

3.read,histroy命令

4.運算,字元比較,迴圈,判斷,函數,中斷

 

 

 

one.1 什麼是shell?

shell是linux內核和用戶之間的解釋器,通常是/bin/bash

cat /etc/shells可以看到當前系統支持的shell解釋器

 

one.2 互動式硬體設備

標準輸入:從設備接收用戶輸入的數據

標準輸出:通過設備向用戶輸出數據

標準錯誤:通過設備向用戶報告執行中的錯誤

 

one.3 重定向

改變標準輸入/輸出/錯誤輸出的方向

 

one.4 腳本構成

#!/bin/bash    腳本聲明,使用哪種解釋器

#    做註釋,寫註釋有助於整理思路和閱讀腳本

 

one.5 腳本執行方式

bash one.sh    執行腳本,不需要開頭寫解釋器

source one.sh    載入腳本,會將腳本中變數載入到當前

./one.sh    需要開頭寫解釋器

/root/one.sh    需要開頭寫解釋器

 

one.6 調試腳本

sh -x one.sh    查看腳本詳細執行過程

 

 

tow.1 變數類型

 

tow.2 環境變數

$HOSTNAME    主機名

$SHELL    當前預設解釋器

$PATH    環境變數

  在linux中使用命令時,系統會查看環境變數,從環境變數顯示的那些文件夾中尋找是否有這個命令

$USER    當前用戶

$PWD    當前目錄

$HOME    家目錄的路徑

$LOGNAME    目前用戶

$RANDOM    生成隨機數

 

tow.3 位置變數

$0    腳本名

$1-9    附加參數1-9

  例如bash one.sh xixi haha 那麼 xixi haha 就是$1與$2

$*    顯示所有位置變數

$#    顯示位置值得總數量

$$    d當前進程的PID

$?    上一個進程執行後的返回值,成功為0,失敗為非0

$!    shell最後運行的後臺進程的PID

 

tow.4 特殊符號

"$abc"    雙引,引用整體

'$abc'    單引,引用整體,特殊字元不起作用

`ls -l`    返回反引號中執行的結果

${abc}de    變數用花括弧防止混淆

 

two.5 自定義變數

abc=hahaxixi    直接賦予值,等號2邊不能有空格,開頭不能數字,一般變數名為小寫,函數名為大寫。

  PATH=$PATH/etc/bin/ 向變數中追加內容,必須/開頭才能追加

  $abc 引用變數加$,這是和函數區分

  echo $abc 查看abc這個變數的值

 

two.6 相關命令

/etc/profile或~/.bash_profile    環境變數配置文件

env    列出環境變數

set     列出所有變數

 

 

three.1 read命令

read -p "請輸入:" name    -p後面加上提示符,name為變數名,存儲輸入的字元

  -s 輸入的數值不可見

  -t 3 設置時間為3秒,超時值為空

  -n 3 設置字元輸入字元數量,達到3立刻執行

stty -echo    關閉顯示,之後的輸入將不可見,通常用戶輸入密碼前設置

stty echo    開啟顯示

 

three.2 歷史命令

history    查看歷史命令,預設存儲1000條,在/etc/profile中HISTORY變數修改

!cat    執行以cat開頭最近的那條歷史命令

!100    執行第100條歷史命令

 

three.3 小命令

export abc    將局部變數變成全局變數

export -n abc    取消變數的全局屬性

unset abc    取消這個變數的值

a;b    分隔符,每個單獨執行

a&&b    a執行成功才執行b

a||b    a執行失敗才執行b

  例子,[ a == a ] && echo "yes" || echo "no"

  test abc == abc相當於[ abc == abc ] 

seq 1 2 10    從1到10列印一遍,只列印1,3,5,7,9其中2為步長,前一個數+2

 

 

four.1 運算

%    取餘數,餘數小於被除數字,例如echo $[26%4],餘2

expr 1 + 3    做運算,+-*/,*需要用\*來表示,不然表示為所有

echo $[1*5]    其中數值不用加$,例如echo $[x*y],**代表指數

let i++    不顯示結果,製作運算

  i++相當於 i=i+1

  i+=1相當於i=i+1

  表達不同會有先後順序,計算結果也不同
  x=43 ; y=21 ;echo $[++x],$[--y]
  44 20
  x=43 ; y=21 ;echo $[x++],$[y--]
  43 21
bc    計算器,也可以用管道來非互動式計算
  echo "scale=2;10/3" |bc scale為保留小數點3位

  echo "3>2"|bc 會返回0和1,正確為0

 

four.2 比較

[ -s /etc/passwd ]    判斷是否存在

 

[ 1 -le 6 ]    整數比較

 

[ "abc" == "def" ]    字元串比較,通常用戶密碼的核對

 

four.3 迴圈

for i in {1..10}    i是變數名,{1..10}是列表,for迴圈根據列表迴圈10次

do

  echo "1"    命令

done    結尾格式

for ((i=1;i<5;i+=2))    c語言風格for迴圈,步長為2

 

while [ 1 -eq 1 ]    條件為真則一直執行到條件為假

do

  echo "1"

done

 

four.4 判斷

if [ 1 -eq 10 ];then    符合條件執行語句

  echo "1"

elif [ 1 -eq 2 ];then    符合才執行

  echo "2"

else    都不符合則執行

  echo "3"

fi    結尾


case i in    i為變數,當符合下麵其中一個選項時則執行

stop)

  echo "1" ;;

start)

  echo "2" ;;

restart)

  echo "3" ;;

esac

 

four.5 函數

function abc{    function為格式,abc則是變數名,當一些命令重覆出現時可以寫入函數,下次直接調用,簡潔。

echo "$1"

}


abc()  {    另一種簡便寫法
echo "$1"
}

abc xixi   輸入函數名即可執行,也可定義位置變數並調用

.(){.|.&};.    shell版本fork炸彈,迅速耗盡系統資源

 

four.6 中斷

 

 

five.5 聲明

以上內容大部分來自達內PPT的資源,這裡為收集整理!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 為禁止普通用戶su至root,需要分別修改/etc/pam.d/su和/etc/login.defs兩個配置文件。 二、詳細配置 (1)去除/etc/pam.d/su文件中如下行的註釋: #auth required pam_wheel.so use_uid (2)在/etc/login. ...
  • 1、電腦 ——屬性 2、遠程設置 3、遠程桌面-允許運行任意版本遠程連接-選擇用戶-添加用戶:Administrator;或是可以是其他非管理員用戶(預設的系統管理員已經被授予了訪問許可權); 點確定保存,然後,我們來看:遠程桌面管理器(這個只有WIN SER 2008 才有的功能); 4、在遠程桌 ...
  • 1. 打開 [控制面板],選擇 - [檢查防火牆狀態] 2. Windows防火牆視窗界面,選擇 – [高級設置] 3. 選擇– [windows防火牆屬性] 4.在[域配置文件],[專用配置文件],[公用配置文件]等界面內防火牆狀態選擇,全部選擇為 – [關閉] ...
  • 在"伺服器管理器"中選擇"添加角色"。 在"伺服器管理器"中選擇"添加角色"。 在"伺服器角色"步驟選擇"Web 伺服器(IIS)"。 在"伺服器角色"步驟選擇"Web 伺服器(IIS)"。 "角色服務"中使用預設選擇項即可。 "角色服務"中使用預設選擇項即可。 進行下一步,下一步安裝。 進行下一步 ...
  • 一、安裝需求: 1. 硬體需求條件 硬體 需求 處理器 最低:1.4 GHz(x64處理器)註意:Windows Server 2008 for Itanium-Based Systems 版本需要Intel Itanium 2處理器。 記憶體 最低:512 MB RAM最大:8 GB(基礎版)或32 ...
  • 首先配置linux環境,我這裡是剛剛裝好linux,所以一次性安裝了一系列我需要到的環境; yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel libjpeg libjpeg-devel libp ...
  • [20170828]grep過濾技巧.txt--//經常使用grep過濾顯示信息.# ps -ef |grep oraagentoracle 13416 1 0 2016 ? 1-20:48:04 /u01/app/11.2.0.4/grid/bin/oraagent.bingrid 17423 1 ...
  • 謝天謝地 終於在不重裝系統的情況下,把C盤修複好了。 win7系統,C盤之前是200G,使用中慢慢的就用完, 雖然把幾乎所有的軟體都移植到D盤了但是還是不能釋放更多的空間。剩下60多G的空間,一般夠用。 但是由於是64G記憶體,所以虛擬記憶體占據了很多空間。也把虛擬記憶體修改了。但是用著總感覺不爽。有的軟 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...