您的位置:首页 > 运维架构 > Shell

Shell学习笔记

2015-10-15 16:02 429 查看
单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`。

$(( ))整数运算 

$( ) 命令替换,类似``

${ } 变量替换

$# 参数个数

$@,$* 都表示全部参数($0除外)

find 

-perm:按照文件权限来查找文件。

-mtime -n +n : -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。

-newer file1 ! file2:查找更改时间比文件file1新但比文件file2旧的文件

-type 查找某一类型的文件

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

xargs 

作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

cron和crontab

c r o n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。c r o n t a b命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个c r o n t a b文件来保存调度信息。可以使用它运行任意一个s h e l l脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的c r o n t a b文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过c r o n . d e n y和c r o n
. a l l o w这两个文件来禁止或允许用户拥有自己的c r o n t a b文件。

c r o n t a b的格式:

分< >时< >日< >月< >星期< >要运行的命令

30 21 * * * /apps/bin/cleanup.sh

表示每晚的2 1 : 3 0运行/ a p p s / b i n目录下的c l e a n u p . s h

&命令

在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。

不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

command >out.file 2>&1 &

2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

nohup

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用n o h u p命令。该命令可以在你退出帐户之后继续运行相应的进程。N o h u p就是不挂起的意思( no hang up)。

awk [-F fild-separator] 'commands' input-file(s)

AWK一次处理是一行, 而一次中处理的最小单位是一个区域

另外还有3个变量, NF: 每一行处理的字段数, NR 目前处理到第几行, FS 目前的分隔符

$ awk 'BEGIN {print "Name\n--------"}{print $1} END {print "end-of-report"}' grade.txt

${#var[@]} 

返回数组元素的个数

mv $i  ${i%sh}shell 

${i%sh} —— 拿掉$i最后的“sh”

awk内建变量示例详解之NR、FNR、NF

  NR表示从awk开始执行后,按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数,NR可以理解为Number of Record的缩写。

  在awk处理多个输入文件的时候,在处理完第一个文件后,NR并不会从1开始,而是继续累加,因此就出现了FNR,每当处理一个新文件的时候,FNR就从1开始计数,FNR可以理解为File Number of Record。

  NF表示目前的记录被分割的字段的数目,NF可以理解为Number of Field。

vi复制一行:yy

粘贴:p

删除一行:dd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: