<Linux Shell脚本攻略>书摘

因为近几个项目都是基于Linux 平台,于是开始持续关注linux shell 和linux系统管理相关的知识,平时除了阅读在线的博客来汲取这方面的知识,也努力看一些书籍来完善知识体系,而这本<Linux Shell脚本攻略>是个人觉得比较实用的一本shell脚本教材,作者在其中分门别类的记录了各种解决实际的脚本,命令。就像英文原版书名所写,这是一本cookbook,像菜谱,拿来照着步骤做一做,能解决不少常见的实际问题。

这里仅摘录一些个人在使用中经常会翻开书看一看的tips,相信以后用多了自然就记住了。


1. 用shell 进行数学运算

十进制的加法是很简单明了的,但是要告诉shell 我需要一个变量,并且这个变量是两个数值变量的和,则不是像其他语言直接上来var=1+1 就能得到预期结果。

在shell环境中,可以利用let ,(())以及[] 来执行基本的算术操作,而在高级操作时,则需要用到expr 和bc 这两个工具。

当我们在shell 输入n1=4; n2=5时, 它实际存储的是两个字符串,当你试图使用n3=$n1+$n2来获得一个加和时,你仅仅会得到一个字符串 “4+5”,这显然不是我们想要的结果。

而let 可以用来执行基本的算术操作,例如 let n3=n1+n2; echo $n3, 你可能已经注意到,在let 表达式里,我们不需要用$符号来引用n1和n2.

又如自加和自减操作: let n1++; let n1--

[]的操作与let命令类似,例如 res=$[n1+n2] ; 在[ ]中也可以使用$ 前缀: res=$[$n1+$n2]

在使用(()) 时,变量名前必须加上$: res=$(($n1+$n2))


2.一些小命令

拼接文件: cat file1 file2 file3
压缩连续的空白行: cat -s file
删除空白行: tr -s '\n'

用find 命令在查找文件时,经常因为条件太少,例如只提供一个文件名来搜索,导致搜索时间太长,返回的结果太多而失去意义。这里列出常用的一些:

否定参数 ! : find . ! -name "*.txt" -print 所有非txt的文件

基于目录深度的搜索: -maxdepth -mindepth

根据文件时间进行搜索: -atime -mtime -ctime

find . -type f -atime -7 -print 七天内被访问过的

find . -type f -atime 7 -print  在七天前访问过的

find . -type f -atime +7 -print 访问时间超过7天的

-amin -mmin -cmin 是基于分钟为计量单位的

-newer 查找比某文件修改时间更长的文件


基于文件大小的搜索:

-size 

find . -type f -size +2k 大于2kb的文件


删除匹配的文件 -delete

find . -type f -name "*.swp" -delete


以文件权限进行匹配:

find -type -f -perm 644 -print


打印出用户slynux 拥有的文件

find . -type f -user slynux -print



结合find 执行命令或动作 -exec

find . -type f -user root -exec chown slynux {} \;



切换用户执行命令 :用su,当我们需要以其他身份执行 command,或者shell脚本,一般命令如下:

a. 切换用户只执行一条命令的可以用:  su - oracle -c your_command

b. 切换用户执行一个shell文件可以用:su - oracle -s /bin/bash your_shell.sh


使用pushd /popd 快速定位路径, dirs  查看栈内容,从0 开始编号,去相应目录只需要 pushd +num  , 而popd +num 可以移除相应的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值