linux 指令碼 學習

2022-08-19 10:18:10 字數 3103 閱讀 1173

一直都在聽他們說,寫個指令碼做什麼什麼事情。對於指令碼,本來就沒有什麼概念,一切從零開始吧!

首先要了解

linux

下指令碼的概念,這裡有說:

shell 

是乙個命令直譯器

.是介於作業系統

kernel 

與使用者之間的乙個絕緣層

.準確地說

,它也是一種強力的計算機語言.乙個

shell 程式,

被稱為乙個指令碼

,是一種很容易使用的工具

,它可以通過將系統呼叫

,公共程式,工具

,和編譯過的二進位制程式粘合在一起來建立應用。

什麼是shell

?就是那個絕緣層啦

~ 使用者和

kernel

打交道的那個介面,通道,路徑

~什麼是指令碼?就是絕緣層下的乙個程式啦

~ 既然是程式就有其語法和編寫的規範等等啦

~它有什麼作用?就是將系統呼叫,公共程式,工具,和編譯過的二進位制程式粘合在一起來建立應用

~ 聽起來似乎很有用,粘合功能很強大( ⊙

o ⊙)!

到此~概念清晰啦

~linux

下sdk

的測試中,我主要進行功能測試,測試的手段也是寫

c**手動執行測試,好像沒有指令碼什麼事,直到我想在開機的時候自己載入兩個驅動程式,本著好學不倦的精神,本來可以手動載入的,但是剛好可以學習一下寫指令碼,以後還有用的著的地方呢,就開始學習啦

~網上搜資料

……向同事請教

……1.

指令碼的語法

頭一次寫指令碼,根本沒見過指令碼是什麼樣的,跑去問

yf,怎麼寫指令碼呢?

yf就開啟乙個她寫的指令碼,給我看,必須要這樣開頭,布拉布拉

~講了一通,我回來了,又在網上搜了篇文章《

linux

指令碼編寫基礎》

,寫了第乙個指令碼

~只有一句話

~echo

在每個指令碼的開頭都使用

"#!",

這意味著告訴你的系統這個檔案的執行需要指定乙個直譯器

.#!實際上是乙個

2 位元組的魔法數字

,這是指定乙個檔案型別的特殊標記

, 換句話說

, 在這種情況下

,指的就是乙個可執行的指令碼(鍵入

man magic 

來獲得關於這個迷人話題的更多詳細資訊).在

#!之後接著是乙個路徑名

.這個路徑名指定了乙個解釋指令碼中命令的程式

,這個程式可以是

shell,

程式語言或者是任意乙個通用程式

.這個指定的程式從頭開始解釋並且執行指令碼中的命令(從

#!行下邊的一行開始

),忽略注釋.如

:1 #!/bin/sh

2 #!/bin/bash

3 #!/usr/bin/perl

4 #!/usr/bin/tcl

5 #!/bin/sed -f

6 #!/usr/awk -f

上邊每乙個指令碼頭的行都指定了乙個不同的命令直譯器

,如果是

/bin/sh,

那麼就是預設

shell(

在linux 

系統中預設是

bash).

使用#!/bin/sh,

在大多數商業發行的

unix 上,

預設是bourne

shell,

這將讓你的指令碼可以正常的執行在非

linux 

機器上,

雖然這將會犧牲

bash 

一些獨特的特徵

.指令碼將與

posix 

的sh 

標準相一致

.退出命令

exit 0

# 退出之前返回

0,返回

0 表示成功

.嘿嘿,有了開頭和結尾,怎麼把那些有用的語句加上去,我想來想去,試了一下,原來是直接把命令敲到指令碼裡就行啦

-_-||

,當然這是最簡單的用法啦,再複雜的我也沒有接觸到~2.

指令碼如何執行

編寫完指令碼之後

,就可以使用

sh scriptname

或者bash scriptname 

來呼叫它

.(不推薦使用

sh 因為這禁用了指令碼從

stdin 

中讀資料的功能

.)更方便的方法是讓指令碼本身就具有可執行許可權,通過

chmod 

命令可以修改.比如

:chmod 555 scriptname (

允許任何人都具有

可讀和執行許可權)或

:chmod +rx scriptname (

允許任何人都具有

可讀和執行許可權

)chmod u+rx scriptname (

只給指令碼的所有者

可讀和執行許可權)3.

指令碼如何開機執行

這裡主要講兩種方法:

a.開啟

/etc/rc.d/rc.local

,把開機要執行的命令加進去,就可以達到開機執行某個命令的目的啦

~這個方法我雖然沒有試過,但看

rc5.d

的最後乙個鏈結

s99local

,應該沒有問題;

b.把寫好的指令碼放到

/etc/rc.d/init.d

路徑下,在

rc5.d

中建立乙個鏈結,同樣可以達到開機執行的目的,比較第一種方法,這種方法就是更獨立,也可以自由選擇開機執行的次序。

大概就是以上幾點了,當然期間還遇到了一些問題,幸有高人相助,我在開機時載入驅動的目標終於達到啦

~這就是我的

linux

指令碼學習之路,回頭想想,學習時兩點最重要:

1.有高人示範指點,有些東西,看別人做一遍,勝過自己摸索很久,這裡要謝謝yf和

yj~2.

起初在網上蒐集資料,有點大海撈針,不得要點,還是老老實實看本書,學的更快,謝謝

yj共享的書,真的覺得很好,高階

bash

指令碼程式設計指南,想學指令碼的就先別去大海浬撈針了,從這本書入門,再去大海浬撈金吧

linux指令碼學習

最近又重新撿起了以前放在一邊的linux指令碼了,呵呵,最開始學習linux指令碼編寫是在搭建linux下的qmail郵件伺服器的時候。那時候由於qmail要安裝很多軟體包,所以就把命令整理成乙個指令碼來一次批處理執行,那時也學到了linux下的shell程式設計。指令碼其實多半就是終端命令的乙個集...

linux指令碼學習

進入當前指令碼所在目錄 其他神馬方法都是浮雲 sh dir x echo 0 grep if test then sh dir dirname 0 else sh dir dirname pwd 0 ficd sh dir 指令碼暫停 bash c read n1 p press any key t...

linux指令碼學習

進入當前指令碼所在目錄 對於軟鏈結不行 curr dir cd dirname 0 pwd cd curr dir for迴圈 for i 1 i 10 i do echo i sleep 1 done 指令碼暫停 bash c read n1 p press any key to continue...