少说废话,多做实事。 微信订阅号 不忘出芯

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-01-19  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 6965
  • 日志数: 8
  • 建立时间: 2018-04-03
  • 更新时间: 2018-12-30

RSS订阅

Open Toolbar