IC工程师的工具箱:Bash
Posted 不忘出芯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IC工程师的工具箱:Bash相关的知识,希望对你有一定的参考价值。
今天下午服务器硬盘又塞满了,需要把以前项目的一些仿真中间文件删除,于是有了下面这个丑陋而且暴力的脚本。
#!/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
以上是关于IC工程师的工具箱:Bash的主要内容,如果未能解决你的问题,请参考以下文章