shell腳本執行方式,更方便更快捷。

在進行linux測試時編寫腳本是必不可少的。最近經常使用Linux,感覺太頻繁地敲擊鍵盤有些累了,于是想到了Shell腳本。可以把太多的命令寫成一個腳本,這樣每次執行一遍? shell文件,就可以省去了敲擊鍵盤的時間。于是在網上搜了一些有關Linux下腳本編程的內容。

圖為運行參考示例:

可以將運行代碼一行行寫在配置文件腳本中

更改其屬性?

?

運行shell腳本程序

?

?

Shell命令和流程控制

在shell腳本中可以使用三類命令:

1)Unix 命令:

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

常用命令語法及功能

  • echo "some text": 將文字內容打印在屏幕上
  • ls: 文件列表
  • wc –l filewc -w filewc -c file:
  • 計算文件行數計算文件中的單詞數計算文件中的字符數
  • cp sourcefile destfile: 文件拷貝
  • mv oldname newname : 重命名文件或移動文件
  • rm file: 刪除文件
  • grep ''pattern'' file: 在文件內搜索字符串比如:grep
  • ''searchstring'' file.txt
  • cut -b colnum file:指定欲顯示的文件內容范圍,并將它們輸出到標準輸出設備比如:輸出每行第5個到第9個字符cut -b5-9 file.txt千萬不要和cat命令混淆,這是兩個完全不同的命令
  • cat file.txt: 輸出文件內容到標準輸出設備(屏幕)上
  • file somefile: 得到文件類型
  • read var: 提示用戶輸入,并將輸入賦值給變量
  • sort file.txt: 對file.txt文件中的行進行排序
  • uniq: 刪除文本文件中出現的行列比如: sort file.txt | uniq
  • expr: 進行數學運算Example: add 2 and 3expr 2 "+" 3
  • find: 搜索文件比如:根據文件名搜索find . -name filename -print
  • tee: 將數據輸出到標準輸出設備(屏幕) 和文件比如:somecommand | tee? outfile
  • basename file: 返回不包含路徑的文件名比如: basename /bin/tux將返回 tux
  • dirname file: 返回文件所在路徑比如:dirname /bin/tux將返回/bin
  • head file: 打印文本文件開頭幾行
  • tail file : 打印文本文件末尾幾行

sed: Sed是一個基本的查找替換程序。可以從標準輸入(比如命令管道)讀入文本,并將結果輸出到標準輸出(屏幕)。該命令采用正則表達式(見參考)進行搜索。不要和shell中的通配符相混淆。比如:將linuxfocus 替換為 LinuxFocus :cat text.file | sed ''s/linuxfocus/LinuxFocus/'' > newtext.fileawk: awk

用來從文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat?? file.txt | awk -F, ''{print $1 "," $3? }''這里我們使用,作為字段分割符,同時打印第一個和第三個字段。如果該文件內容如下: AdamBor, 34, IndiaKerry Miller, 22, USA命令輸出結果為:AdamBor, IndiaKerry Miller, USA

2) 概念: 管道, 重定向和 backtick

這些不是系統命令,但是他們真的很重要。管道 (|) 將一個命令的輸出作為另外一個命令的輸入。

grep "hello" file.txt | wc -l

在file.txt中搜索包含有”hello”的行并計算其行數。

在這里grep命令的輸出作為wc命令的輸入。當然您可以使用多個命令。

重定向:將命令的結果輸出到文件,而不是標準輸出(屏幕)。

>? 寫入文件并覆蓋舊文件

>> 加到文件的尾部,保留舊文件內容。

反短斜線

使用反短斜線可以將一個命令的輸出作為另外一個命令的一個命令行參數。

命令: find . -mtime -1 -type f -print 用來查找過去24小時(-mtime –2則表示過去48小時)內修改過的文件。如果您想將所有查找到的文件打一個包,則可以使用以下腳本:

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

3) 流程控制

"if" 表達式 如果條件為真則執行then后面的部分:

?if ....; then
....
elif ....; then
....
?else
?....
?fi

大多數情況下,可以使用測試命令來對條件進行測試。比如可以比較字符串、判斷文件是否存在及是否可讀等等…通常用" [ ] "來表示條件測試。注意這里的空格很重要。要確保方括號的空格。

  • ?[ -f "somefile" ] :判斷是否是一個文件
  • ?[ -x "/bin/ls" ] :判斷/bin/ls是否存在并有可執行權限
  • ?[ -n "$var" ] :判斷$var變量是否有值
  • ?[ "$a" = "$b" ] :判斷$a和$b是否相等

5. 執行腳本 Linux下的sh文件默認是有執行權限的。我們可以用命令:ls -l file_name來查看用戶對文件的權限。如果沒有執行權限,可以執行以下命令添加:chmod +x file_name?。然后可以通過運行:sh XX.sh這樣的命令來運行腳本。當然不同的系統可能不完全相同,需要根據實際情況來。例如有的Linux下是./XX.sh就可以運行。

概括地來說,shell對shell腳本的調用可以采用3種方式:

(1)一種是將文件名作為shell命令的參數,其調用格式為:

$ Bash script_file

當要被執行的腳本文件沒有可執行權限時,只能使用這種調用方式。

(2)另一種調用的方法是先將腳本文件的訪問權限更改為可執行,以便該文件可以作為執行文件調用。

具體的方法是:$chmod +x? script_file

$PATH=$PATH:$PWD
$script_file

(3)當執行一個腳本文件時,Shell就產生了一個Shell(即一個子進程)去執行文件中的命令。因此,腳本文件的變量值不能傳遞到當期Shell(即父進程)。為了使腳本文件中的變量值傳遞到當前Shell,必須在命令文件名前面加“.”。即:

$./script_file

“.”命令的功能是在當前shell中執行腳本文件中的命令,而不是產生一個子shell執行命令文件中的命令。

?

更多參考:

https://www.jb51.net/article/156952.htm

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456758.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

行為科學統計第1章

行為科學統計 Statistics for the Behavioral Sciences 一周只學習一次不如每周學習比較多的幾次高效噢~[一開始,你并不知道這是一個會寫著畫風突變的讀書筆記?…] 第I部分 簡述與描述性統計 第1章 統計學入門 這本書我就是覺得這…

閉包---在函數內部再定義一個函數

什么是閉包 # 定義一個函數 def test(number):# 在函數內部再定義一個函數,并且這個函數用到了外邊函數的變量,那么將這個函數以及用到的一些變量稱之為閉包def test_in(number_in):print("in test_in 函數, number_in is %d" % number_in)re…

慕課網_《Java實現對稱加密》學習總結

時間:2017年4月11日星期二說明:本文部分內容均來自慕課網。慕課網:http://www.imooc.com教學示例源碼:https://github.com/zccodere/s...個人學習源碼:https://github.com/zccodere/s... 第一章:對稱加密算…

大數據之MapReduce詳解(MR的運行機制及配合WordCount實例來說明運行機制)

目錄前言:1、MapReduce原理2、mapreduce實踐(WordCount實例) 目錄 今天先總體說下MapReduce的相關知識,后續將會詳細說明對應的shuffle、mr與yarn的聯系、以及mr的join操作的等知識。以下內容全是個人學習后的見解,如…

生動形象的理解什么是裝飾器!

裝飾器 裝飾器是程序開發中經常會用到的一個功能,用好了裝飾器,開發效率如虎添翼,所以這也是Python面試中必問的問題,但對于好多初次接觸這個知識的人來講,這個功能有點繞,自學時直接繞過去了,…

PLSQL 申明和游標

--從鍵盤輸入一個數 accept b prompt 請輸入一個大于零的數字; declareanum number : &b; beginwhile anum>0loopdbms_output.put_line(anum);anum:anum-1;end loop; end;declarev_num number; begin -- 從stsu表中選出id最大的值,并根據該值打印次數select …

20155222 2016-2017-2 《Java程序設計》第8周學習總結

20155222 2016-2017-2 《Java程序設計》第8周學習總結 教材學習內容總結 Java NIO(New IO)是一個可以替代標準Java IO API的IO API(從Java 1.4開始),Java NIO提供了與標準IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和緩沖區&…

BAT經典面試題精簡版(基礎知識附答案)

文章目錄目錄J2SE基礎JVM操作系統TCP/IP數據結構與算法目錄 J2SE基礎 九種基本數據類型的大小,以及他們的封裝類。 原始類型封裝類 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble Switch能否用string做參數&…

使用2to3.py 轉換 python2.x 代碼 到python3

1.使用Windows 命令提示符(cmd)cd到2to3.py 腳本所在位置,如下圖: 找不到的2 to 3.py的去 pycharm中雙擊shift搜索一下 2.緊接著運行 2to3.py 腳本(可省略) 3.執行你想要轉換的文件 python 2to3.py -w H:…

iis6.0與asp.net的運行原理

這幾天上網翻閱了不少前輩們的關于iis和asp.net運行原理的博客,學的有點零零散散,花了好長時間做了一個小結(雖然文字不多,但也花了不少時間呢),鄙人不才,難免有理解不道的地方,還望…

元類--用不上的先了解

元類 1. 類也是對象 在大多數編程語言中,類就是一組用來描述如何生成一個對象的代碼段。在Python中這一點仍然成立: >>> class ObjectCreator(object): … pass … >>> my_object ObjectCreator() >>> print(my_ob…

Android學習筆記進階十之Matrix錯切變換

剛開始我也不懂啥叫錯切變換,一看效果圖你就恍然大悟。 對圖像的錯切變換做個總結: x x0 b*y0; y d*x0 y0; 與之對應的方法是: [java] view plaincopyMatrix matrix new Matrix(); matrix.setSkew(0.0f, 0.5f);

SQL數據庫實戰(含建表數據和查詢案例)

Oracle數據庫安裝的時候會自帶一個練習用數據庫(其中包含employee表,后來版本中此表改名為emp); 首先在安裝過程中應該有個選項“是否安裝實例表”(完全安裝模式下默認是選擇的),需要選擇才有此…

Django中的核心思想ORM---元類實現ORM

1. ORM是什么 ORM 是 python編程語言后端web框架 Django的核心思想,“Object Relational Mapping”,即對象-關系映射,簡稱ORM。 一個句話理解就是:創建一個實例對象,用創建它的類名當做數據表名,用創建它…

移動互聯網廣告 - 第十更 - 廣告投放運營 DashBoard - 2016/12/10

廣告投放運營 DashBoard設計 移動互聯網互聯網廣告投放,數據監控DashBoard,基礎樣例示意,下圖僅供參考(來自于互聯網)。 轉載于:https://www.cnblogs.com/pythonMLer/p/6154700.html

微信小程序中使用emoji表情相關說明

2019獨角獸企業重金招聘Python工程師標準>>> 本帖將聚合一些跟emoji表情有關的知識;相關文章:“i愛記賬” 小程序后端開發小結 第7條經驗前端傳過來的昵稱和備注信息一定要經過嚴格的正則表達式過濾,放置出現XSS等攻擊&#xff0c…

java.lang.IllegalArgumentException: Does not contain a valid host:port authority: ignorethis

執行Hive語句運行MapReduce程序時突然出現這樣的異常: Total MapReduce jobs 1 Launching Job 1 out of 1 Number of reduce tasks not specified. Estimated from input data size: 1 In order to change the average load for a reducer (in bytes):set hive.ex…

Oracle基礎語句

1、創建表create table IT_EMPLOYEES(ENPLOYEES_ID NUMBER(6) NOT NULL UNIQUE,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) NOT NULL,EMAIL VARCHAR2(25),PHONE_NUMBER VARCHAR2(20),JOB_ID VARCHAR2(10),SALARY NUMBER(8,2),MANAGER_ID NUMBER(6));2、--創建索引&#x…

Linux三劍客之grep 與 egrep

grep:Linux上文本處理三劍客1 grep:文本過濾(模式:pattern)工具; *(grep, egrep, fgrep) 2 sed:stream editor,文本編輯工具; 3 awk:Linux上的實現gawk,文本報…

WSGI直觀形象的了解一下

1. 瀏覽器請求動態頁面過程 2. WSGI 怎么在你剛建立的Web服務器上運行一個Django應用和Flask應用,如何不做任何改變而適應不同的web架構呢? 在以前,選擇 Python web 架構會受制于可用的web服務器,反之亦然。如果架構和服務器可以…