Shell师徒西天取经----第六天Shell的重定向和文件包含

一、Shell和大多是的编程语言都一样都有输出输入重定向。

#!/bin/bash
:<<EOF
	Shell的输入输出重定向
	常用命令:
		command>file	将输出重定向到file
		command>>file	将输出以追加的方式重定向到file
		command<file	将输入重定向到file
		n > file	将文件描述为n的文件重定向到file 
		n >> file	将文件描述为n的文件以追加的形式重定向daofile
		n > & m		将输出文件m和n合并
		n < & m		将输入文件m和n合并
		<< tag		将开始标记为tag和结束标记之间的内容作为输入
	文件描述:
		0通常时标准的输入,1是标准的输出,2是标准的错误输出
EOF

# 输出重定向
command1 > file1

# 查询输出重定向在文件夹中
$ who > users	# 执行后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的文件。

# 输入重定向
command1 < file1

# 统计文件行数
$wc -1 filename		# filename为统计的文件名

# 使用wc将输入重定向到文件中
$ wc -1 < filename

# 将一个文件的输出输入到另一个文件中
command1 < infilename1 > outfilename		# infilename为输入文件名,outfilename为输出文件名

:<<EOF

重定向深入讲解:
	一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
    		标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    		标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    		标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
	默认情况下,command > filename 将 stdout 重定向到 file,command < filename 将stdin重定向到 filename。
EOF

# 如果希望 stderr 重定向到 filename,可以这样写
$ command 2 > filename


# 如果希望 stderr 追加到 filename 文件末尾,可以这样写
$ command 2 > filename


# 表示标准错误文件(stderr)
# 如果希望将 stdout 和 stderr 合并后重定向到 filename

$ command > filename 2>&1 		# command >> filename 2>&1 

# 如果希望对 stdin 和 stdout 都重定向,可以这样写
$ command < filename1 >filename2


:<<EOF
	Shell高级重定向方式Here Document,用于将输入重定向到一个交互式Shell脚本或程序		
	command << delimiter
		document
	delimiter
	
	作用是将两个delimter之间的内容作为输出传递给command
	*
	    结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
   	    开始的delimiter前后的空格会被忽略掉。
EOF
# 在命令行中通过 wc -l 命令计算 Here Document 的行数
$ wc -1 <<EOF
	xiaobai
	SHELL
	HELOO Liunx
EOF

# 命令行输出 3

cat << EOF
	欢迎学习SHELL
	小白学习SHELL
EOF

# 命令行输出: 欢迎学习SHELL
#             小白学习SHELL


# 如果不需要输出在屏幕上那么我们可以用 $ command > /dev/null
:<<EOF
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;
	如果尝试从该文件读取内容,那么什么也读不到。
	但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效
EOF

# 如果希望屏蔽stdout和stderr
$ command > /dev/null 2>&1

有一部分命令在命令行窗口执行

二、shell文件包含,其它编程语言叫引入。例如:python、java、php、C#、C++、C等编程语言

#!/bin/bash
:<<EOF
	SHELL文件包含
	和其它语言一样,Shell也可以包含外部脚本。这样方便封装一些公用代码作为一个独立文件
	. filename	# 注意点号(.)和文件名中间有一空格
	或者
	source filename
EOF
:<<EOF
	./test.sh
	name="Shell"
EOF

. ./test.sh		# 引入test文件
# 或者使用source ./test.sh

echo "Hello ${name}"
发布了32 篇原创文章 · 获赞 7 · 访问量 7748

猜你喜欢

转载自blog.csdn.net/adim__/article/details/105245252
今日推荐