linux 重定向、exec实现访问百度主页

文件描述符

0  输入流
1  正确输出流
2  报错输出

重定向和文件描述符之间不能有空格

输出流:

重定向(>>,追加模式)
ls -l /  1>>ls.txt    将根目录输出到ls.txt文件

覆盖重定向(>)
ls -l /  1> ls.txt    将etc中的内容输出到ls.txt文件并覆盖原文件内容


报错输出
ls -l /god   因为没有这个文件,会输出错误信息
ls -l /god 2>ls02.txt    将此错误信息输出到ls02.txt文件中,文件内容为ls: cannot access /god: No such file or directory

将标准输出和错误输出都输入到文件中

方法一: 写到不同文件
ls -l   /     /god    1>ls03.txt     2>ls04.txt      文件描述符要对应标准输出和错误输出的文件,不能打乱顺序

方法二: 写到相同文件
ls -l /  /god  1>ls05.txt  2>>ls05.txt     将一种重定向改为追加模式

方法三:将文件描述符指向另一个文件描述符
文件描述符有方向性,会从左往右依次执行
ls  -l  /  /god  1>ls07.txt  2>&1        &舍弃,bash会将1解释成文件,所以要添加上

ls -l /  /god  2>&1  1>ls07.txt      从左到右执行,会先将错误输出指向标准输出,而此时标准输出指向屏幕,所以会将错误输出打印到屏幕上

方法四:
ls  -l  /   /god  >&   ls07.txt    将错误输出和标准输出都输出到一个文件,也可以将>&变成&>

输入流(read):

打开一个输入并阻塞,等待用户输入(read),对换行符敏感
read sxt     会阻塞,等待输入到变量sxt中,enter键结束

<<<后接待输入内容
read sxt  0<<<"hello"      将字符串放到程序的输入流里

<<后接输入停止符,加了双引号则以双引号内的内容为停止符,未加则以该符串未输入停止符
只会输入第一次换行前的内容

read sxt 0<<ox     ox为输出停止符
read sxt 0<<"ox"   ox为输出停止符

<后接文件
read sxt 0<h.txt    将文件中第一个换行符前的内容输入到变量sxt中
在循环中,read读取输入流时,才会逐行读取,如果是文件,将只会读取第一行

兼备输入输出流(cat)

cat会将停止符之间的内容输出到屏幕,对换行符不敏感

cat 0<<ox
adad
ada
ad
ox

cat 0<h.txt    将文件中的内容输出到屏幕

exec

将一个程序覆盖当前进程,即将此程序压栈,如果程序执行完是退出,则会让内核触发,将整个进程销毁,断开连接

访问百度

1、exec   8<>  /dev/tcp/www.baidu.com/80
-8  文件描述符,可换成其他自定义数字
-<> 重定向操作符,输入输出
-/dev/tcp/www.baidu.com/80  虚拟文件系统
当前bash里面多了一个8号文件描述符,指向了一个socket, /dev/tcp/www.baidu.com/80为特殊目录,触发一个内核
机制,让bash发起了对百度socket的连接

2、http协议请求头
echo -e "GET / HTTP/1.0\n"      -e使得bash能识别换行符
将请求头发送到百度服务器
echo -e "GET/HTTP/1.0\n" 1>&8
读取响应信息
cat 0<&8
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值