命令行快捷 - 文件通配符扩展
通配符扩展
* 匹配0或者多个字符
? 匹配任意单个字符
[0-9] 匹配0-9范围内的数字
[abc] 匹配该列表内的任意字符
[^abc] 匹配除列表内字符外的所有字符
历史命令技巧
使用ctrl+r搜索历史命令
!$ 仅调用出上一个命令
命令行扩展
命令扩展:$()和``
echo "this system's name is $(hostname)"或者使用`hostname`和$(hostname)相似
大括号扩展:
重复打印字符串
echo file{1,2,3}输出结果为file1 file2 file3
创建shell脚本
步骤1:创建一个包含命令的文本文件
#!/bin/bash
步骤2:赋予脚本可执行权限
chmod a+x myscript.sh
标准的输入输出:
linux给应用程序提供的三种I/O通道
标准输入(stdin) 默认为键盘盘
标准输出(stdout) 默认为终端窗口
标准错误(stderr) 默认为终端窗口
重定向输出到文件:
标准输出和标准错误能被重定向到文件
-command operator filename
支持操作包括:
> 重定向标准输出到文件
2> 重定向错误到文件
&>重定向所有输出到文件
在重定向时,缺省是覆盖文件内容 >>符号追加
重定向标准输出给一个应用程序(管道):
管道(| 字符)能连接命令
command1|command2
传送command1的标准输出给command的标准输入,而不输出到屏幕
重定向标准输出到一个程序-示例
less:cat /etc/passwd | less
mail:发送输入通过email
echo “test email” | mail -s hello visen@test.com
结合输出和错误
&> 重定向所有的输出
2>&1 重定向stderr到stdout
示例:find /etc -name passwd 2>&1 | less
() 结合多个应用程序的stdout
(cal 2007;cal 2008) |less
发送多行到stdin
使用<<word 从键盘重定向多行到stdin
mail -s "please read" visen@test.com <<END
>HI Visen,
>
>please read the mail
>END
脚本:for 循环
示例:
for NAME in joe jane julie
do
ADDRESS=$NAME@test.com
MESSAGE='Projects are due today!'
echo $MESSAGE | mail -s Reminder $ADDRESS
done
for 循环 - 续
也可以使用命令输出和文件列表
for num in $(seq 1 10)
给$num 赋值1-10
seq X Y 打印从X到Y
for file in *.txt
把.txt文件名赋值给$file