管道:将一个命令的输出作为一个命令的输入
只会重定向正确的输出信息
> :覆盖重定向
>> :追加重定向
不管是错误还是正确的输出信息都会重定向
&>
&>>
只重定向错误信息
2>
2>>
bash中三种引用:
1. "":弱引用
test ="aaaaa"
echo "hello $test"
输出结果 hello aaaaa
2. '':强引用
test ="aaaaa"
echo 'hello $test'
输出结果 hello $test
3. ``:命令引用, 范围内的命令会执行
echo `more /etc/passwd`
$的用法总结:
$0 参数前的命令本身
$1、$2、$n 获取第n个参数
$# 参数的个数
$* 获取所有的参数
$@ 是传给脚本的所有参数的列表
$$ 是当前运行的进程ID号
$! 是上一个运行的进程ID号
$? 显示最后命令的退出状态,0表示没有错误,其他表示有错误
$() $[] 是执行里面的代码得到的结果
${} 是引用变量的标准用法,比如${a}; $a是简写
${array[index]} 引用数组元素
${#array[*]} ${#array[@]} 数组的长度
$RANDOM 随机数
a = "world" ${a:2:2} 对字符串切片,结果是rl
a = "world" ${a: -2} 注意冒号之后有空格 取字符串最后两个字符,结果是ld
变量赋值:
${var:-word}: 如果var为空或未设置,那么返回word;否则,则返回var中的值;
${var:=word}:如果var为空或未设置,那么返回word,并且将word赋值给var;否则,返回var中的值;
${var:?err_info}:如果var为空或未设置,那么返回错误信息;否则,则返回var自身的值;
${var:+word}:如果var自身有正常数据,则返回word;
为脚本使用配置文件:
写个脚本,配置etc目录;
(1) 在配置文件中定义变量;
(2) 在脚本中source配置文件;
注意:在字符串比较时,操作符两端得有空格;
trap命令:
trap 'arg' SIGNAL
当收到信号SIGNAL时,执行''中的命令
信号1: 产生挂断,要么有人故意挂断线路或线路被意外断开。
信号2: 序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl C)时发出。
例如:
#trap 'rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2 当程序挂断或收到ctrl-c命令时清楚工作空间下的相关文件
#trap '' 1 2 当程序收到1 2信号时,继续执行
参考
http://www.ibm.com/developerworks/cn/aix/library/au-usingtraps/
http://man.linuxde.net/trap
cut
-d 定义分割符
-f 定义要显示的那一列
du 显示文件大小
-sh filename 显示文件大小
-h path 显示目录下每个文件的大小
uniq 去除文件中重复的行(仅去除相邻的重复行,去除不相邻的重复行要先使用sort排序)
-c 在输出行前面加上每行在输入文件中出现的次数。
-d 仅显示重复行。
-u 仅显示不重复的行。
例:去除文件中重复的行,不相邻的也能去除
# cat filename | sort | uniq -c
sort 对文件的行排序,默认按字符排序
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
例: 对/etc/passwd中的uid排序
# sort -t : -k 3 -n /etc/passwd | cut -d : -f 3 或
# sort -t: -k3 -n /etc/passwd | cut -d: -f3
head 显示前n行
-c 显示字节数
-n 显示的行数
-行数 (-n 行数 的简写)
例: 对/etc/passwd中的uid排序,显示前3行
# sort -t: -k3 -n /etc/passwd | cut -d: -f3 | head -3
tail 显示后n行
-f 监听文件是否有新的写入
-n 行数
-行数(-n 行数 的简写)
例: 对/etc/passwd中的uid排序,显示后3行
# sort -t: -k3 -n /etc/passwd | cut -d: -f3 | tail -3
wc 统计文件中的行数、单词数和字节数
- c 统计字节数。
- l 统计行数。
- w 统计单词数。
date
如果需要以指定的格式显示日期,可以使用“+”开头的字符串指定其格式,详细格式如下:
%n : 下一行
%t : 跳格
%H : 小时(00-23)
%I : 小时(01-12)
%k : 小时(0-23)
%l : 小时(1-12)
%M : 分钟(00-59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00-60)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
%a : 星期几 (Sun-Sat)
%A : 星期几 (Sunday-Saturday)
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%c : 直接显示日期与时间
%d : 日 (01-31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001-366)
%m : 月份 (01-12)
%U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0-6)
%W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000-9999)
实例:
# date "+%Y-%m-%d %H:%M:%S"
# date "+%Y-%m-%d %H:%M:%S " -d "-3 year" 此刻往前推三年
# date "+%Y-%m-%d %H:%M:%S " -d "+3 month" 此刻往后推三月
# date "+%Y-%m-%d %H:%M:%S " -d "+10 day"
# date -s "2010-08-09 10:10:10" 设置系统时间
相关推荐
### 高级Bash编程知识点概述 #### 一、引言 本教程旨在为初学者提供一条通往高级Bash编程的道路。它不仅适用于自学,也是课堂教学的理想材料,尤其是在教授编程概念方面。通过丰富的实例和练习,读者将逐步掌握...
### bash编程实例:基础知识与应用场景 #### 一、Shell与Bash简介 Shell是一种命令解释器,也是操作系统内核与用户之间的桥梁。它不仅能够解释并执行用户输入的命令,而且还是一种强大的编程语言。通过创建一系列...
但如果你已经具备相关编程经验,则可以更快地掌握中高级的Shell编程技巧。 书中的内容被分为多个部分,每个部分都侧重于不同的学习主题。首先,它解释了为什么需要使用Shell编程以及如何通过Sha-Bang(#!)来调用...
高级bash编程 高级Bash脚本编程指南(一) 目录 ++++ 第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊...
**高级Bash编程指南——由Mendel Cooper撰写** Bash(Bourne-Again SHell)是Linux和Unix系统中最常用...Mendel Cooper的教程虽然年代较早,但其涵盖的基本原理和技巧至今依然适用,是Bash编程者不可多得的参考资料。
在深入了解高级技巧之前,了解Bash的基础是必要的。Bash支持变量、条件语句、循环、函数等基本编程结构。例如,可以定义变量`VAR="hello"`,并在脚本中使用`echo $VAR`来打印它。Bash中的条件测试可以使用`[[ ... ]]...
33.7. 各种小技巧 33.8. 安全话题 33.8.1. 被感染的脚本 33.8.2. 隐藏Shell 脚本源码 33.9. 移植话题 33.10. 在Windows 下进行Shell 编程 34. Bash, 版本 2 和 3 34.1. Bash, 版本2 34.2. Bash, 版本3 35. ...
### Linux中高效编写Bash脚本的9个技巧 #### 1. 在脚本中多写注释 注释在任何编程语言中都是至关重要的,它们帮助开发者理解代码的功能和目的。在Bash脚本中,注释同样非常重要,尤其是在团队环境中或者当你未来...
33.7. 各种小技巧 33.8. 安全话题 33.8.1. 被感染的脚本 33.8.2. 隐藏Shell 脚本源码 33.9. 移植话题 33.10. 在Windows 下进行Shell 编程 34. Bash, 版本 2 和 3 34.1. Bash, 版本2 34.2. Bash, 版本3 35. 后记 35.1...
《高级Bash脚本编程指南》是一份专为学习Bash脚本编程的详细教程,旨在帮助初学者从基础开始,逐步掌握高级的脚本编写技巧。Bash(Bourne-Again SHell)是Linux操作系统中最常用的命令行解释器,用于编写控制系统的...
- **使用小窍门**:给出实用的小技巧,帮助提高工作效率。 - **注意事项**:提醒读者注意常见的错误和陷阱。 ##### 4. 特别说明 - **制作环境**:文档是在特定的环境下编辑完成的,包括使用的软件和工具。 - **...