啊哈!达

突然想到你,笑了笑自己。

bash脚本编程 笔记

特殊字符

cha meaning
# 注释
命令分隔符,在一行写多条命令,if []; then
;; 终止case选项
. source命令
: 空命令,while : 为死循环, then:为占位符,path的分隔符
:>file 会先清空文件,再新建
取反符号
* 通配符号
? 测试一个条件的结果,三元操作符,测试是否被set
|var1=1;echovar1
$? 退出状态码
$$ 进程ID
$# 操作数
() 命令组
{} 多个文件扩展,cat {f1,f2,f3} > cf; cp file2.{txt, backup}
[] 条件测试,数组元素
[[]] 测试
> &> >& >> < <> 重定向
&>2 output->stderr
| 管道,分析前面输出作为后面输入,`cat *.lst
& 后台运行
- 选项参数
~+ 当前工作目录
~- 先前工作目录
=~ 正则
$(A/B/C) 把A中的B换成C
until [-z "$1"]
do
    echo -n "$1 "
    shift # 利用shift逐个读取
done
  • 双引号中允许引用变量,单引号中不可
  • exit用来结束一个脚本,0表示成功,1-255表示错误
  • if/then结构用来判断退出状态码==0

内部变量

para meaning
$BASH bash二进制程序的位置
$BASH_ENV BASH启动文件
$BASH_SUBSHELL 子shell的层次
$BASH_VERSINFO[N] 安装bash的基本信息
$BASH_VERSION
$DIRSTACK 目栈顶端值
$EDITOR 脚本默认编辑器
$EUID 当前用户标识号
$FUNCNAME 当前执行函数名
$GLOBIGNORE 文件名模式匹配列表
$GROUPS 目前用户组
$HOME
$HOSTNAME
$HOSTTYPE 主机类型
$IFS 内部域标识符
$LINENO 自身在脚本中行号
$OLDPWD 之前工作目录
$PATH 可执行文件搜索路径
$PIPESTATUS
$PPID 父进程PID
$PWD 当前工作目录
$TMOUT 超时跳出
0,1,$2 位置参数
$# 位置参数个数
$*
${#str} 字符串长度,可用expr代替
${string:position(:length)} 从position处提取子串
paradefault/{para:-default} 默认参数
${var/pattern/replace} 替换第一个
${var//pattern/replace} 全局替
eval a = \$$a 反射(间接引用)
$RANDOM range(0,32767)
(()) C语言风格

- 循环:for var in list[]
- for num in echo $NUMBER
- for word in {strings "2" | grep "$1”)
- 测试

case "$var" in
    "condition1") xxx;;
    "condition2") xxx;;
    "condition3") xxx;;
esac    
  • 文件系统:cd,pwd
  • 变量let,eval,set
  • source,.会指向一个脚本
  • caller:调用者信息

作业控制命令

para meaning
jobs ls
disown 删除作业
fg,bg 前景背景
wait 脚本等待后台左右作业借宿为止
suspend ctrl-Z
kill 发送结束信号
killall 通过名字删除
enable 禁用/回复内奸命令
  • ls: -r递归,-s按照大小,-t按照修改时间
  • cat,tac: -n行号,-b非空行号,-s压缩空行
  • chattr:修改文件属性:+i永远不变,-u不可删除,-c自动压缩
  • ln:-s穿越文件系统创建链接
  • man,info:infoman详细
  • find ~/ -name 'core*' exec rm {} \;删除所有coredump
  • badname = echo "$filename" | sed -n '/[+(;"\=?~{}<>&$|$]/p';rm $badname 2 >/dev/null错误信息被抛弃
  • xargs:分成小块处理ls |xargs -p -1 gzip每次压缩一个
  • date:+%N十亿分之一表示当前时间,+%j今天是本年度第几天,+%k%M小时数显示,`–date=’6 days ago’
  • touch:修改文件被访问时间
  • sort,uniq:对于文件操作,sort -nr产生一个数字反转序列:sort | uniq -c | sort -nr
  • cut:从文件中提取特定域,-d字段定界符,-f域分隔符
  • paste:将多个文件以么个文件一列的方式合并到一个文件当中
  • grep: grep pattern [file..]: 如果没有指定参数,默认为stdout,-i忽略大小写,-w匹配整个单词,-r递归,-n列出行号
  • wc:word count
  • tr: 字符转换过滤器: tr "A-Z" "*" <filename
  • host: 通过名称/IP地址找到DNS
  • ipcalc:显示主机IP
  • traceroute:跟踪包发到远端主机中的路由信息
  • uucp:断点续传的unix2unix传输(uux执行,cu终端链接)
  • telnet:链接远端主机的工具协议
  • wget:使用非交互形式从web/ftp下载数据
  • rlogin,rsh,rcp,rsync:远端登陆,远端shell,远端拷贝,远端同步
  • scp:安全拷贝,使用ssh类似的安全层
  • factor:正数质因数分解
  • who:列出当前所有登陆用户,
  • w:用户和它们的进程
  • logname/whoami: 当前用户的用户名
  • tty:当前终端的名字,stty 显示并修改终端设置
  • setterm:设置特定终端的属性:setterm -bold on, setterm -cursor off
  • uname:系统信息
  • arch: 系统硬件体系结构
  • lsof:列出打开的文件信息,包括宿主,尺寸和相关信息
  • strace/ltrace:系统跟踪/库跟踪
  • nmap:网络映射和端口扫描
  • free:显示内存和缓存的使用情况
  • lsdev:列出系统设备(显示所有安装的硬件)
  • du:递归的显示磁盘文件的使用情况
  • df:列表形式显示文件系统的使用情况
  • stat:文件的详细信息
  • vmstat:虚拟内存的使用信息
  • hostname:显示系统的主机名字
  • size:2进制可执行文件或归档文件每部分的尺寸
  • logger:系统日志,存在/var/log/message
  • pgrep,pkill:ps+grep/kill
  • top:显示CPU占有率最高的进程
  • nice:修改后台作业的优先级,只有root能设为负数
  • halt,shutdown,reboot:系统关机命令,比电源关机优先级高
  • ifconfig:网络接口配置调试工具
  • iwconfig:ifconfig的无线版本
  • chkconfig:检查网络配置
  • sync:强制清空磁盘读写buff
  • badlocks:检查磁盘的空块
  • dump/restore:对于原始磁盘使用二进制形式写备份文件
  • ulimit -f:系统资源的使用上限,-c为coredump的尺寸
  • quota/setquota:用户的磁盘配额
  • 0<&-,1>&-关闭输入输出:exec 4<&0; exec > $1;exec 7>&1; exec >$2

gcd:"$1[p]s2[lip/dli%0=1dvsr]s12sid2%0=13sidvsr[dli%0=1lrli2+dsi!>.]ds.xd1<2" | dc

正则表达式

  • 字符集+锚+修饰符
  • *任意多次,.一个,?一次或零次,+一次或多次,\{\}匹配次数
  • ^,$:行首行尾
  • []字符集中一个字符,|RE中或操作符
  • \< \>单词边界
  • [:alnum:],[:alpha:],[:blank:],[:digit:],[:graph:],[:lower:],[:sapce:],[:xdigit:]

特殊目录

dir meaning
/dev 磁盘文件
/proc 当前进程
/zero null流,作为临时交换文件
/null 只写文件
阅读更多
文章标签: 笔记
个人分类: 工具
想对作者说点什么? 我来说一句

Linux命令行和bash脚本编程圣经

2009年05月15日 13.66MB 下载

Linux bash基本语法笔记

2017年09月07日 4KB 下载

高级Bash Shell脚本编程指南

2014年07月16日 1.3MB 下载

30分钟搞定BASH脚本编程.txt

2013年01月28日 8KB 下载

Linux命令行和bash脚本编程圣经.pdf

2009年05月15日 9.39MB 下载

bash快速入门,适合新手

2008年09月16日 284KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭