Questions tagged «stdin»

stdin是进程的默认输入文件描述符的名称。由于“ stdin”确实没有什么特别的,所以您*不应该*使用该标签。使用[io-redirection]标记来询问有关如何重定向输入的问题,使用[file-descriptor]来解决有关如何管理文件描述符的问题,使用[lock]来解决文件锁定的问题,以及使用[files]来解决有关以下问题的一般性问题:文件操作。

4
Bash:交互式远程提示
我有一个脚本可以连接到远程服务器,并检查是否安装了某些软件包: ssh root@server 'bash -s' < myscript.sh myscript.sh: OUT=`rpm -qa | grep ntpdate` if [ "$OUT" != "" ] ; then echo "ntpdate already installed" else yum install $1 fi 这个例子可以简化。这是myscript2.sh同样的问题: read -p "Package is not installed. Do you want to install it (y/n)?" choise 我的问题是bash无法以交互方式读取我的答案。 有没有一种方法可以远程执行本地脚本而不丢失提示用户的能力?
16 bash  shell-script  ssh  stdin  read 

1
vimdiff比较输出而不是文件
我正在尝试比较两个命令输出(无文件) vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)" 我尝试过使用重定向,管道,vim - -c但是我必须缺少一些东西。有人可以帮忙吗?
15 vim  stdout  stdin  vimdiff 

4
通过将字符串放入tty来构建命令
我设法做到了 echo -n“ 命令 ”> / dev / tty1 出现字母,并且光标移动,但是它们是“鬼”-如果您单击Enter,则什么也不会发生(它们不在stdin中)。 编辑: 在下面的屏幕截图的中间,您会看到为什么我会看到此用法。(带有红色标题的行,位于带有黄色标题的行的正下方。)到现在为止,您实际上并不是在“编辑”注释文本。只是要求您编写一个新文本,它将替换您(不是真的)正在编辑的笔记的文本。因此,我认为可以通过简单地将旧文本粘贴到tty中来解决:如果用户按下回车键,则不会进行任何修改。(该程序在Perl / MySQL中,但是我认为寻求一个通用的解决方案比“在Perl中如何做到”更有趣。) 编辑2: 这是Perl代码,它使用下面的C代码(完全按预期工作)以及一个新的屏幕快照–希望这可以澄清一切:)再次,请看屏幕快照的中间,进行编辑便笺文本-这次是旧文本,例如,如果您只想修正输入错误,则无需重新输入整个便笺文本。 my $edit_note_text = $edit_note_data[2]; print BOLD, RED, " new text: ", RESET; system("writevt /dev/tty \"$edit_note_text\""); my $new_text = <$in>; $new_text = fix_input($new_text); my $set_text = "UPDATE notes SET note = \"$new_text\" WHERE id = …
15 tty  io  stdin 

1
后台进程管道输入
如果我想在屏幕上显示“ aaa”: (1)$: echo aaa | cat ... works OK (2)$: echo aaa | ( cat ) ... works OK (3)$: echo aaa | ( cat & ) ... NOT working (4)$: ( echo aaa & ) | cat ... works OK (5)$: echo aaa | ( cat <&0 & …

2
Bash:进程替换和标准输入
以下行很明显: echo "bla" | foo | bar 但是下面的那些也一样吗? echo "bla" | bar <(foo) echo "bla" | bar < <(foo) 其中foo,并bar从标准,为什么读“喇嘛”? 我的意思是,我当然可以对其进行编码和检查,但是我不确定它是否是已定义的行为,或者我是否在利用我不应该依赖的功能。

3
回显或打印/ dev / stdin / dev / stdout / dev / stderr
我想打印/ dev / stdin,/ dev / stdout和/ dev / stderr的值。 这是我的简单脚本: #!/bin/bash echo your stdin is : $(</dev/stdin) echo your stdout is : $(</dev/stdout) echo your stderr is : $(</dev/stderr) 我使用以下管道: [root@localhost home]# ls | ./myscript.sh [root@localhost home]# testerr | ./myscript.sh $(</dev/stdin)似乎只起作用,我还在人们使用的其他一些问题上发现:"${1-/dev/stdin}"尝试失败。

1
如何将HTML传送到lynx?
我正在从控制台测试一些ajax调用。我喜欢摆脱HTML标记的元信息干扰,而只是读取内容,因此我喜欢将其通过管道传输到终端浏览器,例如lynx。 然而: curl www.google.de | lynx 只是打开一个新的天猫实例。 我不想: curl www.google.de > someFile.html && lynx someFile.html
11 pipe  curl  html  stdin  lynx 

4
从命名管道获取标准输入
我想做的是在终端窗口中运行python,并从命名管道重定向它的stdin。然后,我在另一个终端中写入命名管道,并在python上执行该命令。 1号航站楼: mkfifo p1 python < p1 2号航站楼: echo -n "print \"Hello World\"" > p1 发生的是-python打印Hello World并退出。我想做的是保持python运行以接受下一条命令。如何在外壳中执行此操作?

2
连接STDOUT和STDIN是什么意思?
我正在读一本书,上面写着: 每个过程至少具有三个可用的通信通道:“标准输入”(STDIN),“标准输出”(STDOUT)和“标准错误”(STDERR)。 大多数命令接受来自STDIN的输入,并将其输出写入STDOUT。他们将错误消息写入STDERR。该约定使您可以像构建模块一样将命令串在一起以创建复合管道。 Shell将符号<,>和解释>>为将命令的输入或输出重新路由到文件或从文件重新路由的指令。 要将一个命令的STDOUT连接到另一个命令的STDIN,请使用| 通常称为管道的符号。 ps -ef | grep httpd 因此,基本上说的是,标准输入是允许用户写入文件的命令,而标准输出是具有bash shell将输出写入到shell的命令,而标准错误就像输出,但仅文件系统出错时调用。然后我们进入连接STDOUT和STDIN的部分,我迷路了。

2
Bash函数接受参数或管道的输入
我想以一种可以接受参数或管道输入的方式编写以下bash函数: b64decode() { echo "$1" | base64 --decode; echo } 所需用法: $ b64decode "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ b64decode < file.txt $ b64decode <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" | b64decode
10 bash  pipe  function  stdin 

2
将stdin和stdout重定向到端口
我想要一个程序P,该程序可以从stdin&读取和写入stdout,但可以将其连接到nc或从任何端口读取并输出到另一个端口的任何程序。 # The reading is easy, here P reads from port 50505 nc -l 50505 | P 我该如何写回端口60606?

2
bash文件重定向到标准版本与Linux上的shell(`sh`)有何不同?
我编写了一个脚本,该脚本在运行时切换用户,并使用文件重定向到standard in来执行该脚本user-switch.sh。 #!/bin/bash whoami sudo su -l root whoami 并运行它bash给了我期望的行为 $ bash < user-switch.sh vagrant root 但是,如果我使用运行脚本,则会sh得到不同的输出 $ sh < user-switch.sh vagrant vagrant 为什么bash < user-switch.sh给出的输出不同于sh < user-switch.sh? 笔记: 发生在运行Debian Jessie的两个不同盒子上

2
通过管道输入到纳米
为什么要ls | nano -在Ubuntu 中打开编辑器,然后关闭编辑器并将文件保存到-.saveCentOS中? 阅读stdin时如何在CentOS中使nano保持打开状态?
9 ubuntu  centos  stdin  nano 

3
如何从shell中检查stdin是否为/ dev / null?
在Linux上,shell脚本是否可以检查其标准输入是否从空设备(1,3)*重定向,理想情况下不读取任何内容? 预期的行为将是: ./checkstdinnull -> no ./checkstdinnull < /dev/null -> yes echo -n | ./checkstdinnull -> no EDIT mknod secretunknownname c 1 3 exec 6<secretunknownname rm secretunknownname ./checkstdinnull <&6 -> yes 我怀疑我“只是”需要读取输入设备的maj / min号。但是我找不到从外壳执行此操作的方法。 *没有必要/dev/null,但是任何空设备,即使使用手动创建也是如此mknod。
9 linux  shell  devices  stdin 

4
如何获得stdin的大小?
我要压缩一个大目录,并且我想知道结果文件的大小。 我试过使用du: $ tar -cv dir | du -h - du: cannot access '-': No such file or directory 然后,我尝试使用文件版本“-”: $ tar -cv dir | du -h /dev/stdin 1.0K 我确定这个数字不正确。如何获得stdin的大小?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.