总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程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脚本攻略的更多相关文章

  1. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

  2. linux shell脚本攻略笔记

    前一阵子系统学习了下<linux shell脚本攻略>这本书.在此记录下自己的学习笔记 1. 输出颜色字符  echo -e "\e[1:41m" 1表示背景色   2 ...

  3. 【链接】LINUX SHELL脚本攻略笔记[速查]

    LINUX SHELL脚本攻略笔记[速查]

  4. LINUX SHELL脚本攻略笔记[速查]

    Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...

  5. Linux Shell脚本攻略

    -Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...

  6. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

  7. Linux shell 脚本攻略之统计文件的行数、单词数和字符数

    摘自:<Linux shell 脚本攻略>

  8. Linux shell 脚本攻略之创建不可修改文件

    摘自:<Linux shell 脚本攻略>

  9. Linux shell 脚本攻略之生成任意大小的文件

    摘自:<Linux shell 脚本攻略>

随机推荐

  1. How to have matlab tic toc in C++?

    Reprinted form: https://stackoverflow.com/questions/13485266/how-to-have-matlab-tic-toc-in-c/1348558 ...

  2. Lua 中的 function、closure、upvalue

    Lua 中的 function.closure.upvalue function,local,upvalue,closure 参考: Lua基础 语句 lua学习笔记之Lua的function.clo ...

  3. recv,recvfrom,send,sendto

    一般情况下:send(),recv()用于TCP,sendto()及recvfrom()用于UDP 但是send(),recv()也可以用于UDP,sendto()及recvfrom()也可以用于TC ...

  4. TVD$XTAT在linux下安装使用详解

    扩展跟踪文件分析工具 (TVD$XTAT)是个命令行工具.和TKPROF一样,主要目的是把原始跟踪文件作为输入内容生成一个格式化的文件作为输出内容.输出文件可以是HTML或是文本文件.界面非常友好,推 ...

  5. 微信支付 WeixinJSBridge is not defined 报错

    https://www.cnblogs.com/ottoman/p/7614419.html 我没有用到微信JS-SDK或者接口都正确返回预支付id都正确, 为什么会报这个错呢?答: 微信内置浏览器会 ...

  6. bzoj2212

    题解: 线段树合并 比较一下哪一种方案的逆序对少 代码: #include<bits/stdc++.h> using namespace std; ; typedef long long ...

  7. 安装Ubuntu之后的配置

    经常装系统或者给人装系统,这些配置还是记一下,方便恢复到以前的环境 删除libreoffice sudo apt-get remove libreoffice-common 删除Amazon的链接 s ...

  8. Python 编程核心知识体系-基础|数据类型|控制流(一)

    Python知识体系思维导图: 基础知识 数据类型 1.序列 2.字符串 3.列表和元组 4.字典和集合 循环 & 判断

  9. 『转』Kaspersky Internet Security for Android &KMS – 免费6个月

    卡巴越南的活动,需要注册账户,完成小调查,24小时内发送激活码,激活码3个月内有效.建议用谷歌翻译下网站.KIS for Android 的激活码也通用于 Kaspersky Mobile Secur ...

  10. 201621123010《Java程序设计》第3周学习总结

    1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你认 ...