shell的输入与输出

shell的输入与输出

echo

命令

echo string
# echo命令输出转义符以及变量,如$HOME,并且可以让系统执行tty命令
echo "\007your home dictionary is $HOME ,you are connected on 'tty'"
# \c不换行 在Linux中要使用-n来禁止换行
echo -n "..."
# \f进纸
# \t跳格
# \n换行

read

功能

  • 可以从键盘或文件的某一行中读入信息,并将其赋予给一个变量。
  • shell将空格作为变量之间的分割。
  • 可以采用每个read只给一个变量赋值的方法来让输入输出变得更加清晰。

命令

read varible1 varible2 ...

# example1
read name
echo $name

# example2
read name1 name2
echo $name1
echo $name2

# example3
echo "First Name:\c"
read name1
echo "Second Name:\c"
read name2

cat命令

功能

  • cat是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。
  • 如果希望每次只显示一页,可以用more命令。

命令

cat [options] filename1 ... filename2 ...
# options
# -v用于显示控制符
cat -v file

# 每次只希望显示一页
cat myfile | more

# 同时显示三个文件的内容
cat file1 file2 file3

# 创建一个包含三个文件内容的的file文件
cat file1 file2 file3 > file

# 创建一个新文件并向其中输入一些内容
cat file
# 输入this is great!<CTRL+D>结束输入
  • 如果在敲入了cat以后就直接按回车,该命令会等你输入字符。
  • 如果你本来就是要输入一些字符,那么它除了会在你输入时在屏幕上显示以外,还会再回显这些内容;最后按结束输入即可。

管道

功能

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

命令

sed、awk和grep都很适合用管道

cmd1 | cmd2
# 通过管道把cmd1的输出传递给cmd2作为输入

# ls列出的文件传给grep命令,grep命令再在其中寻找quarter1.doc文件
ls | grep quarter1.doc

tee 命令

功能

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

命令

可以让不同的命令使用同一个日志文件,不过不要忘记使用 -a选项。

tee -a files
#-a表示追加到文件末尾。

# 将who的输出内容写到who.out中
who | tee who.out

# 让不同的命令输入到同一个日志文件中
sort myfile | tee -a acc.log
myscript | tee -a acc.log

标准输入,输出,错误

exec命令

功能

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

命令

exec cmd
  • exec在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的shell。
  • 用&来找到文件描述符指向的目标文件
#!/bin/sh
# f_desc

exec 4<&0 0<stock.txt
read line1
read line2
exec 0<&4 # 作为标准输入的文件描述符4被关闭
echo $line1
echo $line2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值