Shell編程常用命令


shell:簡單、易用、高效,是一個內置的腳本,不需下載

什么是腳本:一條一條命令的堆積

shell 是一個程序,一般都是放在/bin或者/user/bin目錄下,當前 Linux 系統可用的 Shell 都記錄在/etc/shells文件中。/etc/shells是一個純文本文件,你可以在圖形界面下打開它,也可以使用 cat 命令查看它。

在現代的 Linux 上,sh 已經被 bash 代替,/bin/sh往往是指向/bin/bash的符號鏈接。 所謂的符號鏈接就是軟連接。

如果你希望查看當前 Linux 的默認 Shell,那么可以輸出 SHELL 環境變量。

書寫shell腳本

vim 自定義(做到見名知意).sh

#!/bin/bash  指定解釋器類型,如何查看解釋器類型,echo $SHELL

命令

命令

執行shell腳本的三種方法

第一種:正規方式:添加可執行權,我們可以先查看我們編寫的shell腳本,它是沒有執行權的,那么我們要賦予它執行權

chmod +x 腳本

然后執行shell腳本

./ 腳本 

如果不加./直接輸入腳本可不可以執行呢,是不可以的,因為root的路徑沒有寫入$PATH這個里面。

只要執行

vim /etc/profile.d/自定義名字.sh

export PATH=/root:$PATH

而后同步

source /etc/profile.d/自定義.sh

再去直接執行腳本的名字即可成功

第二種

直接用bash解釋器去執行shell腳本。當前終端會新生成一個子 bash 去執行腳本。

第三種

source 腳本

source filename 與 bash filename 及./filename執行腳本的區別

當shell腳本具有可執行權限時,用bash filename與./filename執行腳本是沒有區別得。

./filename

是因為當前目錄沒有在PATH中,所以”.”是用來表示當前目錄的。

source filename

這個命令其實只是簡單地讀取腳本里面的語句依次在當前shell里面執行,沒有建立新的子shell。那么腳本里面所有新建、改變變量的語句都會保存在當前shell里面。

bash filename

重新建立一個子shell,在子shell中執行腳本里面的語句,該子shell繼承父shell的環境變量,但子shell新建的、改變的變量不會被帶回父shell。

什么是子shell:

利用pstree查看。

第一個bash就是父,第二個就是子,第三個也是子,第二對於第三個而言,是第三個的父。

shell編程常用命令

grep:過濾 結合 wc  -c  -w  -l  

表示不區分大小寫,將你填加的選項的大小寫都篩選出來

-i 

比如

echo “this is Is Sm”| grep –i "i"

它將i的大寫小寫都用紅顏色標注了出來

你n后頭跟什么篩選的字符,那么含有此字符的所在行會被曬選出來,並顯示行號。

-n 

比如:我想查看/etc/passwd 這個文件含有數字7的是哪幾行

cat /etc/passwd | grep -n 7 

只打印匹配的內容

-o 

比如:我想查看/etc/passwd 這個文件含有的數字7。

cat /etc/passwd | grep –o 7 

只打印每個文件匹配的行數

 -c 

比如:我想查看/etc/passwd 這個文件含有的數字7的有幾行。

cat /etc/passwd | grep –c 7 

打印匹配的前幾行

-B(before)

打印匹配的后幾行

-A(after)

打印匹配的前后幾行

-C

打印不匹配的行

-v 

打印空白行

^$ 空格

cut:cut 命令從文件的每一行剪切字節、字符和字段並將這些字節、字符和字段寫至標准輸出。

如果不指定 File 參數,cut 命令將讀取標准輸入。必須指定 -b、-c 或 -f 標志之一。

定點分割截取

-c 

比如說

echo "this is ken"| cut -c 4 

那么顯示的結果是s,意思是你使用-c后,后面數字跟幾,它就把這段話中的第幾個字符給你截取輸出到屏幕上來。也可以指定幾到幾,比如第一個到第四個。那就是this。

兩個結合使用,d為選參照物(選定的參照物),f為定點(以參照物開始的第幾列),兩者結合截取輸出

-d  -f 

比如

echo "root/ok/pl/cd/ed"| cut -d "/" -f2 

意思是說,參照物選擇的是/,2是以第一個/開始的第二列

$RANDOM是生成隨機數

結合md5sum加密

$RANDOM | md5sum | cut 1-6

sort:排序

可直接用來排序,它是從小到大排序。按照數字的第一個的大小排序。

sort

根據數值大小進行排序

-n 

從數值的最大到最小排序

-r 

uniq:去除重復的行(相鄰且相同,認定為重復)

在行首用數字表示該行出現了多少次

-c

僅僅顯示那些沒有出現重復過的行

-u

tr:轉換或轉出文件中的字符

指定字符,並刪除

-d 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM