Linux – shell输入与输出

在shell脚本中,可以用几种不同的方式读入数据,可以使用键盘标准输入,也可以指定一个文件作为输入。也可以使用标准终端屏幕输出,还可以使用文件作为输出。

 

echo

使用此命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:

echo string

echo命令有很多功能,其中最常用的是下面几个:

\c :不换行

\f :进纸

\t :跳格

\n :换行

在shell中必须要使用反斜杠\来使shell忽略它的特殊含义。

 

read

可以使用read从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。

它的一般形式为:

read varible1 varible2

如果我们将三个单词读入两个变量,第一个单词将被赋给第一个变量,但由于变量词少于单词数,字符串后面的部分将被全部赋给第二个变量。

 

cat

cat是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。cat不会在文件分页符处停下来,它会一次显示完整个文件。但我们可以使用more或者把cat的命令的输出通过管道传递给另外一个具有分页功能的命令。

例如cat myfile | more, cat myfile | pg

cat 的一般形式为:

cat [options] filename1 … filename2 …

-v 显示控制字符

cat 支持重定向命令 >

 

管道

我们可以通过管道把一个命令的输出传递给另一个命令作为输入。管道的一般形式为:

命令1 | 命令2

例如ls | grep quarter1.doc

 

sed、awk和grep都很适合用管道。比如:who| awk ‘{print $1”\t” $2}’,这个例子中who命令的输出通过管道传递给awk命令,以便只显示用户名和所在的终端。

 

tee

tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。我们可以使用它在看到输出的同时,将其存入一个文件。

一般形式为:tee –a files

-a : 表示追加到文件末尾

我们可以用下面的命令在使用who命令将结果输出到屏幕上的同时,将结果保存在who.out文件。

 

标准输入,输出和错误

我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件扫描符来引用这些文件。

 

 

文件重定向

在执行命令时,我们可以指定命令的标准输入,输出和错误。

 

 

exec

exec命令可以用来替代当前shell,即并没有启动shell。

它的一般形式为exec command