linuxtcl腳本
1、首先電腦中需要安裝的是git的應用程序,安裝完成之後,可以在開始菜單進行查看。
2、並需要配置好git的bin,配置環境變數,把bin的絕對路徑復制到環境變數中path。
3、配置git的環境變數之後,在任意文件進行創建一個為mkdir.sh,文件名可以是隨意的結尾需要為.sh。
4、然後在sh的文件中進行輸入#!/bin/shtoucha.txtsleep10echo"testtesttesttest">>a.txt
創建一個為txt文件後testtesttesttest寫入到txt文件中。
5、然後進行雙擊.sh的文件,會彈出git的命令窗口,根據代碼的執行的時間窗口顯示多久。
6、然後就會自動生成一個a.txt的文件。
7、並會在a.txt文件中寫入為「testtesttesttest」的一段文字,即代表運行linuxshell腳本成功。
B. TCL腳本在linux下怎麼執行
你的linux裝了tcl解釋器了嗎,一般是
/usr/bin/tclsh,如果確認你裝了
(確認方法是在命令行下執行
tclsh),如果沒問題,就在你的TCL腳本第一行加上
#!/usr/bin/env
tclsh
然後確保你的腳本(假定腳本名字叫test.tcl)
是可執行的
(chmod
+x
test.tcl)
然後直接運行
./test.tcl
即可。
C. linux 如何運行tcl
1. 創建
例如想創建一個 *.tcl的文件,只需在終端中輸入
touch *.tcl 即可
2. 編譯
可用不同的編譯器對 *.tcl文件進行編譯
1> vi *.tcl
2> vim *.tcl
3> gedit *.tcl
3. 運行
我是用ns2運行*.tcl文件的
所以運行時輸入的就是
ns *.tcl
D. 關於TCL腳本的文件輸入輸出
set f [open e:/00 w] #用句柄f以寫的方式打開文件e;/00 文件必須存在
puts $f "nihao" #將內容nihao輸出至句柄f
close $f #關閉句柄f
set f [open e:/00 r] #用句柄f以讀的方式打開文件e;/00 若文件不存在將創建
while {[gets $f line] >= 0} { #讀取一行內容
puts $f
} #顯示該項內容
close $f #關閉句柄f
set f [open e:/00 a] #用句柄f以追加的方式打開文件e;/00 若文件不存在將創建
puts $f "nihao" #將內容nihao輸出至句柄f
close $f #關閉句柄f
E. Linux Shell 腳本編程最佳實踐
IT路邊社
前言
與其它的編碼規范一樣,這里所討論的不僅僅是編碼格式美不美觀的問題, 同時也討論一些約定及編碼標准。這份文檔主要側重於我們所普遍遵循的規則,對於那些不是明確強制要求的,我們盡量避免提供意見。
編碼規范對於程序員而言尤為重要,有以下幾個原因:
本文檔中的准則致力於最大限度達到以下原則:
盡管本文檔涵蓋了許多基礎知識,但應注意的是,沒有編碼規范可以為我們回答所有問題,開發人員始終需要再編寫完代碼後,對上述原則做出正確的判斷。
注 :未明確指明的則默認為必須(Mandatory)
主要參考如下文檔:
僅建議Shell用作相對簡單的實用工具或者包裝腳本。因此單個shell腳本內容不宜太過復雜。
在選擇何時使用shell腳本時時應遵循以下原則:
可執行文件不建議有擴展名,庫文件必須使用 .sh 作為擴展名,且應是不可執行的。
執行一個程序時,無需知道其編寫語言,且shell腳本並不要求具有擴展名,所以更傾向可執行文件沒有擴展名。
而庫文件知道其編寫語言十分重要,使用 .sh 作為特定語言後綴的擴展名,可以和其他語言編寫的庫文件加以區分。
文件名要求全部小寫, 可以包含下劃線 _ 或連字元 - , 建議可執行文件使用連字元,庫文件使用下劃線。
正例:
反例:
源文件編碼格式為UTF-8。避免不同操作系統對文件換行處理的方式不同,一律使用 LF 。
每行最多不超過120個字元。每行代碼最大長度限制的根本原因是過長的行會導致閱讀障礙,使得縮進失效。
除了以下兩種情況例外:
如出現長度必須超過120個字元的字元串,應盡量使用here document或者嵌入的換行符等合適的方法使其變短。
示例:
除了在行結束使用換行符,空格是源文件中唯一允許出現的空白字元。
對從來沒有用到的或者被注釋的方法、變數等要堅決從代碼中清理出去,避免過多垃圾造成干擾。
Bash 是唯一被允許使用的可執行腳本shell。
可執行文件必須以 #!/bin/bash 開始。請使用 set 來設置shell的選項,使得用 bash echo "Process $: Done making $$$."
# 示例7:命令參數及路徑不需要引號 grep -li Hugo /dev/ "$1"
# 示例8:常規變數用雙引號,ccs可能為空的特殊情況可不用引號 git send-email --to "${reviewers}" ${ccs:+"--cc" "${ccs}"}
# 示例9:正則用單引號,$1可能為空的特殊情況可不用引號 grep -cP '([Ss]pecial||?characters*) ${1:+"$1"}
# 示例10:位置參數傳遞推薦帶引號的"$@",所有參數作為單字元串傳遞用帶引號的"$*" # content of t.sh func_t { echo num: $# echo args: 1:$1 2:$2 3:$3 }
func_t "$@" func_t "$*" # 當執行 ./t.sh a b c 時輸出如下: num: 3 args: 1:a 2:b 3:c num: 1 args: 1:a b c 2: 3:
使用 $(command) 而不是反引號。
因反引號如果要嵌套則要求用反斜杠轉義內部的反引號。而 $(command) 形式的嵌套無需轉義,且可讀性更高。
正例:
反例:
條件測試
使用 [[ ... ]] ,而不是 [ , test , 和 /usr/bin/[ 。
因為在 [[ 和 ]] 之間不會出現路徑擴展或單詞切分,所以使用 [[ ... ]] 能夠減少犯錯。且 [[ ... ]] 支持正則表達式匹配,而 [ ... ] 不支持。參考以下示例:
盡可能使用變數引用,而非字元串過濾。
Bash可以很好的處理空字元串測試,請使用空/非空字元串測試方法,而不是過濾字元,讓代碼具有更高的可讀性。正例:
反例:
正例:
反例:
正例:
反例:
文件名擴展
當進行文件名的通配符擴展時,請指定明確的路徑。
當目錄中有特殊文件名如以 - 開頭的文件時,使用帶路徑的擴展通配符 ./* 比不帶路徑的 * 要安全很多。
應該避免使用eval。
Eval在用於分配變數時會修改輸入內容,但設置變數的同時並不能檢查這些變數是什麼。反例:
請使用進程替換或者for循環,而不是通過管道連接while循環。
這是因為在管道之後的while循環中,命令是在一個子shell中運行的,因此對變數的修改是不能傳遞給父shell的。
這種管道連接while循環中的隱式子shell使得bug定位非常困難。反例:
如果你確定輸入中不包含空格或者其他特殊符號(通常不是來自用戶輸入),則可以用for循環代替。例如:
使用進程替換可實現重定向輸出,但是請將命令放入顯式子 shell,而非 while 循環創建的隱式子 shell。例如:
總是檢查返回值,且提供有用的返回值。
對於非管道命令,使用 $? 或直接通過 if 語句來檢查以保持其簡潔。
例如:
當內建命令可以完成相同的任務時,在shell內建命令和調用外部命令之間,應盡量選擇內建命令。
因內建命令相比外部命令而言會產生更少的依賴,且多數情況調用內建命令比調用外部命令可以獲得更好的性能(通常外部命令會產生額外的進程開銷)。
正例:
反例:
載入外部庫文件不建議用使用.,建議使用source,已提升可閱讀性。正例:
反例:
除非必要情況,盡量使用單個命令及其參數組合來完成一項任務,而非多個命令加上管道的不必要組合。常見的不建議的用法例如:cat和grep連用過濾字元串; cat和wc連用統計行數; grep和wc連用統計行數等。
正例:
除特殊情況外,幾乎所有函數都不應該使用exit直接退出腳本,而應該使用return進行返回,以便後續邏輯中可以對錯誤進行處理。正例:
反例:
推薦以下工具幫助我們進行代碼的規范:
原文鏈接:http://itxx00.github.io/blog/2020/01/03/shell-standards/
獲取更多的面試題、腳本等運維資料點擊: 運維知識社區 獲取
腳本之---簡訊轟炸機
腳本之---QQ微信轟炸機
ansible---一鍵搭建redis5.0.5集群
elk7.9真集群docker部署文檔
全球最全loki部署及配置文檔
最強安全加固腳本2.0
一鍵設置iptbales腳本
F. Linux有什麼文件類型
Linux有以下文件類型:
1、普通文件(regular file):就是一般存取的文件,由ls -al顯示出來的屬性中,第一個屬性為 [-],例如 [-rwxrwxrwx]。另外,依照文件的內容,又大致可以分為:
2、純文本文件(ASCII):這是Unix系統中最多的一種文件類型,之所以稱為純文本文件,是因為內容可以直接讀到的數據,例如數字、字母等等。設 置文件幾乎都屬於這種文件類型。舉例來說,使用命令「cat ~/.bashrc」就可以看到該文件的內容(cat是將文件內容讀出來)。
3、二進制文件(binary):系統其實僅認識且可以執行二進制文件(binary file)。Linux中的可執行文件(腳本,文本方式的批處理文件不算)就是這種格式的。舉例來說,命令cat就是一個二進制文件。
4、數據格式的文件(data):有些程序在運行過程中,會讀取某些特定格式的文件,那些特定格式的文件可以稱為數據文件(data file)。舉例來說,Linux在用戶登入時,都會將登錄數據記錄在 /var/log/wtmp文件內,該文件是一個數據文件,它能通過last命令讀出來。但使用cat時,會讀出亂碼。因為它是屬於一種特殊格式的文件。
目錄文件(directory):就是目錄,第一個屬性為 [d],例如 [drwxrwxrwx]。
連接文件(link):類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx]。
設備與設備文件(device):與系統外設及存儲等相關的一些文件,通常都集中在 /dev目錄。通常又分為兩種:
塊設備文件:就是存儲數據以供系統存取的介面設備,簡單而言就是硬碟。例如一號硬碟的代碼是 /dev/hda1等文件。第一個屬性為 [b]。
字元設備文件:即串列埠的介面設備,例如鍵盤、滑鼠等等。第一個屬性為 [c]。
套接字(sockets):這類文件通常用在網路數據連接。可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為 [s],最常在 /var/run目錄中看到這種文件類型。
管道(FIFO,pipe):FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤。FIFO是first-in-first-out(先進先出)的縮寫。第一個屬性為 [p]。
G. 各種腳本語言,比如shell和tcl、perl有啥區別呢
1、shell可以說是unix\linux原生的,用戶通過它與系統內核進行交換。特點就是直接,主要用來管理和使用系統。
2、perl可以說是對shell的擴展,在編寫的靈活性、跨平台性都有提高,特別是在文本處理上有獨到的地方。另外,perl的用途廣泛如:開發CGI,功能上遠遠不止維護系統這么簡單。
3、tcl可以看做C庫,十分方便被C\C++調用,另外,tcl容易被擴展或者縮減,十分方便被移植到特定的軟體平台中,作為專業的腳本。我知道很多EDA工具內嵌tcl語言。
H. 在linux中在文檔中已經指定了tcl腳本與亞編譯器的位置,但在終端執行時提示找不到命令
這是因為你使用的命令並不在系統PATH環境變數包含的目錄里
I. 什麼是tcl腳本,簡單分析一下
Tcl(最早稱為「工具命令語言」"Tool Command Language", 但是目前已經不是這個含義,不過我們仍然稱呼它為TCL)是一種腳本語言。 由John Ousterhout創建。 TCL經常被用於 快速原型開發,腳本編程,GUI和測試等方面。
Tcl的特性包括:
* 任何東西都是一條命令,包括語法結構(for, if等)。
* 任何事物都可以重新定義和重載。
* 所有的數據類型都可以看作字元串。
* 語法規則相當簡單
* 提供事件驅動給Socket和文件。基於時間或者用戶定義的事件也可以。
* 動態的域定義。
* 很容易用C,C++,或者Java擴展。
*解釋語言,代碼能夠動態的改變。
* 完全的Unicode支持。
* 平台無關。Win32,UNIX,Mac上都可以跑。
* 和Windows的GUI緊密集成;Tk
* 代碼緊湊,易於維護。
TCL本身不提供面向對象的支持。但是語言本身很容易擴展到支持面向對象。許多C語言擴展都提供面向對象能力,包括XOTcl,Incr Tcl等。另外SNIT擴展本身就是用TCL寫的。
使用最廣泛的TCL擴展是TK。 TK提供了各種OS平台下的圖形用戶界面GUI。連強大的Python語言都不單獨提供自己的GUI,而是提供介面適配到TK上。另一個流行的擴展包是Expect. Expect提供了通過終端自動執行命令的能力,例如(passwd,ftp,telnet等命令驅動的外殼).
J. linux shell腳本執行命令詳解
在Linux下,如果你需要執行shell腳本,那麼應該使用那個命令呢?下面由我為大家整理了linux shell腳本執行命令的相關知識,希望對大家有幫助!
linux shell腳本執行
linux shell腳本執行方法一: 切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
linux shell腳本執行方法二: 以絕對路徑的方式去執行bash shell腳本:
/data/shell/hello.sh
linux shell腳本執行方法三: 直接使用bash 或sh 來執行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊。
linux shell腳本執行方法四: 在當前的shell環境中執行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。