shell基础五:输入和输出(echo,read,cat,管道,te..
时间:2006-06-19 来源:aixcq
输入和输出(echo,read,cat,管道,tee,重定向等)
我下面的所有环境都在在REDHAT LINUX9下试验的
在LINUX中,要使转义符生效,需加参数-e
从echo的变量开始说起
如:e c h o命令输出转义符以及变量。
代码: |
# echo -e "\007your home is $HOME , you are connected on `tty`" |
引用: |
本例中 |
在e c h o命令输出之后附加换行,可以使用\ n选项:
代码: |
$ cat echod |
编辑一个新echod,如上内容,然后运行输出如下:
代码: |
$ ./echod |
在e c h o语句中使用跳格符,记住别忘了加反斜杠\:
代码: |
$ echo -e "here is a tab\there are two tabs\t\tok" |
把一个字符串输出到文件中,使用重定向符号>。
在下面的例子中一个字符串被重定向到一个名为m y f i l e的文件中:
代码: |
$ echo "The log files have all been done"> myfile |
或者可以追加到一个文件的末尾,这意味着不覆盖原有的内容:
代码: |
$ echo "$LOGNAME carried them out at `date`">>myfile |
现在让我们看一下m y f i l e文件中的内容:
引用: |
The log files have all been done |
引号是一个特殊字符,所以必须要使用反斜杠\来使s h e l l忽略它的特殊含义。
假设你希望使用e c h o命令输出这样的字符串:“/ d e v / r m t 0”,那么我们只要在引号前面加上反斜杠\即可:
代码: |
$ echo "\"/dev/rmt0"\" |
其它用法:
--〉'echo'用法收集
http://bbs.chinaunix.net/forum/viewtopic.php?t=424904
ANSI控制码
http://bbs.chinaunix.net/forum/viewtopic.php?t=207837&highlight=%B7%C9%BB%D2%B3%C8
_________________
cat:显示文件内容,创建文件,还可以用它来显示控制字符。
注意:在文件分页符处不会停下来;会一下显示完整个文件。因此,可以使用m o r e命令或把c a t命令的输出通过管道传递到另外一个具有分页功能的命令中,使用命令less file可实现相同的功能。
如下形式
代码: |
$ cat myfile | more |
c a t命令的一般形式为:
代码: |
cat [options] filename1 ... filename2 ... |
1、显示名为m y f i l e的文件:
代码: |
$ cat myfile |
2、显示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 |
3、创建一个包含上述三个文件的内容,名为b i g f i l e的文件,可以用输出重定向到新文件中:
代码: |
$ cat myfile1 myfile2 myfile3 > bigfile |
4、如果cat的命令行中没有参数,输入的每一行都立刻被cat命令输出到屏幕上,输入完毕后按< C T R L - D >结束
代码: |
$ cat |
5、新建文件
代码: |
$cat >myfile |
cat:参数选项
使用方式:
代码: |
cat [-AbeEnstTuv] [--help] [--version] fileName |
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
引用: |
-n 或 --number 由 1 开始对所有输出的行数编号 |
例:
显示时加上行号
代码: |
$cp /etc/httpd/conf/httpd /usr/sam |
把 httpd.conf 的内容加上行号后输入 httpd1.conf 这个文件里
代码: |
$cat -n httpd.conf > httpd1.conf |
对文件httpd.conf加上行号(空白不加)后显示
代码: |
$ cat -b httpd.conf |
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
代码: |
$ cat -b textfile1 textfile2 >> textfile3 |
清空/etc/test.txt档案内容
代码: |
$cat /dev/null > /etc/test.txt |
使用 sed 与 cat 除去空白行
代码: |
$ cat -s /etc/X11/XF86Config | sed '/^[[:space:]]*$/d' |
-s项我试了一下,不成功,不知是不是用错了
其它参数来自:(这个我没试)
http://bbs.chinaunix.net/forum/viewtopic.php?t=438463&highlight=cat
cat 还可以在您查看包含如制表符这样的非打印字符的文件时起帮助作用。您可以用以下选项来显示制表符:
引用: |
* -T 将制表符显示为 ^I |
显示非打印字符
代码: |
$ cat -t /etc/X11/XF86Config |
代码: |
$ cat -E /etc/X11/XF86Config |
代码: |
$ cat -v /etc/X11/XF86Config |
_________________
寂寞烈火 写到: |
cat我常用: |
cat -n 应该还可以吧
tee:读取标准输入的数据,并将其内容输出成文件。
语 法:tee [-ai][--help][--version][文件…]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。
参 数:-a 附加到既有文件的面,而非覆盖它。如果给予tee指令的文件名称已经存在,预设会覆盖该文件的内容。加上此参数,数据会新增在该文件内容的最面,而不会删除原先之内容。
-i 忽略中断信号
--help 在线帮助
--version 显示版本信息
例一:
列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1、ss-copy2、ss-copy3:
代码: |
$ cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3 |
例一: 把列出当前目录,并把结果结到myfile里
代码: |
$ls -l |tee myfile |
管道:可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。它的一般形式为:
代码: |
命令1 |命令2 |
上例就是
_________________
标准输入、输出和错误
当我们在s h e l l中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆, s h e l l同时也给出了相应的文件名。
下面就是这些文件描述符及它们通常所对应的文件名:
引用: |
文件文件描述符 |
如果没有特别指定文件说明符,命令将使用缺省的文件说明符(你的屏幕,更确切地说是你的终端)。
系统中实际上有1 2个文件描述符,但是正如我们在上表中所看到的, 0、1、2是标准输入、输出和错误。可以任意使用文件描述符3到9。
在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。表5 - 1列出了最常用的重定向组合,并给出了相应的文件描述符。
在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。
代码: |
常用文件重定向命令 |
例子
[转载]常用文件重定向命令 (这篇网中人的回复好精彩啊^-^)
http://bbs.chinaunix.net/forum/viewtopic.php?t=191375
关于>&2、2>&1等重定向的详细解释!
http://bbs.chinaunix.net/forum/viewtopic.php?t=16361
转贴:UNIX管道和重定向功能在系统备份中的妙用
http://www.chinaunix.net/forum/viewtopic.php?t=17925