最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell腳本學習指南[一](Arnold Robbins & Nelson H.F. Beebe著)

 更新時間:2014年02月27日 14:44:22   投稿:mdxy-dxy  
這篇文章主要介紹了shell腳本學習指南[一]Arnold Robbins & Nelson H.F. Beebe著,需要的朋友可以參考下

第一章略過,下邊從第二章開始,大家懂得。
ps:這里發(fā)生了一件非常的事情,非常!已經碼文章碼到第四章了,悲劇的按錯瀏覽器按鈕刷新掉,怎么也找不回來之前寫的東西了。想死!算了,復習一邊吧。以下全文均屬自己總結書寫,有錯誤的地方也未必是書中錯誤(當然也有可能是書中錯誤,但是我都會親自操作滴),可能是我寫錯,請大牛指正。

第二章入門

因為第二遍寫,就簡單快速的寫吧,盡量寫清楚。大家都知道的終端命令cd啊 chmod啊 who啊之類的組合在一起加上一些控制語句,變量什么的就成shell編程了,給出一個簡單例子:

復制代碼 代碼如下:

$ cat > nusers
#! /bin/sh
who | wc -l
^D
$ chmod +x nusers
$ ./nusers

上邊就是nusers文件就是一個完整的shell腳本了,功能是查詢多少用戶登錄系統(tǒng)。cat >nusers 重定向到nusers文件輸入數(shù)據(jù)流, #! 這句 ,#號之后都是注釋,但是#!是會被解釋器讀取的,因為這句告訴了系統(tǒng)應該使用什么解釋器,這里就是 /bin/sh 。^D是按ctrl+d 結束輸入,chmod增加可執(zhí)行權限,最后就是運行自己寫的腳本。這樣就是一個完整的編寫到運行使用的過程了。你入門了木有?(額~如果木有的話,那換個文章再看看吧)

現(xiàn)在我們來改進一下,為了讓我們執(zhí)行自己的程序更像系統(tǒng)內建命令那樣,我們可以修改系統(tǒng)環(huán)境變量PATH,修改過windows的童鞋都知道,linux也一樣,是為了讓系統(tǒng)搜索命令的時候有個搜索路徑依據(jù)。你可以輸出一下看看先:echo $PATH .結果就是輸出一大串以:為分隔符的字符串,我們給他重新賦值,假設我們編寫的shell代碼存在用戶目錄下的myshell文件夾內,那么我們就這樣賦值: PATH=$PATH:$HOME/myshell 這樣我們就可以直接運行nusers命令獲得用戶登錄數(shù)目的信息了。

這里學習兩個命令,不好意思你想錯了,不是who 和 wc,而是從最基本的輸出hello,world開始嘛,所以先學echo和printf,前者十分簡單,會輸出所有參數(shù),如:echo hello,world 。會c語言的朋友可以開心了,因為你不用再學習printf了,機會完全一樣,比如:printf "hello,%s\n",world ,這樣就會輸出hello,world然后換行(不會有不會c的童鞋吧?)。

另外再說一下之前出現(xiàn)的 > | < (不是表情 - -! (這個是)),這是基本的I/O重定向了,用過windows里cmd命令并且知道的也可以跳過了。 > 輸出重定向 。 <輸入重定向 。 | 管道,會把符號前的輸出信息當作符號后的輸入信息。另外還有>> << ,與單個的區(qū)別就是單個的會覆蓋原本存在的文件,沒有就創(chuàng)建。雙個的不會覆蓋,只在已有的文件后邊增添。

為了練習這個重定向,學習一個tr命令,主要用于轉換刪除濃縮字符。
語法:tr [options] source-char-list replace-char-list
選項:-c 取source反義,即tr要轉換的字符未列在source里,通常-d -s配合使用
-d 自標準輸入刪除source-char-list里所列的字符,而非轉換。
-s 濃縮重復的字符。
簡易配合重定向練習練習。看看怎么濃縮的,怎么替換的。

這里介紹兩個特殊文件:/dev/null 和 /dev/tty,前者傳送到此文件的數(shù)據(jù)都會被系統(tǒng)丟棄,類似垃圾桶。從中讀取數(shù)據(jù)則只能讀到null。另一個/dev/tty,當程序打開此文件時,linux會自動將它重定向到一個終端(控制臺或串行口或一個網絡與窗口登錄的偽終端等)再與程序結合。這在程序必須讀取人工輸入時特別有用,也可以用來產生錯誤信息。例:

復制代碼 代碼如下:

printf "Enter new password:" #提示輸入
stty -echo #關閉自動打印輸入字符功能
read pass < /dev/tty #讀取密碼
printf :Enter again:" #再次提示輸入
read pass2 < /dev/tty #再次讀取
stty echo #打開自動打印輸入字符功能

stty(set tty)命令用來控制終端(或窗口)的各種設置。

現(xiàn)在已經能夠寫自己的shell腳本,也能夠像系統(tǒng)內建命令一樣調用了,但是還缺點什么,對,就是傳參數(shù),給自己的腳本程序傳遞參數(shù),使有更豐富的功能實現(xiàn)。

腳本里參數(shù)獲取很簡單,第一個參數(shù)就是$1,第二個$2,但是超過9的都用大括號把數(shù)字括起來,如${10}。下邊寫個完整的腳本程序:

復制代碼 代碼如下:

$ cat > finduser
#! /bin/sh
#finduser ---查看指定用戶是否登錄
who | grep $1
^D
$ chmod +x finduser
$ finduser root

前提是前邊你也該過環(huán)境變量PATH。(不知道怎么改請往前找)

我們已經能夠寫一些腳本的,但是難免會出錯,不能達到預期,我們需要像c++那樣debug,可以直接在命令行里執(zhí)行sh -x finduser 來打開執(zhí)行跟蹤功能。
也可以在腳本里用set -x命令將執(zhí)行跟蹤的功能打開,然后再用set +x來關閉該功能。

個人原創(chuàng),轉載請注明:三江小渡

相關文章

  • linux定時任務出現(xiàn)command not found解決辦法

    linux定時任務出現(xiàn)command not found解決辦法

    這篇文章主要介紹了 linux定時任務出現(xiàn)command not found解決辦法的相關資料,需要的朋友可以參考下
    2017-05-05
  • shell 讀取變量腳本編程解析

    shell 讀取變量腳本編程解析

    這篇文章主要為大家介紹了shell 讀取變量腳本編程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 詳解NC反彈shell的幾種方法

    詳解NC反彈shell的幾種方法

    這篇文章主要介紹了詳解NC反彈shell的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • linux?shell字符串截取的詳細總結(實用!)

    linux?shell字符串截取的詳細總結(實用!)

    在開發(fā)的時候經常會自行寫一些小的腳本,其中就用到截取字符串的操作,這篇文章主要給大家介紹了關于linux?shell字符串截取的詳細方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 淺談Linux中的mkdir -p及基礎用法

    淺談Linux中的mkdir -p及基礎用法

    mkdir是一個用于創(chuàng)建目錄(目錄樹)的 Unix 和 Linux 命令, -p 選項允許創(chuàng)建一個目錄和它不存在的父目錄,這篇文章主要介紹了Linux中的mkdir -p,需要的朋友可以參考下
    2023-09-09
  • Shell腳本實現(xiàn)從文件夾中遞歸復制文件

    Shell腳本實現(xiàn)從文件夾中遞歸復制文件

    這篇文章主要介紹了Shell腳本實現(xiàn)從文件夾中遞歸復制文件,本文腳本實現(xiàn)從十層左右的文件夾中復制所有文件到一目錄中,需要的朋友可以參考下
    2015-02-02
  • 簡單的Linux查找后門思路和shell腳本分享

    簡單的Linux查找后門思路和shell腳本分享

    這篇文章主要介紹了簡單的Linux查找后門思路和shell腳本分享,本文的方法相對簡單,提了一個思路和簡單的Shell實現(xiàn)腳本,需要的朋友可以參考下
    2014-06-06
  • Linux 深入理解進程權限

    Linux 深入理解進程權限

    這篇文章主要介紹了Linux 深入理解進程權限的相關資料,關于文件權限,大部分人接觸比較多,也比較熟悉了解.但是對進程權限一般知之甚少。這里就總結一下linux系統(tǒng)下進程權限問題和現(xiàn)象,需要的朋友可以參考下
    2016-11-11
  • Shell特殊變量(Shell $#、$*、$@、$?、$$)的使用

    Shell特殊變量(Shell $#、$*、$@、$?、$$)的使用

    這篇文章主要介紹了Shell特殊變量(Shell $#、$*、$@、$?、$$)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 用shell腳本在mysql表中批量插入數(shù)據(jù)的方法

    用shell腳本在mysql表中批量插入數(shù)據(jù)的方法

    這篇文章主要介紹了用shell腳本在mysql表中批量插入數(shù)據(jù)的方法,需要的朋友可以參考下
    2014-03-03

最新評論

托克逊县| 淳安县| 枝江市| 闸北区| 河池市| 西城区| 平度市| 旬阳县| 赣州市| 沂源县| 安国市| 潼关县| 巧家县| 大关县| 新蔡县| 龙岩市| 无极县| 城市| 札达县| 金塔县| 武隆县| 泽库县| 鹤峰县| 虎林市| 通化市| 文昌市| 南江县| 金山区| 麻江县| 黎川县| 河间市| 鄂州市| 鸡泽县| 盐源县| 秦皇岛市| 开平市| 民乐县| 兴安盟| 定边县| 策勒县| 怀仁县|