亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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 #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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国语自产精品视频在线看| 51精品国产黑色丝袜高跟鞋| 亚洲香蕉伊综合在人在线视看| 成人午夜在线观看| 欧洲成人免费视频| 久久精品国产成人精品| 91免费福利视频| 日韩免费av片在线观看| 亚洲女同性videos| 日韩av在线天堂网| 久久精品亚洲94久久精品| 热99在线视频| 亚洲va欧美va国产综合久久| 日本高清久久天堂| 亚洲欧美日韩中文在线制服| 日韩精品高清视频| 欧美电影免费播放| 亚洲视频精品在线| 一区二区在线视频播放| 伦伦影院午夜日韩欧美限制| 美女扒开尿口让男人操亚洲视频网站| 操人视频在线观看欧美| 一区二区亚洲欧洲国产日韩| 91视频免费网站| 亚洲男人天堂视频| 深夜精品寂寞黄网站在线观看| 欧美福利视频在线观看| 98视频在线噜噜噜国产| 日韩精品免费电影| 91免费看片在线| 日韩女优在线播放| 日韩在线免费观看视频| 亚洲2020天天堂在线观看| 久久精品国产视频| 国产午夜精品视频免费不卡69堂| 久久精品国产清自在天天线| 国产mv免费观看入口亚洲| 亚洲欧美综合精品久久成人| 国产精品免费网站| 欧美黄网免费在线观看| 91精品在线一区| 国产精品久久久久av免费| 91精品国产高清自在线看超| 狠狠色狠狠色综合日日小说| 久久亚洲综合国产精品99麻豆精品福利| 成人黄色av免费在线观看| 国产亚洲欧美日韩一区二区| 日韩av免费在线| 国产精品6699| 久久久久久亚洲精品中文字幕| 亚洲最新在线视频| 亚洲久久久久久久久久久| 日韩一区二区精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 欧美性xxxxx极品娇小| 4438全国亚洲精品在线观看视频| 91在线视频导航| 欧美在线不卡区| 国产91成人video| 欧美一级视频免费在线观看| 久久免费少妇高潮久久精品99| 亚洲男人av在线| 亚洲人午夜精品| 欧美日韩成人免费| 日韩精品在线观| 欧美日韩中文字幕在线| 丝袜美腿精品国产二区| 97视频在线观看亚洲| 亚洲区一区二区| 国产精品久久久久久久av电影| 色偷偷综合社区| 啊v视频在线一区二区三区| 欧美极品美女视频网站在线观看免费| 久久99久久久久久久噜噜| 亚洲精品一区av在线播放| 久久中文字幕在线视频| 成人情趣片在线观看免费| 91色中文字幕| 国产极品精品在线观看| 精品久久久久久久久久| 欧美日韩国产123| 日韩欧美国产黄色| 日韩中文综合网| 精品国产视频在线| 欧美日韩精品国产| 日韩电影免费观看在线| 久久综合伊人77777| 亚洲va欧美va在线观看| 96精品视频在线| 岛国视频午夜一区免费在线观看| 第一福利永久视频精品| 欧美激情啊啊啊| 国产一区二区三区在线看| 亚洲精品视频中文字幕| 亚洲综合中文字幕在线观看| 亚洲国产精品va在线看黑人动漫| 精品久久久91| 亚洲综合在线小说| 国产精品丝袜白浆摸在线| 欧洲成人免费aa| 成人97在线观看视频| 久久久久中文字幕| 欧美巨猛xxxx猛交黑人97人| 亚洲xxxx在线| 日韩成人xxxx| 亚洲wwwav| 人妖精品videosex性欧美| 欧美激情一级欧美精品| 亚洲精品自拍视频| 久久久久久久久久久国产| 成人高h视频在线| 久久av资源网站| 亚洲精品国产综合久久| 久久精品国产亚洲精品| 日韩一级裸体免费视频| 精品一区精品二区| 揄拍成人国产精品视频| 操日韩av在线电影| 欧美激情极品视频| 亚洲黄色有码视频| 91av在线不卡| 91av福利视频| 午夜免费久久久久| 日韩国产精品一区| 国内精品一区二区三区| 日日狠狠久久偷偷四色综合免费| 亚洲第一精品夜夜躁人人爽| 日韩大片免费观看视频播放| 91精品国产91久久久久| 日韩综合视频在线观看| 国产福利精品在线| 亚洲精品视频免费| 57pao国产精品一区| 国产精品一区专区欧美日韩| 国产91精品久久久久久| 精品少妇一区二区30p| 久久久久久国产| 久久不射热爱视频精品| 国产精品久久久久免费a∨大胸| 国产精品久久999| 国产成人精品久久亚洲高清不卡| 亚洲sss综合天堂久久| 555www成人网| 久久久久久久久久久亚洲| 亚洲欧美成人精品| 国产精品视频一区国模私拍| 亚洲伊人成综合成人网| 97久久超碰福利国产精品…| 欧美激情视频一区| 成人国产精品一区| 欧美在线欧美在线| 欧美极品少妇xxxxⅹ喷水| 日韩亚洲国产中文字幕| 亚洲欧美日韩国产精品| 菠萝蜜影院一区二区免费| 精品一区二区三区三区| 亚洲人成电影网站色xx| 日韩精品在线观看一区二区| 97视频免费看| 亚洲加勒比久久88色综合| 久久男人的天堂| 中文字幕日韩精品在线| 色妞久久福利网| 亚洲精品欧美一区二区三区|