高階BASH 程式設計 筆記(一)BASH 入門
最近看高階BASH程式設計一書,說以記下些覺得有用的東西。
1. 指令碼中的“#!”字元,這兩個字元其實是兩個位元組的魔法字元,後面接路徑名,指定用來解釋指令碼的程式。
例如:
#!/bin/bash
#!/bin/ksh
當我們的指令碼中的第一行包含了以上設定後,只需要給指令碼加上可執行許可權:chmod +rx shellname 或 chmod 555 shellname。我們就可以通過直接執行檔名來執行指令碼。而不用像這樣呼叫:sh shellname 或 bash shellname 等等。
當指令碼中包含多行的#!字元時,第一個被呼叫的命令直譯器程式將視其它的#開頭的行為註釋行。
還可以藉助#!玩些小技巧:
自刪除指令碼:
#!/bin/rm
echo "remove me" #此指令碼將什麼也不發生,除了刪除它自己。
在README檔案的第一行加入:
#!/bin/more
並且把README檔案屬性改為可執行,你會發現它呈現了README的內容。
2. 特殊字元
# --此字元用來進行註釋,可以出現在指令碼命令的 空格後: echo "hello,world" #這裡是註釋
但是當此字元被轉義時將失去註釋功能: echo "hello, # world" #hello與world之間的#將被列印
echo hello /# world #這裡的#被斜槓/轉義,所以失去註釋功能被列印。
; --此為命令分隔符,可以使指令碼中一行執行多個命令: echo "hello,world" ; echo "hello2,world" ;
;; --此為case選項的終止符:
. --此命令等價於source命令,用系統內建;
當.作為檔名的開頭時,此檔案將被隱藏,使用ls -a才可顯示出來;
當.作為資料夾名時,它表示當前資料夾;
當.作為字元匹配時,它用來匹配任何單個字元;
()與{}的區別;這兩個符號都可以定義一個程式碼塊,但是()中定義的程式碼塊將在一個新shell中執行,{}中的程式碼塊不能在新shell中執行,{}中的程式碼塊像指令碼中的函式,與函式不同的是,函式中的區域性變數指令碼中的其他程式不能使用,但是{}中的區域性變數可以。
指令碼中實現在後臺執行一個迴圈:
- 斷橫線的應用:用於重定向stdout或stdin.
從一個目錄移動整個目錄樹到另一個目錄:
(cd /test1 && tar cf - .) | ( cd /test2 && tar xpvf -)
cd /test1 #進入test1目錄
&& #如果上面執行成功則繼續後面的命令
tar cf - . # 'c'建立一個新文件,'f'後面跟'-'指定目錄檔案作為stdout,'-'後面的'f'(file)選項指明作為stdout的目標檔案,並在當前目錄'.'執行。
tar xpvf - # 'x'解檔,'p'保證所有權和檔案屬性,'v'發完整訊息到stdout,'f'後邊跟'-',從stdin 讀取資料。
相關推薦
高階BASH 程式設計 筆記(一)BASH 入門
最近看高階BASH程式設計一書,說以記下些覺得有用的東西。 1. 指令碼中的“#!”字元,這兩個字元其實是兩個位元組的魔法字元,後面接路徑名,指定用來解釋指令碼的程式。 例如: #!/bin/bash #!/bin/ksh 當我們的指令碼中的第一行
1、spring-boot學習筆記(一)簡單入門
ava project nal run plugin mailto 5.4 安全 class a 一、新建普通Maven工程 pom.xml <parent> <groupId>org.springframework.boot</gr
Scala學習筆記(一):入門
變數定義 Scala有兩種變數,val和var。val類似於Java中的final變數,一旦初始化了,val就不能再被賦值。var可以多次賦值。但由於函數語言程式設計特性,Scala更推崇val。 var的使用也有其侷限性,Scala有型別推斷的功能,當var被初始化後,其型別就已經被斷定,比如 當m被
Tensorflow學習筆記(一)Tensorflow入門
Tensorflow入門 前言: 本文是閱讀《TensorFlow:實戰Google深度學習框架》第三章提煉出來的筆記,非本人原創。 這一章主要介紹: TensorFlow 名字說明最重要兩個概念:Tensor(張量),Flow(流)。 tensor張量可以理解
Spark (Python版) 零基礎學習筆記(一)—— 快速入門
由於Scala才剛剛開始學習,還是對python更為熟悉,因此在這記錄一下自己的學習過程,主要內容來自於spark的官方幫助文件,這一節的地址為: 文章主要是翻譯了文件的內容,但也在裡邊加入了一些自己在實際操作中遇到的問題及解決的方案,和一些補充的小知識,一起學習。 環境
Python 菜鳥筆記(一)Python 入門
一、Python的一些特點 通俗易學 相比c語言晦澀難懂[至今仍搞不懂,為什麼各大高校紛紛使用c語言作為計算機相關專業的入門語言,no comment],python更為的接近人類的語言。就這麼說吧,如果你的英語不錯,那麼基本的python程式碼你都能夠看
SprimgMVC學習筆記(一)—— SpringMVC入門
一、什麼是 SpringMVC ? 在介紹什麼是 SpringMVC 之前,我們先看看 Spring 的基本架構。如下圖: 我們可以看到,在 Spring 的基本架構中,紅色圈起來的 Spring Web MVC ,也就是SpringMVC,它是屬於Spring基本架構裡面的一個組成部分,屬
ElasticSearch 菜鳥筆記 (一)ElasticSearch 入門簡介
前言 ElasticSearch 是一個高可用開源全文檢索和分析元件。提供儲存服務,搜尋服務,大資料準實時分析等。一般用於提供一些提供複雜搜尋的應用。 ElasticSearch 提供了一套基於restful風格的全文檢索服務元件。前身是compass,直到
MyBatis 筆記(一)——快速入門
簡介 MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。 入門 新增依賴 在使用 Mybatis 的時候,需要新增資料庫驅動包和 Mybatis 包,以
zookeeper學習筆記(一)--快速入門與叢集部署
一、分散式系統面臨的挑戰 什麼是分散式 分散式的特點 分散式技術 分散式面臨的問題 程序與程序之間 一、單體架構 Jvm內部呼叫 單點故障 二、叢集架構 分散式session問題》session c
Angular 5.x 系列教程筆記(一)——快速入門
前言 涉足Angular是從1.x的版本,幾年間Angular已經從1.x迭代到了2.x、4.x在到現在的5.0, 發展非常的迅速,效能也得到了很大的提升,接下來我們會逐步帶大家快速瞭解一下Angular 5.x的使用。 安裝CLI Angular 2
《Python資料分析與展示》學習筆記(一)numpy入門
一.資料分析的基礎 Python在資料科學領域有一套成熟的工具鏈,numpy就是整個工具鏈的基礎構件,就像數位電路中的與非門,是其他複雜電路的基礎。 numpy在數學中對應的理論就是線性代數,n
Spring-Cloud-Ribbon學習筆記(一):入門
instance pub auto pom.xml forname 註冊 yml 中心 有一個 簡介 Spring Cloud Ribbon是一個基於Http和TCP的客戶端負載均衡工具,它是基於Netflix Ribbon實現的。它不像服務註冊中心、配置中心、API網關那
HBase學習筆記(一)——基礎入門
1、what:什麼是HBase HBase的原型是Google的BigTable論文,受到了該論文思想的啟發,目前作為Hadoop的子專案來開發維護,用於支援結構化的資料儲存。 HBase是一個高可靠性、高效能、面向列、可伸縮的分散式儲存系統,利用HBASE技術可在廉價PC Server上搭建起大規模結構化儲
bash shell學習筆記(一)—— 常用命令
排序 class $@ 幫助 row 自動 from quic 方式 一、基本的bash shell命令 1、默認bash shell 提示符是美元符號($); 2、bash手冊 使用man命令來訪問存儲在Linux系統上的手冊頁面,如: bogon:~ Mac$
python高階程式設計讀書筆記(一)
python高階程式設計讀書筆記(一) python 高階程式設計讀書筆記,記錄一下基礎和高階用法 python2和python3相容處理 使用sys模組使程式python2和python3相容 import sysver=sys.version_info#(ma
《JavaScript高階程式設計》讀書筆記(一)
JavaScript組成: 核心(ECMAScript) 文件物件模型(DOM) 瀏覽器物件模型(BOM) ECMAScript ,由ECMA-262標準定義,提供核心語言功能。JavaScript實現了ECMAScript,Adobe ActionScri
《JavaScript高階程式設計(第三版)》讀書筆記 (一)
《JavaScript高階程式設計(第三版)》讀書筆記 本文內容是關於《JavaScriptt高階程式設計(第三版)》的讀書筆記,而且只是提取個人認為每個章節比較重要或者需要注意的知識點。 第一章 JavaScript簡介 1. 一個完整的JavaScipt
Windows高階程式設計學習筆記(一)
寫在前面的話 之前學的Windows程式設計都是介面啊、網路程式設計啊之類的純應用層面的東西,總是感覺而自己沒有達到自己期望中的水平。什麼水平呢?如果讓你編寫監控系統資源的工具,或者DLL注入相關軟體,或者底層安全軟體,可以勝任嗎?我的答案是,並不會。
Objective-C高階程式設計 iOS與OS X多執行緒和記憶體管理 讀書筆記(一)
1.2.2 記憶體管理原則: 自己生成的物件,自己所持有 非自己生成的物件,自己也能持有 不再需要自己持有的物件時釋放 非自己持有的物件無法釋放 自己生成的物件,自己所持有 //自己生成並持有物件 id obj = [[NSObject alloc] init]; //自己持有物件