Shell学习4-shell输入与输出
时间:2010-07-12 来源:soqsoq
Shell学习4-shell输入与输出
2010.06
1.文件名置换
* 匹配文件名中的任何字符串,包括空字符串。
? 匹配文件名中的任何单个字符。
[...] 匹配[ ]中所包含的任何字符。
[!...] 匹配[ ]中非感叹号!之后的字符。
列出了以 i或o开头的文件名:
ls [io]*
为了匹配所有以l o g .开头、后面跟随一个数字、然后可以是任意字符串的文件名,可以用
l o g . [ 0 - 9 ] *,其中[ 0 - 9 ]表示任意单个数字,星号*代表了其他字符:
ls log.[0-9]*
使用 [ ! 0 - 9 ] *来表示非数字开头的字符串,其中 !是非的意思:
ls log.[!0-9]*
2.echo
echo string
e c h o命令有很多功能,其中最常用的是下面几个:
\c 不换行。
\f 进纸。
\t 跳格。
\n 换行。
如果希望提示符出现在输出的字符串之后,可以用:
echo “what is your name:\c”
如果想在输出字符之后,让光标移到下一行,可以用:
Echo “what is you name:”
如果是LINUX系统,那么......
必须使用- n选项来禁止echo命令输出后换行:
$ echo -n "What is your name :"
必须使用-e选项才能使转义符生效:
echo –e “\007your home directory is $HOME, you are connect on `tty`”
如果想把一个字符串输出到文件中,使用重定向符号 >。
$ echo "The log files have all been done"> myfile
或者可以追加到一个文件的末尾,这意味着不覆盖原有的内容:
$ echo "$LOGNAME carried them out at `date`">>myfile
3.read
可以使用r e a d语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么 r e a d将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。
它的一般形式为:
read varible1 varible2 ...
如果输入文本域过长,Shell 将所有的超长部分赋予最后一个变量。下面的例子,假定要
取变量名字和姓,但这次输入三个名字;结果如下;
$read name surname
John Lemon Doe
$echo name
John
$echo surname
Lemon Doe
3.cat
c a t是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示
控制字符。在使用c a t命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文件。如果希望每次显示一页,可以使用 m o r e命令或把c a t命令的输出通过管道传递到另外一个具有分页功能的命令中,请看下面的例子:
$ cat myfile | more
或
$ cat myfile | pg
c a t命令的一般形式为:
cat [options] filename1 ... filename2 ...
c a t命令最有用的选项就是:
-v 显示控制字符
如果希望显示m y f i l e 1、m y f i l e 2、m y f i l e 3这三个文件,可以用:
$ cat myfile1 myfile2 myfile3
如果希望创建一个名为b i g f i l e的文件,该文件包含上述三个文件的内容,可以把上面命令的输出重定向到新文件中:
$ cat myfile1 myfile2 myfile3 > bigfile
如果希望创建一个新文件,并向其中输入一些内容,只需使用 c a t命令把标准输出重定向
到该文件中,这时 c a t命令的输入是标准输入—键盘,你输入一些文字,输入完毕后按
< C T R L - D >结束输入。这真是一个非常简单的文字编辑器!
$cat > myfile
This is great
<ctrl+d>
4.管道
可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠 |表示。它的一
般形式为:
命令1 |命令2
其中|是管道符号。
5.tee
t e e命令作用可以用字母 T来形象地表示。它把输出的一个副本输送到标准输出,另一个
副本拷贝到相应的文件中。如果希望在看到输出的同时,也将其存入一个文件,那么这个命
令再合适不过了。
它的一般形式为:
tee -a files
其中,- a表示追加到文件末尾。
$who | tee –a who.out
6.标准输入、输出、错误
文 件 文件描述符
输入文件—标准输入 0
输出文件—标准输出 1
错误输出文件—标准错误 2
标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
标准错误是文件描述符2。这是命令错误的输出,缺省是屏幕,同样也可以是文件。你可
能会问,为什么会有一个专门针对错误的特殊文件?这是由于很多人喜欢把错误单独保存到
一个文件中,特别是在处理大的数据文件时,可能会产生很多错误。
7.文件重定向
command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中 (追加)
command < filename >filename2 把c o m m a n d命令以f i l e n a m e文件作为标准输入,以 f i l e n a m e 2文件作为标准输出
command < filename 把c o m m a n d命令以f i l e n a m e文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到d e l i m i t e r分界符
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command <&- 把关闭标准输入