首頁 運維 linux運維 linux 指令 sh 是什麼意思

linux 指令 sh 是什麼意思

Apr 12, 2023 am 11:15 AM
linux

linux命令sh是linux中執行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令列介面,使用者可以在shell腳本輸入命令中執行各種各樣的任務。

linux 指令 sh 是什麼意思

#本教學操作環境:linux5.9.8系統、Dell G3電腦。

linux 指令 sh 是什麼意思?

linux sh指令簡述

#

1. 可能需要的執行方式

linux下執行.sh檔案的方法

.sh檔案就是文字文件,如果要執行,需要使用chmod a x xxx.sh來給予可執行權限。

2. 開頭:#!/bin/sh

shell程式必須以「#!/bin/sh」開始。 shell中#一般表示註解的意思,所以很多時候認為"#!"也是註釋,但其實不是。

"#!/bin/sh"是對shell的聲明,說明你所使用的是哪一種類型的shell及其路徑所在。

#!/bin/是指此腳本使用.bin/sh來執行。

#!是特殊的表示符,後面接著的是解釋此腳本的shell的路徑,如果沒有聲明,則腳本將在預設的shell中執行,預設shell是由使用者所在的系統定義要執行shell腳本,如果腳本被編寫為在Kornshell ksh中運行,而預設運行shell腳本的為C shell csh,則腳本在執行過程中很可能失敗。所以建議大家就把"#!/bin/sh"當成C 語言的main函數一樣,寫shell必須有,以使shell程式更嚴密

3. 變數

在其他程式語言中必須使用變數。在shell程式設計中,所有變數都由字串組成,且不需要對變數進行宣告。要賦值給一個變數,可以這樣寫:

#!/bin/sh
 #对变量赋值:
 a=”hello world”# 现在打印变量a的内容:
 echo “A is:” echo $a
登入後複製

有時候變數名稱很容易與其他文字混淆,例如:

 num=2
 echo “this is the $numnd”
登入後複製

這並不會印出」this is the 2nd",而只印出"this is the ",因為shell會去搜尋變數numnd的值,但這個變數是沒有值的。因此,可以使用花括號來告訴shell我們要印的是num變數:

 num=2
 echo “this is the ${num}nd”
登入後複製

這樣才會列印」this is the 2nd"

4. Shell指令和流程控制

在shell腳本中可以使用以下指令:

Unix指令

雖然在shell腳本中可以使用任意的unix指令,但還是有一些相對較常用的指令。這些命令通常是用來進行文件和文字操作的。
如:

 echo "some text" #将文字内容打印在屏幕上
 ls #文件列表
 cp sourcefile destfile #文件拷贝
 mv oldname newname #重命名文件或移动文件
 rm file #删除文件
 grep 'pattern' file #在文件内搜索字符串,如:grep 'searchstring' file.txt
 cat file.txt #输出文件内容到标准输出设备(屏幕)上
 read var #显示用户输入,并将输入赋值给变量
登入後複製

概念:管道,重定向和backtick(反斜線)

  1. 管道| 將一個命令的輸出作為另外一個命令的輸入。
grep "hello" file.txt | wc -l
登入後複製

上述程式碼表示為:在 file.txt 中搜尋包含有 “hello” 的行併計算其行數。在這裡grep指令的輸出作為wc指令的輸入。

要注意的是,管道後面的指令是子指令,不會出現在接下來的指令中(有點像C 在{}內和{}外賦值的差異),如下列指令:

#!/bin/shecho 1 2 3 | { read a b c ; echo $a $b $c ; } # 打印结果为: 1 2 3echo $a $b $c # 打印结果为空
登入後複製
  1. 重定向:將指令的結果輸出到文件,而不是標準輸出(螢幕)。
    >寫入檔案並覆蓋舊檔案
    >>追加到檔案的尾部,保留舊檔案內容。

  2. 反短橫線“`”:使用反短橫線可以將一個指令的輸出當作另一個指令的一個命令列參數

 find . -mtime  -1  -type  f  -print
登入後複製

上述語句用來找出過去24小時(-mtime -2則表示過去48小時)內修改過的檔案。如果想要將所有查找到的檔案打一個包,則可以使用一下linux腳本:

 #!/bin/sh
 # The ticks are backticks (`) not normal quotes (‘):
 tar -zcvf  lastmod.tar.gz `find . -mtime -1 -type f -print`
登入後複製

#流程控制

##if
if 表達式,如果條件為真則執行then 後面的部分:

 if ….; then
 …. elif ….; then
 …. else
 …. fi #注意是以fi结尾
登入後複製
大多數情況下,可以使用測試指令來測試條件。例如可以

比較字串、判斷檔案時都存在以及是否可讀等等

#while
while 迴圈的語法結構為:

# expression 1# while循环:当expresssion成立的时候,执行cmdwhile (expresssion)do
  cmddone# expression 2,可以直接使用truewhile true(或 :)do 
	cmddone
登入後複製
此指令配合可以配合管道使用,如:

# 寻找 ${path} 路径下唯一首字母为‘E’的子目录,并 cd 到该目录find ${path}/E* -type d | while read corresp_pathdo
	cd ${corresp_path}done
登入後複製

測試條件 通常使用
「[ ]」來表示測試條件。注意這裡的空格很重要,要確保方括號裡的空格

 [ -f "somefile" ] #判断文件是否存在
 [ -d "testResults/" ] #判断目录testResults/是否存在
 [ -x "/bin/ls" ] #判断/bin/ls文件是否存在并有可执行权限
 [ -n "$var" ] #判断$var变量是否有值
 [ "$a" = "$b" ] #判断$a和$b是否相等
登入後複製

快速運算元 熟悉C語言可能會喜歡表達式:

  [ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”
登入後複製
這裡

「&&」就是一個快速操作符,如果左邊的表達式為真則執行右邊的語句。當然也可以將上述表達式認為是邏輯運算中的與運算。

同樣或運算

「||」在shell程式設計中也是可用的:

 #!/bin/sh
 mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感觉这里的‘’应该是||
 echo “$mailfolder has mail from:” grep “^From ” $mailfolder
登入後複製

该脚本首先判断mailfolder是否可读。如果可读则打印该文件中的”From” 一行。如果不可读则或操作生效,打印错误信息后脚本退出。这里有个问题,那就是我们必须有两个命令:
◆打印错误信息
◆退出程序
我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。
不用‘与’和‘或’操作符,我们也可以用if表达式作任何事情,但是使用与或操作符会更便利很多。

推荐学习:《linux视频教程

以上是linux 指令 sh 是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode上一步下一步快捷鍵 vscode上一步下一步快捷鍵 Apr 15, 2025 pm 10:51 PM

VS Code 一步/下一步快捷鍵的使用方法:一步(向後):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

See all articles