Shell的输入与输出
一。echo
1.echo命令可以显示文本行或变量,或者把字符串输入到文件
2.echo[options]string
-e解析转义字符
-n回车不换行,Linux系统默认回车换行
转义符(\c \f \t \n)
3.#!/bin/bash
#echod
echo -e"this echo's 3 new lines\n\n\n"
echo "OK"
echo
echo "this echo's 3 new lines\n\n\n"
echo "the log files have all been done">mylogfile.txt
二。read
1.read语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量
2.read variable1 variable2...
如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车;如果给出了多个变量,他们按顺序分别被赋予不同的变量,Shell将用空格作为变量间的分隔
3.#!/bin/bash
#readname
echo -n "first name:"
read firstname
echo -n "last name:"
read lastname subname
echo -e "your first name is:$firstname\n"
echo -e"your last name is:${lastname}\n"
echo -e"your subname is:${subname}\n"
三。Cat
1.Cat可以用来显示文件内容、创建文件、还可以用来显示控制字符
2.cat[options]filename1...filename2..
-v显示控制字符
使用Cat命令时要注意,它不会在文件分页符处停下来,它会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或把Cat命令的输出通过管道传递到另外一个具有分页功能的命令(more,less)中。
3.man cat
4.cat myfile
cat myfile1 myfile2 myfile3
cat myfile1 myfile2 myfile3>myfile123
cat -v dos.txt
cat ls.txt|more
less ls.txt
四。管道
1.可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用|表示
2.格式:命令1|命令2
3.cat myfile|more
ls -l|grep "myfile"
df -k|awk `{print $1}`|grep-v "Filesystem"
五。tee
1.tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中
2.tee -a files
如果希望在看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了
一般用于管道之后
-a追加到文件原内容的尾部,如没有此选项则覆盖原内容
3.who|tee -a who.out
df-k|awk `{print $1}`|grep -v "filesystem"|tee partatition.txt
六。标准输入、输出和错误
1.在Shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,Shell同时也给出了相应的文件名
2.
输入文件--标准输入 0(缺省为屏幕,也可以为文件)
输出文件--标准输出 1(缺省是键盘,可以是文件或其他命令的输出)
错误输出文件--标准错误 2(缺省是屏幕,也可以是文件)
3.系统中实际上有12个文件描述符,可以任意使用文件描述符3到9
七。文件重定向
1.改变程序运行的输入来源和输出地点
command>filename把标准输出重定向到一个新文件
command>>filename把标准输出重定向到一个文件中(追加)
command 1>filename把标准输出重定向到一个文件中
command>filename 2>&1把标准输出和标准错误一起重定向到一个文件中
command 2>filename把标准错误重定向到一个文件中
command2>>filename把标准错误重定向到一个文件中(追加)
command>>filename 2>&1把标准错误和标准输出一起重定向到一个文件中(追加)
commandfilename2 command命令从filename文件作为标准输入,以filename2文件作为标准输出
command
command<
command<&m把文件描述符m作为标准输入
command>&m把标准重定向到文件描述符m中
command<&-关闭标准输入
2.重定向标准输出
cat file|sort 1>sort.out
cat file|sort>sort.out
pwd>>path.out
>nullfile.txt创建一个字节为0的文件
重定向标准输入
sort
sortname.out
分隔符
cat >>term.txt<
>...
>...
>AA
重定向标准错误
grep "trident" missiles
grep "trident" missiles 2>err_message.txt
八。结合使用标准输出和标准错误
1.cat account_new.txt account_old.txt |>accounts.out 2>accounts.err
2.合并标准输出和标准错误的时候,切记shell是从左至右分析相应的命令。
grep "standard" standard.txt >grep.out 2>&1
九。exec
1.exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境变量都将会被清除,并重新启动一个shell。
2.exec command
其中的command通常是一个shell脚本
3.对文件描述符进行操作的时候(也只有在这时)他不会覆盖你当前的shell
exec helloworld.sh 将重启一个新的shell
十。文件描述符
1.3-9文件描述符可为我们使用
2.exec与文件描述符的结合
#!/bin/bash
#file_desc
exec 3<&0 0
read line1
read line2
exec 0<&3 关闭3描述符
echo $line1
echo $line2
阅读(1080) | 评论(0) | 转发(0) |