1. 程式人生 > >高階BASH 程式設計 筆記(一)BASH 入門

高階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]; //自己持有物件