bash-Linux:关于标准输出的疑问?

问题描述

Linux:关于标准输出的疑问?

创建文件xxxx,文件内容为字符串"Hello World"

 [root@localhost ~]# cat xxxx // 从文件获取标准输入
Hello World
[root@localhost ~]# cat < xxxx // 从文件获取标准输入
Hello World
[root@localhost ~]# cat // 发生阻塞,从键盘获取标准输入
Hello World
Hello World

但为什么使用tee时会阻塞呢?

 [root@localhost ~]# tee xxxx // 发生阻塞
[root@localhost home]# tee < xxxx // 从文件获取标准输入
Hello World

1、cat xxxx、cat < xxxx两种方式有什么区别吗?

2、预期效果是将xxxx的内容作为标准输入传给tee,再通过标准输出显示出来,但却发生了阻塞,通过man cat、man tee没看出为什么会产生这样的差别。

cat:连接stdin内容输出到stdout
tee:读取stdin内容输出到stdout
两个小疑惑:)

解决方案

cat xxxx、cat < xxxx,前者是从文件读取,后者是从输入读取,区别在于后者输入的重定向
tee 命令是将标准输入拷贝到文件或标准输出
tee test.txt,会将你输入的内容存进text.txt文件顺便输出到屏幕上,所以会阻塞,等待输入
tee < test.txt,输入重定向,文件就成了标准输入
多看看命令的帮助信息就OK

时间: 2024-09-19 09:36:50

bash-Linux:关于标准输出的疑问?的相关文章

script_tool_for_linux.bash: Linux 环境下的 hosts 一键部署脚本_linux shell

Linux 环境下的 hosts 一键部署脚本,由 @lstoars 贡献; @fluviusmagnus 提供增强版本. 官方网站:https://github.com/racaljk/hosts/tree/master/hosts_tools #!/bin/sh # # script_tool_for_linux # # Use command: `sudo sh script_tool_for_linux.sh` or # `su -c 'sh script_tool_for_linux.

linux下Bash中将字符串拆分成数组例子

split string to array in bash 和AS中的String.split不同,Bash没有类似的语法,但它实在是太灵活了,有很多种方式可以做类似的事情. 今天使用Bash做文件处理的时候,发现有必要再写一篇将字符串拆分成数组的教程.但发现有人已经写了更好的教程在前面了,于是就偷懒转过来好了. 下面的内容转自Bash @ Linux 以空白作为分隔符来拆分字符串构造数组 ARR=($STR) 注意$STR不能加引号. STR="Hello World" ARR=($

Linux Shell脚本编程初体验_linux shell

通常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并且自动化,我们可以使用shell脚本. 某些编程语言,像

java-linux bash脚本编写问题

问题描述 linux bash脚本编写问题 我想要实现linux后台运行jar 于是编写了脚本: exec java -Xms128m -Xmx2048m -jar /var/www/JavaWork/BidCheck.jar 5 >pid.log 这里是保存进程到文件pid.log 让进程id保存在文件,但是运行我这个jar需要参数 /workspace 完整的java执行命令如下:java -Xms128m -Xmx2048m -jar /var/www/JavaWork/BidCheck.

Red Flag Linux Desktop 6.0用户手册:管理用户和用户组

8.3.1概述 在 Linux系统中,对每个用户都有一个帐号,系统对每个用户保存如下信息: 信息点 信息点描述 用户名 系统中用来标识用户的名称,可以是字母.数字组成的字符串,区分 大小写 用户标识 UID 系统中用来标识用户的数字 用户主目录 系统为每个用户配置了单独的使用环境,即用户登录系统后昀初所在的目录,用户的文件都放置在此目录下 登录 shell 用户登录后启动,以接收用户的输入并执行输入相应命令的程序,如/bin/bash. /bin/csh 用户组/组群 具有相似属性的多个用户被分

linux系统adduser(useradd)添加用户相关的命令

1.adduser 添加用户.需要 root 权限才可以执行哦. 1.作用 useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 一般用法: sudo adduser testuser  这样就会添加一个 testuser的用户. 2.passw

Linux的版本

First of all, it is worth mentioning that Linux is not the only option available; other freely available operating systems include the BSDs (FreeBSD, NetBSD, OpenBSD), Solaris Express, Nexenta, and others. However, there are many GNU/Linux distributi

Linux Shell的类别

The Bourne Shell When Unix was first born, it had a very basic shell written by Ken Thompson, one of the creators of Unix. The Bourne shell was written by Steve Bourne in 1979 as a scriptable Unix shell. All other shells have a prefix to qualify whic

Linux shell multifile content replace with sed

#!/bin/bash # Linux shell multifile content replace with sed # 声明: # 本源代码主要是利用两份(中.英文)具有相同键值对的json数据,对html内的中文进行 # 自动化文本替换的代码. # # 2015-11-20 晴 深圳 南山平山村 曾剑锋 # 得到中文部分 sed -n "/\"/p" SimpChinese.txt | grep -Po -e "\"\s?:\s?.*"