Shell应用技巧
一、输入输出重定向
2. 输出重定向:`命令>文件名`
```bash
将命令的的结果输出到file文件中,> 覆盖原文件,>> 追加输出
cat /etc/password>file
cat /etc/password>>file
- 错误重定向:
命令 2>文件名
!!运算符&使用:表示等同于gcc -c hello.c -o hello 2>err_file
gcc -c hello.c -o hello 2>>err_file
2>&1表示将标准错误的输出重定向到指定的标准输出文件
二、管道
作用:连接多个命令。将一个命令的输出作为另一个命令的输入
命令1|命令2|...|命令n
输出etc目录下包含init关键字的文件的详细信息
ls -l /etc | grep init
<=>
ls -l /etc > temp.txt
grep init < temp.txt
三、命令连接符
作用:一次性输入多条shell指令,让操作自动执行
- ; 连接符
使用;连接符间隔的命令会按照先后次序依次执行
tar -xzvf gdb-7.11.1.tar.gz;cd gdb-7.11.1;./configure;make;make install;gdb -v
- && 连接符
只有前面命令执行成功,后面命令才执行
- || 连接符
只有后面命令执行失败时,后面命令才执行
!!! 四、文本提取器命令
未测试成功
将文本按指定分隔符分割,并从分割结果中提取出置顶项
awk [-F分隔符1] '{print $1["分隔符2"]$2}'
awk -F: '{print $1" "$3}' /etc/passwd
Shell编程
脚本执行方式
作为可执行文件
- 先提升文件权限
- 再直接执行
root@hu:~/Shell_learn # chmod +x first
root@hu:~/Shell_learn # ./first
将脚本文件作为参数,通过Shell解释器对其进行解析
root@hu:~/Shell_learn # sh first
变量定义
- 使用前无需定义
- 使用=赋值,前后不能有空格
- 含空格的字符串赋值,使用单双引号括起来
**readonly 变量名**
设置只读变量
- 变量引用
- 使用$引用变量
- 双引号引起来的字符串有变量的引用,会输出变量存储的值
- 单引号引起来的字符串有变量的引用,原样输出变量名
shell变量常见引用
$var
返回变量值${#var}
返回变量长度- …
- 变量输入
read 变量名
- 变量分类
1) 环境变量
- 永久变量;可用于所有的用户进程
- 变量全部大写
- 使用expoer定义或设定
export 变量名
export 变量名=值
2) 位置变量
执行脚本时传入脚本对应位置的变量
$0表示脚本命令
$1 $2 等表示脚本的第一个、第二个参数
#!/bin/sh
echo "number of vars:"$#
echo "name of shell script:"$0
echo "first var:"$1
echo "second var:"$2
echo "third var:"$3
exit 0
3)标准变量
bash环境建立时生成的环境变量;该变量自动解析
查看系统标准环境变量
**cat /etc/profile**
查看系统环境变量:环境变量和标准变量
**env**
4)特殊变量
- 变量运算
let 表达式