Linux Shell脚本攻略
-Linux Shell脚本攻略
总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选的一些比较经验实用的shell命令和shell脚本,不过也可以看出来,这本书是作者从自身实用的角度来挑选shell命令和脚本,所以覆盖面比较全,但是会感觉有点零碎,比如对于shell的基本语法就不会展开讲,只是会提到,需要有基本的shell底子,另外就是像sed、awk这种大神级别的shell命令,讲解的相对不是很完整,略零碎,特别是awk,可能需要另外找资料看。总的来说是一本值得入手的书,让你对linux各个方面的命令和shell脚本有个不错的认识。
贴上记录的笔记,ps,笔记用markdown记录的,markdown绝逼做笔记记录的神器,没有之一!
Linux Shell脚本攻略
第一章 小试牛刀
运行shell脚本的两种方式:
- sh test.sh 用sh命令
- 赋予可执行权限,chmod a+x tesh.sh,然后执行./test.sh
echo
- 不带引号的echo,如echo hi google,没法在echo后面的文本中使用分号,因为分号在bash里是命令界定符,比如echo hi;google只会输出hi
- 带单引号的echo,bash不会对单引号中的变量入$var求值,会原样输出
- 带双引号的echo,不会打印感叹号。echo “hi!google”会报错
printf
- printf命令也可以用于输出,特别适合用于格式化输出,但是printf不会像echo那样默认换行,需要手动添加\n换行
变量
- var=value,这是给变量赋值
- var = value,这是判断两个变量相等
- 计算变量长度:length={#var}
重定向
- $echo "test" > temp.txt会先清空temp.txt然后再写入
- $echo "test" >> temp.txt会以追加的方式写入
第二章 命令之乐
cat
- cat file1 file2 file3...读取多个文件
- cat -s file 压缩空白行,把文本的多个空行压缩成一个
- cat -n file 显示行号
find
- find base_path列出当前目录和子目录下的所有文件和文件夹
- find path -name '*txt' 根据文件名或者正则表达式匹配搜索
- find path -iname '*txt' 同上,忽略大小写
- find path ! -name '*txt' 对上面的搜索结果取反
- find path -type d 根据文件类型搜索,d文件夹,f普通文件,etc
- find path -type f -size +2k 根据文件大小搜索,+2k大于2k的文件,-2k小于2k的文件,2k等你2k的文件
- find path -type f -name '*txt' -delete 删除匹配到的文件
md5sum
- 用来计算文件md5值,校验文件完整性
- md5sum filename 生成文件的md5值
- md5sum filename > file_sum.md5 把生成的md5值重定向到文件中
- md5sum file1 file2 file3校验这三个文件的md5值,比较是否相同
- md5sum -c file_sum.md5 检查md5值是否匹配
第三章 以文件之名
权限设置
- 第一个代表类型,-表示普通文件,d表示目录,etc
- 后面三个三个一组,分别代表用户、用户组、其他用户的权限
- 三个一组的值基本都是rwx和-,-表示没有权限,r代表读权限,w代表写权限,x代表执行权限,对于目录,x代表可以访问目录中的文件和子目录
- chmod u=rwx g=rwx o=rwx filename设置权限,u=用户权限g=用户组权限o=其他用户权限
- chmod o+x filename 给其他用户增加可执行权限
- chmod a+x filename 给所有权限类别(all)加上执行权限
- chmod a-x filename 给所有权限类别删除执行权限
- 还可以使用八进制来设置权限,比如chmod 764 filename
- chmod a+x . -R 递归的方式修改当前目录下所有文件和子目录的权限
head
- head filename 打印文件前10行
- head -n 5 filename 打印文件前5行
tail
- tail filename 打印文件后10行
- tail -n 5 filename 打印文件后5行
- tail -f filename 不断打印文件的新增内容
wc
- wc -l filename 统计行数
- cat filename | wc -l 同上
- wc -w filename 统计单词数
- wc -c filename 统计字符数
tree
- tree ./ 用图形化的树状结构打印文件和目录
第四章 让文本飞
正则表达式
grep
- grep "text" . -R -n 从当前目录开始对文本递归搜索,linux下查找源码的利器
- grep -i "text" 忽略大小写
- grep "text" filename -A 3 打印匹配结果之后的3行
- grep "text" filename -B 3 打印匹配结果之前的3行
- grep "text" filename -C 3 打印匹配结果前后各3行
sed
sed用来替换给定文本中的字符串,可以用正则表达式进行匹配。
- $sed 's/pattern/replace_string/' file 或者 $cat file | sed 's/pattern/replace_string/'
- $sed -i 's/pattern/replace_string/' file 将替换结果写入到原文件
- 上面这种替换只会将每一行的第一个匹配替换,如果需要替换所有的,需要加上参数g,这样:$sed 's/pattern/replace_string/g' file
- sed '/^$/d' file 移除空白行,/pattern/d会移除匹配样式的行,在空白行中,行尾标记紧随着行首标记
- sed表达式通常用单引号,也可以用双引号,双引号可以引用变量,比如:
$text=hello
$echo hello world | sed "s/$text/HELLO"
HELLO world
awk
awk过于牛逼了,这本书里关于awk命令的讲解太碎不够系统,需要另外找资料系统的看下
第五章 一团乱麻?没这回事
主要讲解curl、wget等几个在命令行下求情远程URL的命令
第六章 B计划
tar
tar命令用来归档文件
- tar -cf output.tar file1 file2 file3... -c代表创建文件,-f代表指定文件名
- tar -rvf output.tar file1... -r代表添加文件,向已存在的tar包中添加文件
- tar -tf archive.tar 列出归档文件中的内容
- tar -tvf archive.tar 列出归档文件中内容的详细信息
- tar -xf archive.tar 提取归档文件到当前目录
- tar -xf archive.tar -C path 提取归档文件到指定目录
- tar -Af file1.tar file2.tar 将file2.tar合并到file1.tar中
- tar -f archive.tar --delete file1 file2...从归档文件中删除文件
第七章 无网不利
主要讲解ssh命令,利用ssh-keygen -t rsa可以生成ssh公钥和私钥,实现免输密码的ssh登陆
第八章 当个好管家
du
du命令查看磁盘占用空间情况
- du file1 file2 查看各个file的大小
- du -h file1 file2用更友好的方式展示file大小
- du -ak source_dir | sort -nrk 1 | head 查找指定目录中最大的10个文件
df
df输出磁盘空间使用情况,df -h更友好的展示空间使用情况
第九章 管理重任
ps
查看进程信息
uptime
查看系统load和系统运行时间
top
默认输出一个占用cpu最多的进程列表
kill
- kill -9 process_id 强杀进程
wall
这个命令可以向所有当前登录用户的终端发送信息,这个还挺好玩,不过没试过
cron
一个很有用的调度命令,写过时间程序的应该都对这个很有印象
以上。
Linux Shell脚本攻略的更多相关文章
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- Linux shell 脚本攻略之统计文件的行数、单词数和字符数
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之创建不可修改文件
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之生成任意大小的文件
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之批量重命名
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之文件查找与文件列表
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之比较与测试
摘自:<Linux shell 脚本攻略>Page30-33
- Linux shell 脚本攻略之根据扩展名切分文件名
摘自:<Linux shell 脚本攻略>Page61-62
- Linux shell 脚本攻略之正则表达式入门
摘自:<Linux shell 脚本攻略> 下面是类似的解释:
随机推荐
- typeof + instanceof+toString+constructor什么推理javascript数据类型
一个.typeof JS这些变量是弱类型(这是弱类型)的,它可以不管用来存储数据的类型的. typeof 数据类型可用于检测给定的变量.可能的返回值: 1. 'undefined' --- 这个值没有 ...
- RQNOJ PID3 / Jam的计数法
题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字 ...
- C# 反射技术应用
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- idea类似eclipse鼠标技巧java api信息
版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 如此高效通用的分页存储过程是带有sql注入漏洞的
原文:如此高效通用的分页存储过程是带有sql注入漏洞的 在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如 ...
- Socket 学习(三)
前2节,说的是 Server 与 Client 的数据交互.服务端IP.端口固定,客户端 网服务端发送消息的时候,他的Socket对面被服务端获取到了,而且链接没有中断,他当然可以很容易回复信息. 现 ...
- 平安某金所奇葩的面经-关于幂等和ROA设计的反思
在公司一直在做跟支付有关的项目,某日接到平安某金所一男子电话,应该是之前某猎头投的,我正好在吃早饭(也不能怪他们上班早,我们公司弹性工作制,我一般上班比较晚). 因为饭馆信号不好,只能赶紧放下剩下的半 ...
- PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4
原文:PHP添加Mssql/sqlserver2000扩展,适用于Php5.2/Php5.3/Php5.4 本文介绍如何在Windows下配置php扩展. 本文链接 http://blog.csdn. ...
- linux下mysql的远程连接
在服务器上安装mysql后,想使用本地的mysql客户端连接数据库时,提示不允许连接,比较郁闷,找到了这篇文章解决了我的问题: 内容如下: 本地计算机ip:192.168.1.100远程计算机ip:1 ...
- ASP.Net MVC请求处理流程
ASP.Net MVC请求处理流程 好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人& ...