前一阵子系统学习了下《linux shell脚本攻略》这本书。在此记录下自己的学习笔记
1. 输出颜色字符
echo -e "\e[1:41m" 1表示背景色
2. echo 打印!需要注意
echo "hello, bash!" 会出错
需要改成 echo 'hello, bash!'
3. printf可用于格式化输出
printf "format" var1 var2 ...
4. echo
echo -n # 不添加换行符
echo -e # 使用转义序列 相当于 echo "XXXX"
echo -e "\e[id1 XXXXXX" #
echo 显示颜色
其中id用于设置字背景颜色
5. pgrep
pgrep 进程名 # 相当于ps -ef
cat /proc/$PID/environ # 查看进程运行过程中的环境变量
6. (())
c=$((a+b)) # 赋值方式1
((c = a+b)) # 赋值方式2
7. 重定向
# 将标准输出定向到stdout.txt 将标准错误输出定向到stdout.txt
sh mybash.sh 1>stdout.txt 2 > stdout.txt
# 更简单的方案 注意&和>之间不能有空格
sh mybash.sh &> stdout.txt
8. exec
# 创建文件描述符
exec 4 < log.txt
exec 5 > log.txt
exec 6 >> log.txt
9. 哈希数组
# 声明
declare -a map
# 定义
${map[key]}=value
# 获取所有key
${!map[@]}
10. date
# 显示秒数
date +%s
# 将秒数转成字符串
date -d @秒数
11 tput
# 设置光标位置
tput cup 行号 列号
# 保存光标位置
tput sc
# 回到保存的光标位置
tput rc
# 清除当前光标到行尾
tput ed
12. read
# 设置不回显
read -s
# 设置超时时间
read -t
# 设置读入字节数
read -n 字节数
# 设置提示
read -p "please input passwd"
13. cat
# 删除多余的空行
cat -s file
# 打印行号
cat -n file
# 打印出制表符
cat -T file
14. find
# 打印
find <path> -name XXX -print
# 执行命令
find <path> -name XXX -exec rm -rf {} \;
15. xargs
# 常用用法
cat file | xargs
# 设定每行的字段数
cat file | xargs -n 3
# 以null为换行符
cat file | xargs -0
# 代替命令中位置
cat file | xargs -l {} rm -rf {}
16. tr
# 替换
tr 字符集1 字符集2
# 删除
tr -d 字符集
# 补集
tr -d -c 要留下的字符集
# 去除重复空格
tr -s " "
17. md5sum
# 生成md5值
md5sum file > file.md5
# 校验
md5sum -c file.md5
18. sort
# 按照字符串排序
cat file | sort
#按照数字排序
cat file | sort -n
# 逆序排序
cat file | sort -r
# 按照某列排序
cat file | sort -k 列数
19. dd 生成文件
# 从/dev/zero生成文件
dd if=/dev/zero of=data.file bs=100k count=1
20. split 分割文件
split data.file -b 10k -a 3
21. 字符串分割
# 获取文件后缀
echo ${filename##*.}
# 获取文件名
echo ${filename%.*}
22. 单词表
cat /usr/share/dict/words
23. 自动化交互式输入
# 标准输入
echo "XXX" | sh interactive.sh
# 文件输入
sh interactive.sh < input.data
# expect
spawn ./interactive.sh
expect "XXXX"
send "YYY\n"
24. comm
# 求差集a-b
comm a.txt b.txt -1
# 求a+b并集
comm a.txt b.txt
# 求ab交集
comm a.txt b.txt -1 -2
25. 将文件设置为不可修改
chattr +i file
去除不可修改属性
chattr -i file
26. 寻找软连接
ll -rt | grep -P "^l" | awk '{print $8}'
find . -type l
27. diff
diff -u 1.txt 2.txt
diff -u 1.txt 2.txt > 12.patch
28. patch
patch -p1 1.txt < 12.patch
29. pushd、popd、dirs
# 常规用法
pushd directory
popd
# 指定目录
dirs
pushd +N
popd +N
30. grep
# 显示颜色
grep --color=auto
# 统计匹配行数
grep -c
# 显示匹配行号
grep -n
# 显示匹配字符偏移量
grep -o -b
# 显示匹配文件列表
grep -l 1.txt 2.txt
# 使用文件匹配
grep -f pattern.txt file.txt
# 静默模式
grep -q
# 定位代码
grep -R -n
# 忽略大小写
grep -i
# 匹配多个样式
grep -e pattern1 -e pattern2
# 显示匹配行之前N行
grep -A
# 显示匹配行之后N行
grep -B
# 显示匹配行之前之后N行
grep -C
30. sed
# sed "s///" 替换
echo "hello wolrd" | sed "s/hello/goodbye/"
# sed -i 替换文件内容
sed -i 's/hello/goodbye/' 1.txt
# sed 's///g' 替换所有匹配内容
echo "thisthisthisthis" | sed 's/this/THIS/g'
# sed 's///ng' 从第n处匹配开始替换
echo "thisthisthisthis" | sed 's/this/THIS/2g'
# sed '//d' 删除匹配行
cat diff.sh | sed '/^$/d'
# 匹配字符串标记
echo this is an example | sed 's/\w\+/[&]/g'
# 捕捉字符串
echo "this is a digit 7 in a numbger" | sed 's/digit \([0-9]\)/\1/'
31. paste
# 按列合并文件
paste file1 file2
paste file1 file2 -d ","
32. rev
# 字符串逆序
echo "1234" | rev
33. tac
# 行逆序
seq 1 10 | tac
- 【链接】LINUX SHELL脚本攻略笔记[速查]
LINUX SHELL脚本攻略笔记[速查]
- LINUX SHELL脚本攻略笔记[速查]
Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- 读书笔记--Linux Shell脚本攻略
总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选 ...
- Linux Shell脚本攻略
-Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...
- linux shell 脚本攻略学习20--awk命令入门详解
awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...
- Linux shell 脚本攻略之统计文件的行数、单词数和字符数
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之创建不可修改文件
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之生成任意大小的文件
摘自:<Linux shell 脚本攻略>
随机推荐
- poj 2155 (二维树状数组 区间修改 求某点值)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 33682 Accepted: 12194 Descript ...
- windows 7 安装docker
下载docker-install.exe 下载链接 安装,一路next(安装完成后建议重启电脑) 点击桌面boot2docker Start图标,等待初始化,运行docker --version检验是 ...
- 火狐metamask账号
火狐metamask lock trophy pyramid sunny aim inmate body sense sing castle cinnamon cram
- Linux内核设计笔记11——定时器
定时器与时间管理笔记 内核中的时间 时钟中断:内核中的系统定时器以某种频率触发中断,该频率可以通过编程预定. 节拍率HZ:时钟中断的频率称为节拍率. 节拍:相邻两次中断的时间间隔称为节拍,1/节拍率. ...
- HDU 4302 Holedox Eating (线段树模拟)
题意:一个老鼠在一条长度为L的直线上跑,吃蛋糕,老鼠只能沿直线移动.开始时没有蛋糕,老鼠的初始位置是0. 有两个操作,0 x 代表在位置x添加一个蛋糕: 1 代表老鼠想吃蛋糕.老鼠每次都会选择离自己最 ...
- Thunder团队第一周 - Scrum会议7
Scrum会议7 小组名称:Thunder 项目名称:爱阅app Scrum Master:宋雨 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传康 ...
- LintCode-72.中序遍历和后序遍历树构造二叉树
中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 注意事项 你可以假设树中不存在相同数值的节点 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: ...
- YaoLingJump开发者日志(一)
写完PokeCats之后意犹未尽,还想做一个更加有趣的游戏,比如说像超级玛丽那样. 游戏的主角就选"瑶玲"了,这是我小时候最喜欢的动画片<瑶玲啊瑶玲>的女主角. ...
- phpmyadmin打开空白
本地phpstudy环境,打开 phpmyadmin,登陆之后,显示空白页面. 解决办法:切换为 低版本的php版本,正常登陆.
- C# 压缩组件介绍与入门
1.前言 作为吉日嘎拉权限管理系统最早的一批学习版用户,学了不少东西,在群里面也结识了很多朋友,更重要的是闲余时间,大家都发布很多可靠的外包工作.这次也是由于吉日嘎拉发布了一个有关“压缩文件损坏检测” ...