Shell脚本编程之常用命令4

原文链接: https://www.runoob.com/linux/linux-shell.html

shell 重定向

command > file	将输出重定向到 file。
command < file	将输入重定向到 file。
command >> file	将输出以追加的方式重定向到 file。
n > file	将文件描述符为 n 的文件重定向到 file。
n >> file	将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m	将输出文件 m 和 n 合并。
n <& m	将输入文件 m 和 n 合并。
<< tag	将开始标记 tag 和结束标记 tag 之间的内容作为输入

输出重定向

重定向一般通过在命令间插入特地的符号来实现

command1 > file 

执行命令1然后将输出的内容存入fiel1.
注意file中的所有内容都会被新的内容取代。如果需要将新的内容添加到file的文件末尾,
请使用 >> 操作符

实例

$ touch users //新建users文件
$ touch test.sh //新建脚本文件
$ vim users
#!/bin/bash
who > users
cat users
$ chmod +x test.sh 
$ ./test.sh 

输出结果

ali      tty7         2019-09-19 17:43 (:0)

输出重定向覆盖原来的内容

#!/bin/bash
who > users
echo "test" > users
cat users

$ ./test.sh 

输出结果

test

输出内容在文件末尾追加

#!/bin/bash
who > users
echo "test" >> users
cat users

输出结果

ali      tty7         2019-09-19 17:43 (:0)
test

输入重定向

comm1 < file1

这样本来需要从键盘获取输入的命令会转移到文件读取内容
注意输出重定向是 大于号>,输入重定向是小于号<

实例
文件aa 中有四行字母

wc -l < aa
4

重定向深入讲解
一般情况下Unix/linux命令运行的时候都会打开三个文件
标准输入 stdin 文件描述符为 0 Unix程序默认从stdin读取数据
标准输出 stdout 文件描述符为 1 Unix程序默认向stdout输出数据
标准错误文件 stderr 文件描述符为2 Unix程序将stderr流中写入错误信息

扫描二维码关注公众号,回复: 7570181 查看本文章

如果希望把 stderr 重定向到file,可以这样写

$ command 2 > file

追加

$ command 2 >> file

如果希望将stdout和stderr合并后重定向到file,可以这样写

$ command > file 2>&1

或者

$ command >> file 2>&1

Here Document

是Shell中的一种特殊的重定向方式,用来将输入重定向到一个交互式Shell脚本或
程序。
基本形式

command << delimiter
	dcument
delimiter

它的作用是将两个delimiter 之间的内容(document)作为输入传递给command.
注意
结尾的delimiter一定需要定格写,前面不能有任何字符,后面也不能以任何字符
包括空格和tab缩进
开始的delimiter前后的空格会被忽略

实例在命令行中通过wc -l 命令计算出 Here Document 的行数

$ wc -l << EOF
	你好
	哈哈哈
	www.xxx.com
EOF
3 # 输出结果为3行
$

也可以写到脚本中

#!/bin/bash

wc -l << EOF
	你好
	哈哈哈
	www.xxx.com
EOF

输出结果

你好
	哈哈哈
	www.xxx.com

/dev/null文件

如果希望执行某个命令,但是又不希望在屏幕上显示输出结果,那么可以把输出
重定向到/dev/null

格式

command > /dev/null

/dev/null是一个特殊的文件,写入到它的内容都会被丢弃,如果尝试从里面读取内容什么吔读取不到的
但是/dev/null 非常有用,如果把输出重定向到它,会起到禁止输出的效果。

例如屏蔽stdout stderr

command > /dev/null 2>&1

ls > /dev/null 2>&1

Shell 文件包含

和其他语言一样Shell也可以包含外部脚本,这样很方便的封装一些公用的代码作为一个独立的文件
语法格式如下:
. filename # 点号(.)和文件名中间有一空格
或者
sources filename

实例
创建两个Shell脚本文件
test1.sh 代码如下:

#!/bin/bash

url="subusu.com"

test2.sh

#!/bin/bash
#使用 . 号来引用test1.sh
. ./tset1.sh

#或者使用以下包含文件代码
# source ./test1.sh

echo "无效网址址:$url"

test1.sh test2.sh 添加权限,其中被包含的文件不需要可执行权限

执行结果如下

无效网址址:subusu.com

Shell编程的基本语法可以完成了,接下来就是认真看书啦。

猜你喜欢

转载自blog.csdn.net/weixin_44880138/article/details/101034420