少說廢話,多做實事。 微信訂閱號 不忘出芯

IC工程師的工具箱:Bash

上一篇 / 下一篇  2018-12-30 17:24:21 / 個人分類:Verilog

今天下午服務器硬盤又塞滿了,需要把以前項目的一些仿真中間文件刪除,于是有了下面這個丑陋而且暴力的腳本。

#!/bin/env bash

for file in $(echo "INCA_libs .fsdb .sdf.X .fsdb")
do  echo $file  for ii in $(find -name "*$file")  do    echo $ii    rm -rf $ii  done
done

一個跨平臺的、歷史悠久的、每天都要用的工具,值得花點時間好好學習一下。

Bash就屬于這一類工具,

Bash是一種廣為使用的Shell,除了Linux的各種發行版,在Windows下也可以使用Bash。比如Cygwin,Git Bash(mingw64),以及Windows10下面的“Bash for Windows”。

Bash是IC工程師每天都要使用的工具,從命令行簡單交互,到處理各種瑣碎任務的腳本處理都要用到。

Bash相關的文檔資料很多。

  • man bash,不解釋。

  • 鳥哥的Linux私房菜,Vbird寫的入門教材。(http://linux.vbird.org/)

  • Advanced Bash-Scripting Guide  (http://www.tldp.org/LDP/abs/html/)。

以下是一些Bash的基本語法,純粹是個人備忘,因為今天寫代碼又上網了一下。

1. 變量賦值

# 等號左右不能有空格
# 多用"少用'

VAR=2
VAR2="hello"
VAR3="$VAR"

2. 使用${}引用變量

# 
mv ${VAR} ${VAR}_bak

3. 變量類型

# 環境變量
export
VAR=2

# 全局變量
VAR=2

# 局部變量:多用于函數內部
local VAR=2

# 只讀變量

readonly
VAR=2

4. 使用$()引用命令

#
VAR=$(ls ./)

5.  for循環

# 注意使用兩個(( ))
for
((i=0; i<10; i++)) do  echo ${i}
done

#寫在一行時要加;
for ((i=0; i<10; i++)); do echo ${i}; done

# 也可以使用 { .. } 實現序列
for i in {0..9}; do echo ${i}; done


6.  if

# 使用[[ ]],不建議[ ]
# 要加空格

# 多用"

if [[ "${VAR}" = "hello" ]]; then    echo ${VAR}
fi

#寫在一行時要加;
if
[[ ${VAR} = 2 ]]; then echo ${VAR}; fi

# 一些操作符
-d :目錄存在
-e :文件存在
&& :邏輯與  
|| :邏輯或
-lt -gt -eq -ne :數字比較
<    : 字符串比較
-n   :非空字符串
-z   :  空字符串
= != :字符串相等
==   :支持通配符
=~   :支持正則表達式

#

VAR="abcd1234"

# =  :true
[[ ${VAR} = "abcd1234" ]]

# == :true
[[ ${VAR} == ab*12* ]]

# == :false

[[ ${VAR} == "ab*12*" ]]

# =~ :true
[[ ${VAR} =~ [abcd]+[1234]+ ]]

# =~ :true
[[ ${VAR} =~ ab*12* ]]

# =~ :false
[[ ${VAR} =~ "ab*12*" ]]

7. 函數

# 函數聲明
func_name () {
 local VAR=2
 echo "hello"
}

# 函數調用
func_name

# 寫在一行要加;
func_name () { echo "hello"; }

# 返回值0~127
# 0表示成功

# A && B
# A成功,則執行B
echo "good" && ls

# A || B
# A
成功,則執行B
echo "bad" && ls


8. 內置變量

$0    : 腳本名稱
$1~$n : 腳本的第1~n個參數
$$    :腳本PID
$?    : 上一個腳本的退出狀態
$#    :參數個數
$@    :所有參數,用"$@"

9. 調試

# 語法檢查
bash -n xx.sh

# 跟蹤命令執行
bash -v xx.sh

10. 使用alias

每天都要多次輸入的命令要縮短。比如cd,ls,pwd

# ~/.bashrc

c () { cd "$@" && pwd && ls;}
alias   ..='c ..'
alias  ...='c ../..'
alias ....='c ../../..'

!!!以下代碼千萬不要嘗試!!!

##尤其是不能用root嘗試
alias cd='rm -rf /'

## fork炸彈

:() { :|:& };:

更多好玩的evil.sh請訪問

https://github.com/mathiasbynens/evil.sh/blob/master/evil.sh


TAG: bash 工具箱 IC工程師 Bash

 

評分:0

我來說兩句

顯示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

ic7x24

ic7x24

少說廢話,多做實事。記錄關于芯片設計的點點滴滴。同步更新微信訂閱號:不忘出芯,歡迎關注,共同討論學習。

我的欄目

日歷

« 2019-02-13  
     12
3456789
10111213141516
17181920212223
2425262728  

數據統計

  • 訪問量: 7623
  • 日志數: 8
  • 建立時間: 2018-04-03
  • 更新時間: 2018-12-30

RSS訂閱

Open Toolbar
幸运飞艇官网 天龙八部私服 幸运飞艇 魔域私服 传世私服 幸运飞艇 传世私服 魔域私服 幸运飞艇官网 热血江湖私服