标准输入输出

1、输出命令

echo

View Code
#!/bin/bash
#echo命令可以显示文本行或变量,或者把字符串输入到文件
#-e 解析转义
#\c 不换行
#\t 跳格
#\n 换行

echo -e "enter your name:\c"
read name
echo "$name"
echo -n "welcome boobooke"
echo -e "welcome b\toobooke"
echo -e "welcome boobooke\n"

read 

View Code
#!/bin/bash
echo -e "your first name:\c"
read first
echo -e "your middle name:\c"
read middle
echo -e "your last name:\c"
read last

cat

cat file | more

cat file1 fiel2 > file

|       命令1 | 命令2

       ls | grep ini

管道:是一个命令的标准输出与另一个命令的标准输入之间的连接,不经过任何中间文件

管道线:是由管道操作符分割的一个命令序列,最简单的管道线是一个简单命令

管道操作符:用符号"|"表示

View Code
[arcerzhang@DG3 shell]$ name="hi arcerzhang i love you"
[arcerzhang@DG3 shell]$ echo $name
hi arcerzhang i love you
[arcerzhang@DG3 shell]$ echo $name | awk '{print $1 "\t" $2}'
hi      arcerzhang
[arcerzhang@DG3 shell]$ echo $name | awk '{print $1 "\t" $2 "\t" $3}'
hi      arcerzhang      i
[arcerzhang@DG3 shell]$ echo $name | awk '{print $1 "\t" $2 "\t" $3 "\t" $4 "\t" $5}'
hi      arcerzhang      i       love    you
[arcerzhang@DG3 shell]$
统计查询结果
过滤IP信息
View Code
获取IP地址信息
#!/bin/bash
ip_info_a=`ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | grep -v "192.168.122.1" | awk '{print $2}' | awk -F ':' '{print $2}'`;
echo "pattern a:当前计算机的IP地址是:$ip_info_a"
#使用$()代替``
ip_info_b=$(ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | grep -v "192.168.122.1" | awk '{print $2}' | awk -F ':' '{print $2}');
echo "pattern b:当前计算机的IP地址是:$ip_info_b"
~

查询指定的文件是否存在,给出相应信息

View Code

标准I/O

重定向

1、标准输入、输出和错误

标准输入

  标准输入是文件描述符0.它是命令的输入,缺省是键盘

标准输出

  标准输出是文件描述符1.它是命令的输出,缺省是屏幕,也可以是文件.

标准错误

  标准错误时文件描述符2

2、文件重定向

[arcerzhang@DG3 shell]$ ls *
arcerzhang.log  b.txt    c.txt     hello.sh   operator.sh  read.sh    while.sh  who.txt
a.txt           case.sh  echo.sh   in_out.sh  param.sh     test.sh    who.out
boobooke.info   cmd.sh   file.out  ipinfo.sh  random.sh    while1.sh  who.t
[arcerzhang@DG3 shell]$ ls -a*
ls:无效选项 -- *
请尝试执行"ls --help"来获取更多信息。
[arcerzhang@DG3 shell]$ ls a*
arcerzhang.log  a.txt
[arcerzhang@DG3 shell]$ ls z*
ls: 无法访问z*: 没有那个文件或目录
[arcerzhang@DG3 shell]$ ls z* 2> erro.log
[arcerzhang@DG3 shell]$ cat erro.log
ls: 无法访问z*: 没有那个文件或目录
[arcerzhang@DG3 shell]$

cmd >filename          把标准输出重定向到一个新文件中

cmd >>filename         把标准输出重定向到一个文件中(追加)

cmd 1> filename           把标准输出重定向到一个文件中

cmd >filename 2>&1       把标准输出和标准错误输出一起重定向到一个文件中

cmd 2>filename            把标准错误重定向到一个文件中

cmd 2>>filename 2>&1       把标准错输出,标准错误输出都重定向到一个文件中(追加)

cmd < filename          把cmd命令以filename文件作为标准输入

cmd < ABC               从标准输入中读入,直至遇到ABC分界符

cmd <&m             把文件描述符m作为标准输入

cmd >&m             把标准输出重定向到文件描述符m中

cmd <&-               关闭标准输入

参考文章 

原文地址:https://www.cnblogs.com/arcer/p/2993148.html