国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

shell編程入門

2024-06-28 13:19:05
字體:
來源:轉載
供稿:網友
shell編程入門

背景知識

  Shell 是用戶與內核進行交互操作的一種接口,是 linux 最重要的軟件之一。目前最流行的 Shell 稱為 bash Shell,bash Shell 腳本編程以其簡潔、高效而著稱,多年來成為 Linux 程序員和系統管理員解決實際問題的利器。Shell 是操作系統的最外層。Shell 合并編程語言以控制進程和文件,以及啟動和控制其它程序。Shell 通過提示您輸入,向操作系統解釋該輸入,然后處理來自操作系統的任何結果輸出來管理您與操作系統之間的交互。Shell 提供了與操作系統通信的方式。此通信以交互的方式(來自鍵盤的輸入立即操作)或作為一個 Shell 腳本執行。Shell 腳本是Shell 和操作系統命令的序列,它存儲在文件中。當登錄到系統中時,系統定位要執行的 Shell 的名稱。在它執行之后,Shell 顯示一個命令提示符。普通用戶的此提示符通常是一個 $(美元符)。當提示符下輸入命令并按下 Enter 鍵時,Shell 對命令進行求值,并嘗試執行它。取決于命令說明,Shell 將命令輸出寫到屏幕或重定向到輸出。然后它返回命令提示符,并等待您輸入另一個命令。命令行是輸入所在的行,它包含 Shell 提示符。每行的基本格式如下:

  $ 命令 參數(一個或多個)

Shell 視命令行的第一個字(直到第一個空格)為命令,所有后繼字為自變量。

在此推薦大家使用zsh,具體下載安裝版本請參考http://macshuo.com/?p=676

1:判斷文件是否為塊設備或字符設備文件,如果是將其拷貝到/dev 目錄下

  1、read 命令從鍵盤或文件中讀入信息,將其賦給變量(一個或多個),直到遇到回車符或文件結束符為止?! ?、I/O 設備大致分為兩類:塊設備和字符設備。塊設備將信息存儲在固定大小的塊中,每個塊都有自己的地址。數據塊的大小通常在 512字節到 32768 字節之間。塊設備的基本特征是每個塊都能獨立于其它塊而讀寫。磁盤是最常見的塊設備。

#!/bin/bashread -p "please input a filename:" filenameif test -b "$filename" -o -c "$filename";then    echo "$filename is a device file" && cp $filename /develse    echo "$filename is not a device file"fi 

2:模擬 Linux 登陸 Shell

#!/bin/bashx=wj       #這是用戶名y=1111   #這是密碼read -p "please input yourname:" yournameread -p "please input yourkey:"  yourkeyif test "$x" = "$yourname" -a "$y" = "$yourkey" ;then bash    #注意test后面比較大小的空格不能省else   echo"please try again" fi

3:從鍵盤讀取兩個數,并比較兩個數大小,并打印結果

#!/bin/bashread -p "please input num1:" num1read -p "please input num2:" num2if test $num1 = $num2 ;then   echo "num1=num2"elif test $num1 -gt $num2 ;then   echo "num1>num2"else test $num1 -lt $num2   echo "num1<num2"fi

4:查找/root/目錄下是否存在指定文件

#!/bin/bashcd /rootread -p "please input filename:" filenameif test -e $filename;then    echo "$filename is exist"else    echo "$filename is not exist"fi

5:刪除當前目錄下大小為 0 的文件

#/bin/bashfor filename in `ls`  do  if test -d $filename;then   b=1 else   a=$(ls -l $filename | awk '{ PRint $5 }')   if test $a -eq 0;then     rm $filename   fi  fidone

6:查找最大文件

#!/bin/basha=0for name in *do   if test -d $name;then     c=1   else     b=$(ls -l $name | awk '{print $5}')        if test $b -ge $a;then       a=$b          namemax=$name       fi    fidoneecho "the max file is $namemax"

7:打印當前用戶(不用 whoami)

#!/bin/bashecho "Current User is :"echo $(who |  sed -n '1p' | awk '{print $1}')

8:查找當前目錄中所有大于 50k 的文件,把這些文件名寫到一個文本文件中,并統計其個數

wc 命令的功能為統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出

#!/bin/bashfind ./ -size +50k > toingji.txt cat tongji.txt |wc -l   

9:一個函數,利用 shift 計算所有參數乘積,假設參數均為整數

1、expr 命令為 Linux 中的命令,一般用于整數值計算,但也可用于字符串操作。

2、對于某個命令行參數,其參數個數可以不固定,但是可以通過$*或$@進行循環操作。若用戶要求 Shell 在不知道變量個數的情況下,還能逐個處理參數,也就是在$1 之后是$2,$2 之后是$3。在未運行shift 命令之前$1 是可用的,當使用 shift 命令之后,原來的$2 會變成$1,并且原有的$1 變得不可用,通過$#命令獲得的參數個數也會少1

3、shift:用于左移命令行參數

#!/bin/bashresult=1# $#表示參數個數while test $# -gt 0do     result=`expr $1 /* $result`     shiftdoneecho "the result is $result"

10:測試一個文件是否已經被排序過

#!/bin/bashread -p "please input your filename:" filesort -C $file# $?表示執行上一個指令的返回值 (顯示最后命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤)a=$? if test $a -eq 0 ;then   echo "$file is youxu" else   echo "$file is wuxu" fi

11:判斷用戶是否在運行

#!/bin/basha=$(ps | grep "$$" | awk '{print $2}')b=$( who| grep "$a" | awk '{print $1}')read -p "please input a username:" usernameif [ "$b" = "$username" ];then    echo "the ueser is running"else    echo "the ueser is not running"fi

12:在當前目錄下交互式創建文件夾(文件夾已存在則打印提示輸入新名字)

#!/bin/bashread -p "please input dirname:" fileif test -d $file;then    echo dir is exist please try againelse    read -p "create dir now?[y/n] " sel    if test "$sel" = "y";then        mkdir $file    elif test "$sel" = "n";then        bash    else        echo "Your input is wrong"    fifi

13:獲取本機 ip 地址

#!/bin/basha=$(ifconfig | grep "inet 地址:" |  awk '{print $2}' | sed 's/地址://g' |sed -n '1p' )echo "ip is $a"

14:打印無密碼用戶

#!/bin/bashecho "no passwd user are:"a=$(sudo cat /etc/shadow | grep "*" | awk 'BEGIN { FS=":" }{print $1}')#在處理輸入文件以前,域分隔符(FS)被設為冒號echo $a

15:寫一個腳本,利用循環計算 n的階乘

#!/bin/bashread -p "please input n:" nsum=1for a in `seq 1 $n`do       sum=`expr $sum /* $a`doneecho "n! = $sum"

16:利用 case 語句測試輸入字符是否是:小寫/大寫/數字/其他

#!/bin/bashread -p "please input something:" Keycase $Key in        [[:lower:]]) echo "It is lowercase";;        [[:upper:]]) echo "It is uppercase";;        [0-9]) echo "It is number";;esac

17:測試文件是否包含特定的文本內容

#!/bin/bashread -p "enter a string: " stringread -p "enter a filename: " filenamegrep -q "$string" $filename #在file中查找str(不輸出找到的內容),成功返回0if test $? -eq 0;then    echo "The text exists in the file"else    echo "Text does not exist in the file"fi

18:檢測給定的單詞是否為詞典中的單詞

#!/bin/bashread -p "enter a string:" string#/usr/share/dict/american-english是Ubuntu 系統中英式英語常用單詞列表的字典文件
grep -q "$string" /usr/share/dict/american-englishif test $? -eq 0;then    echo "match directionary"else    echo "not match directionary"fi


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀什市| 四会市| 子洲县| 无棣县| 巫山县| 临漳县| 台中市| 乌拉特前旗| 英吉沙县| 东乡| 大竹县| 沙洋县| 闵行区| 阿图什市| 荆州市| 敖汉旗| 白玉县| 溧水县| 东至县| 合江县| 都安| 临汾市| 濉溪县| 剑河县| 甘肃省| 集安市| 长乐市| 开原市| 公主岭市| 年辖:市辖区| 金门县| 新疆| 武义县| 文登市| 睢宁县| 化州市| 长武县| 宜兰县| 陕西省| 威远县| 龙江县|