shell输入与输出

简要:

echo、read、cat、管道(|)、tee、exec

文件重定向,标准输入、输出和错误,合并标准输出和标准错误,使用文件描述符


3.1echo

echo命令可以显示文本行或变量或者把字符串输入到文件

echo [option] string

-e解析转义字符

-n回车不换行,Linux系统默认回车换行

转义字符(\c,\f,\t,\n)

例子:

#!/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


3.2read

read语句可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量

read variable1variable2 。。。

-如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直到遇到第一个文件结束符或回车;如果给出了多个变量,他们按顺序分别被赋予不同的变量。shell将用空格作为变量之间的分隔符。

例子:

#!/bin/bash
#readname
echo -n "First name:"
read firstname
echo -n "Last name:"
read lastname
echo -e "Your first name is :${firstname}\n"
echo -e "Your last name is :${lastname}\n"

#!/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"

3.3cat

cat是一个简单而通用的命令,可以用它来显示文件内容、创建文件,还可以用它来显示控制字符。

cat [option]filename1 ... filename2 ...

- -v显示控制字符

-使用cat命令时注意,它不会再文件分页处停下来;他会一下显示完整个文件。如果希望每次显示一页,可以使用more命令或吧cat命令的输出通过管道传递到另一个具有分页功能的命令(more,less)中。

-man cat

例子:

cat myfile
cat myfile1 myfile2 myfile3
cat myfile1 myfile2 myfile3 >myfile
cat -v dos.txt


3.4管道(|)

管道就是把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。

格式:命令1|命令2

cat myfile |more
ls -l |grep "myfile"
df -k |awk '{print $1}' |grep -v "Filesystem"




3.5tee

tee命令吧输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。

tee -a files

-如果希望看到输出的同时,也将其存入一个文件,那么这个命令再合适不过了。

-一般用于管道之后

例子:

who|tee -a who.out
df -k|awk '{print $1}' |grep -v "Filesystem" |tee partation.txt


36.标准输入、输出和错误

在shell中执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。

文件 文件描述符

输入文件-标准输入 0(缺省是屏幕,也可以是文件)

输出文件-标准输出 1(缺省是键盘,也可以说是文件或其他命令的输出)

错误输出文件-标准错误 2(缺省是屏幕,也可以是文件)


系统中实际上有12个文件描述符,可以任意使用文件描述符3到9

3.7文件重定向

改变程序运行的输入来源和输出地点

command >filename 吧标准输出从定向到一个新文件中

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

command 1> filename  吧标准输出从定向到一个新文件中

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

command 2>filename 吧标注吗错误重定向到一个文件中

command 2 >> filename 吧标准输出重定向到一个文件中(追加)

command>>filename 2>&1 吧标准输出和标准错误一起从定向到一个文件中(追加)

command< filename > filename2 command命令以filename文件作为标准输入,以filename2文件作为标准输出

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

command << delimiter 从标准输入中读入,直至遇到的厘米特然分界符

command <&m 吧文件描述符m作为标准输入

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

command<& 关闭标准输入

例子:

cat file |sort 1>sort.out
cat file |sort >sort.out
pwd >> path.out
>nullfile.txt

sort<file
sort<name.txt>name.out

重定向标准错误


合并标准输出和标准输入

合并标准输出和标准输入的时候,切记shell是从左至右分析相应的命令

grep "standard" standard.txt >grep.out 2>&1
3.9exec

exec命令可以用来替代当前shell;换句话说,并没有启动子shell,使用这一命令时任何现有环境都将会被清除,并重新启动一个shell

exec command

其中的command通常是一个shell脚本

对文件描述符进行操作的时候(也只有在这时)。它不会覆盖你当前的shell

3.10文件描述符

3-9文件描述符

exec与文件描述符的结合

#!/bin/bash
#file_desc
exec 3<&0 0<name.txt
read line1
read line2
exec 0<&3
echo $line1
echo $line2





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiluohan0307

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值