io-redirection

将脚本的标准输出重定向为 tmux 会话中运行的另一个脚本/命令的标准输入
io-redirection

将脚本的标准输出重定向为 tmux 会话中运行的另一个脚本/命令的标准输入

我正在适应马库斯·穆勒的回答 我上周问的一个问题 - 一个脚本,它将其标准输出重定向到 tmux 会话,以渲染 ANSI 转义序列,然后捕获窗格渲染作为脚本的真实输出。我知道它根本没有用,因为您可以将其直接打印到标准输出并获得相同的结果,但这只是一个演示,可以将代码带到一个更大的项目,更复杂的解释,我需要这个功能: #!/bin/zsh tmpdir="$(mktemp -d)" fifo="${tmpdir}/fifo" mkfifo "$fifo" tmux new-session -d -s aux "while true; do cat ${fif...

Admin

子 shell 关闭后,子 shell 内的重定向仍然存在
io-redirection

子 shell 关闭后,子 shell 内的重定向仍然存在

没有和有空运行时,下面的脚本分别按 A 和 B 的预期执行。 A 的空运行时出现问题:输出被抑制,就好像1>/dev/null在空运行后仍然存在一样。有人可以解释并解决问题吗? function baz() { local file="$1"; shift # dry run local err=$(source "$file" "$@" 2>&1 1>/dev/null) [[ -z $err ]] || { echo "Exiting"; return 1; } # live run ...

Admin

如何捕获子进程的输出?
io-redirection

如何捕获子进程的输出?

我试图捕捉 sftp 的密码提示,但不知何故它不是来自 STDIN 或 STDERR。它可能来自子流程。 以下是我的测试。我尝试将密码提示重定向到文件。我尝试了文件句柄号 1 到 4。但没有成功。 mypc:/home/myname$ sftp localhost >/tmp/junk myname@localhost's password: mypc:/home/myname$ sftp localhost 2>/tmp/junk myname@localhost's password: mypc:/home/myname$ sftp lo...

Admin

从终端读取输入的脚本。如果使用 stdout 重定向调用脚本,如何告诉脚本打印到 tty 和 stdout?
io-redirection

从终端读取输入的脚本。如果使用 stdout 重定向调用脚本,如何告诉脚本打印到 tty 和 stdout?

我有一个脚本要求用户在终端中输入,因此,如果使用重定向到文件的 stdout 调用脚本,则用户在提示符上没有上下文。所以我想将标准输出复制到两个站点。 该脚本输出一个微积分,因此允许 stdout 重定向仍然有意义。 但是如果提供了 stdin(类似于 yes 命令或非交互式上下文,如 cron),则完全允许输出在 tty 中不需要是有意义的。 所以我想做一些类似的逻辑: If (test -t 0 && ! test -t 1); // Tell stdout to print everything to tty as well 这...

Admin

标准输入流重定向
io-redirection

标准输入流重定向

stdin:一般标准输入,简称stdin,来自键盘。 stdin当您输入内容时,您是在(标准输入终端)上输入的。标准输入设备,通常是键盘,但 Linux 也允许您从文件中获取标准输入。 例如: cat < myfirstscript 这将告诉cat从文件myfirstscript而不是从键盘获取输入(这当然与:相同cat myfirstscript)。 本质上,这可以归结为该命令 ( ) 的输入cat不再来自预期的位置(键盘),而是来自文件。 我很困惑:它本来应该来自(键盘),但现在来自文件。 当你在键盘上输入一个文件时(比如:)cat myfir...

Admin

python 脚本的输出就像在交互模式下输入的一样
io-redirection

python 脚本的输出就像在交互模式下输入的一样

我有一个 python 文件,我想获取输出,就像我在交互模式下输入内容一样(就像这个问题https://stackoverflow.com/q/59008423但使用 shell 脚本) 我尝试使用这个 shell 脚本script.sh # script.sh #!/bin/sh printf "print(\"one\")\nprint(\"two\")\n" | tee /dev/fd/3 | python -i 1>/dev/fd/3 2>/dev/fd/3 并运行 $ sh script.sh 3>&1 并得到输出 p...

Admin

Bash 的“set -v”不会将大括号内的命令回显到标准输出
io-redirection

Bash 的“set -v”不会将大括号内的命令回显到标准输出

我有以下测试脚本: # test.bash #---------- { set -v # Echoes the following 3 parameters DELAY_MS=2000 SCALING=false VERBOSE=false set +v echo TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST } 2>&1 | tee test.bash.out 它设置 3 个变量并回显一行TEST...

Admin

为“exec >>(tee -ia $OUT)”创建选项以跳过标准输出
io-redirection

为“exec >>(tee -ia $OUT)”创建选项以跳过标准输出

我试图调整使用以下内容的脚本: # first portion of script # ... exec > >(tee -ia $OUT) # ... # second portion of script 我对这个脚本的问题是它会向stdout(我的终端)产生大量输出。脚本作者没有包含消除终端输出的选项。我想添加一个选项删除stdout, 并仅在文件 中获取输出$OUT。 这是我尝试过的: TERM_OPT="OFF" # first portion of script # ... if [ $TERM_OPT != "OFF" ]; ...

Admin

ffmpeg 将 stdout 和 stderr 重定向到每个文件,并以正确的顺序重定向到另一个文件
io-redirection

ffmpeg 将 stdout 和 stderr 重定向到每个文件,并以正确的顺序重定向到另一个文件

运行一个简单的ffmpeg命令: ffmpeg -i in.avi out.mp4 -loglevel info 我想要以下结果: stdout对两者stdout.log和both.log stderr对两者stderr.log和both.log 同样重要的是,该过程没有任何延迟,因此错误行位于标准输出中间的正确位置。 我尝试过类似的方法但不起作用: ffmpeg -i in.avi out.mp4 1>(tee stdout.log >>both.log) 2>(tee stderr.log >>both.log) ...

Admin

检查我对 Bash 中的操作顺序是否正确
io-redirection

检查我对 Bash 中的操作顺序是否正确

古腾标签!我在所有与 Bash 相关的事情上都是菜鸟。我正在熟悉语法,并且想知道该命令中的操作顺序是否如我所想。 命令: echo 2 * 3 > 5 is a valid inequality来自 Cameron Newham 的 Learning The Bash Shell 我相信顺序如下: echo被解释 2被读取并缓冲 *被解释,并且搜索被初始化 当前文件夹中的每个匹配文件都会附加到缓冲区 3被读取并缓冲 > 5被解释,并5创建一个新文件,并且还重定向输出 is被读取并缓冲 a被读取并缓冲 valid被读取并缓冲 inequality...

Admin

您能否使 nohup.out 仅在出现错误时创建,而不手动指定文件名?
io-redirection

您能否使 nohup.out 仅在出现错误时创建,而不手动指定文件名?

您可以使(在后台nohup ./file $1 $2 &运行)仅创建错误而不创建标准输出吗?./filenohup.out 但请不要手动指定nohup.outie nohup ./file $1 $2 >/dev/null 2>nohup.out & 此外,以下状态nohup: redirecting stderr to stdout和重定向既不输出也不重定向错误。我认为这是因为它告诉它将错误重定向到输出,但输出被重定向到 /dev/null: nohup ./file $1 $2 >/dev/null & ...

Admin

如何通过 exec 停止重定向
io-redirection

如何通过 exec 停止重定向

我想将脚本的一些输出重定向到文件。 REDIRECT_FILE="foo.txt" echo to console # starting redirect exec > $REDIRECT_FILE echo to file echo ... echo ... # stop redirect exec >&- echo end of script “脚本结束”应该写入标准输出。但出现了“错误文件描述符”错误消息。 exec 1>&-也不起作用。 停止重定向的正确术语是什么? ...

Admin

在标准输出上打印并使用记录器记录
io-redirection

在标准输出上打印并使用记录器记录

我有一个 bash 脚本,其中包含几个“echo STRING”命令。我想用记录器记录 STRING,但仍将其打印在标准输出上。echo STRING | logger显然不这样做。 编辑:echo STRING | tee >(logger)做到了。 >(COMMAND) 是一个进程替换,它替换进程的输入。 ...

Admin