我使用以下内容在脚本末尾发送电子邮件。
echo "Script finished on `date`" | /usr/bin/Mail -s "Script complete" "myaccount@myserver.com".
Run Code Online (Sandbox Code Playgroud)
但是,我也想在屏幕上回显相同的消息。我如何在同一个语句中做到这一点?
我正在尝试将 GNU Screen 的输出实时发送到日志文件。我试过使用 tee,但这似乎不适用于屏幕。screen 的日志功能对此不起作用,因为它不是实时的,我很确定。有任何想法吗?
我想将 ls 命令的输出捕获到一个文件中
ls >> lsOutput.log
Run Code Online (Sandbox Code Playgroud)
如果在命令行中执行,则此方法有效。但是当放入 shell 脚本 ( lsOutput.sh) 时,返回
./lsOutput.sh: 3: ./lsOutput.sh: total: not found
Run Code Online (Sandbox Code Playgroud)
lsOutput.sh 代码
#!/bin/sh
`ls -lrt` >> lsOutput.log
Run Code Online (Sandbox Code Playgroud) 我知道 GNU Parallel 缓冲区 std/stderr 因为它不希望作业输出被破坏,但是如果我用 运行我的作业parallel do_something ::: task_1 task_2 task_3,无论如何要立即显示 task_1 的输出,然后在 task_1 完成后,task_2 一直到它的当前输出等
如果 Parallel 不能解决这个问题,有没有其他类似的程序可以解决这个问题?
我有一些来自 iconv 的输出,例如
$ iconv -l | grep ISO | head -5
CSISO4UNITEDKINGDOM//
CSISO10SWEDISH//
CSISO11SWEDISHFORNAMES//
CSISO14JISC6220RO//
CSISO15ITALIAN//
durrantm:~
Run Code Online (Sandbox Code Playgroud)
我怎样才能将//'s更改为,例如--'s ?
我试过了,$ (iconv -l | grep ISO).gsub('\/\/','--')但没有运气。
如何将修改环境的命令的输出保存为变量?
我正在使用 bash shell。
假设我有:
function f () { a=3; b=4 ; echo "`date`: $a $b"; }
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用命令来运行f:
$ a=0; b=0; f; echo $a; echo $b; echo $c
Sat Jun 28 21:27:08 CEST 2014: 3 4
3
4
Run Code Online (Sandbox Code Playgroud)
但我想将输出保存f到变量c,所以我尝试:
a=0; b=0; c=""; c=$(f); echo $a; echo $b; echo $c
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我有:
0
0
Sat Jun 28 21:28:03 CEST 2014: 3 4
Run Code Online (Sandbox Code Playgroud)
所以我这里没有任何环境变化。
如何将命令(不仅仅是函数)的输出保存到变量并保存环境更改?
我知道这会$(...)打开新的子外壳,这就是问题所在,但是否可以做一些解决方法?
我试图隐藏 gnupg 命令的“输出”,但它似乎总是被打印出来。
命令是:
echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null
这是一个用于验证 pgp 密钥密码的命令,使用它如下:
a=$(echo "thisprogramwørks" | gpg -q --status-fd 1 --no-use-agent --sign --local-user D30BDF86 --passphrase-fd 0 --output /dev/null)
我恢复输出:
echo $a
[GNUPG:] USERID_HINT F02346C1EA445B6A p7zrecover (7zrecover craking pgp test) <a@a> [GNUPG:] NEED_PASSPHRASE F02346C1EA445B6A F02346C1EA445B6A 1 0 [GNUPG:] GOOD_PASSPHRASE [GNUPG:] BEGIN_SIGNING [GNUPG:] SIG_CREATED S 1 8 00 1435612254 8AE04850C3DA5939088BE2C8F02346C1EA445B6A
问题是当我使用命令时,控制台打印:
You need a passphrase to unlock the secret key for
user: "test …
我在 Ubuntu 14.04 初始化时遇到了一些问题,它无法挂载 SSH 文件夹,并为我提供了通过按 M 手动恢复的选项,显示以 root 用户记录的命令行以调试问题。
当我尝试阅读sshfs帮助文件时,我的麻烦就开始了,它比屏幕大,因此无法阅读剪切部分。
我设法通过这样做来解决这个问题,sshfs -h >> read; nano read但我想知道是否有一种最简单或更优雅/正确的方式来完成这项工作。
PS:我不在 Ubuntu 终端模拟器,所以不可能调整“滚动”选项卡,因为它不存在。
我们如何将标准输出(或标准错误)和文件的结果连接到最终文件中。
例如
ls -a | grep text1
Run Code Online (Sandbox Code Playgroud)
连接file2.txt到最终结果(不是file2.txt),而不存储grep text1到中间的东西,例如grep text1 > file1.txt
我尝试通过以下方式重定向输出流从 airodump-ng 获取文件:
airodump-ng mon0 2>&1 | tee file.txt
Run Code Online (Sandbox Code Playgroud)
但这会附加到文件而不是重写它。所以在那之后,我尝试通过 fifo 管道将输出重定向到其他输出流:
第一个终端:
mkfifo fifo1
echo "while [ 1 ]; do cat ~/fifo1 2>&1 | tee file.txt done" > readfifo.sh
chmod +x readfifo.h
xterm -e readfifo.sh
Run Code Online (Sandbox Code Playgroud)
第二个终端:
airodump-ng mon0 2>&1 > fifo1
Run Code Online (Sandbox Code Playgroud)
在结果中我们有一个附加的 file.txt,但为什么呢?如何在文件中只有终端的输出,而不是附加到它?是否可以在写入文件时过滤 airodump-ng 的输出?
最好的问候,V7