我熟悉使用 tee,我知道我可以简单地记录输出
script.sh | tee file.log
Run Code Online (Sandbox Code Playgroud)
但是,我想要一个无缝的用户界面。有没有办法在 script.sh 中像上面那样运行 tee ?在这个脚本中,有数百个回声和许多其他正在运行的脚本,很难将每个脚本单独附加到文件中。
我试图反编译包含在某个目录中的所有 Java 类,从目录的顶部开始。
目录下有很多子目录,每个子目录的深度都不一样。
我想要做的是进入每个目录,如果内容是带有后缀的文件.class,则运行反编译命令,这将在同一目录中创建一个反编译文件。
我已经尝试了以下但他们没有达到我所追求的。
第一种方法是:
for dir in ./*; do ( ( if [[ -d $dir ]]; then cd "$dir"; fi ) && ( for f in "$dir"; do ( if [[ -f $f && $f == *".class"* ]]; then jad "$f"; fi ); done ) ); done
Run Code Online (Sandbox Code Playgroud)
这里的问题是它不是递归的。也许这可以以递归的方式进行调整?
第二种方法简单得多,但它输出顶级目录中的文件。虽然这可能没问题,但不幸的是,我有一些具有相同名称但在不同包中的类,因此该解决方案也不起作用:
find . -type f -name "*.class" | while read filename; do echo $filename; done
Run Code Online (Sandbox Code Playgroud)
可以调整其中之一来实现我想要的吗?如何将第一个命令转换为递归操作?
什么是有效的语法来组合命令传递到find与-exec选择?
例子:
find . -type f -name "*.txt" -exec grep FirstKeyWord {} | grep SecondKeyWord \;
Run Code Online (Sandbox Code Playgroud)
失败并显示以下错误消息:
find: grep: missing argument to `-exec`
;: No such file or directory
Run Code Online (Sandbox Code Playgroud)
使用&&或;代替组合命令时,也会出现相同类型的故障|。我什至尝试用 ' 或 $() 或 {} 等引用组合命令,但它(悲惨地)失败了。
注意:我正在寻找一种单行解决方案,而不使用自定义脚本。
我一直在尝试为 Kraken 私有 API ( https://www.kraken.com/help/api )实现一个客户端,因为我遇到了一些问题,我一直在尝试访问它带有卷曲的 API。
但是,我终生无法让它工作,我想我可能没有使用正确的命令行工具来生成哈希和摘要。
访问私有 API 时,需要将以下标头添加到请求中:
API-Key = «key»
API-Sign = Message signature using HMAC-SHA512 of (URI path + SHA256(nonce + POST data)) and base64 decoded «secret»
Run Code Online (Sandbox Code Playgroud)
在命令行上,我执行以下步骤:
echo -n "123nonce=123" | openssl sha256结果: (stdin)= 353f9df92ab1d5e5afe06bb7d1bb42a8ef6654b633d94818007aeafbaf03ca3d
echo -n "/0/private/Balance353f9df92ab1d5e5afe06bb7d1bb42a8ef6654b633d94818007aeafbaf03ca3d" | openssl sha512 -hmac $(echo -n "wqtzZWNyZXTCuw==" | base64 -d)结果: (stdin)= 6f19f8f058b0e6dc835692840ccdebc1c415f00d42b75b3d3c21ef5fd43f006e30cc9b51c63aba3268a534bf68978d60d2362bffd31c8125553fb8ec41b2f64d
echo -n "6f19f8f058b0e6dc835692840ccdebc1c415f00d42b75b3d3c21ef5fd43f006e30cc9b51c63aba3268a534bf68978d60d2362bffd31c8125553fb8ec41b2f64d" | base64结果:
NmYxOWY4ZjA1OGIwZTZkYzgzNTY5Mjg0MGNjZGViYzFjNDE1ZjAwZDQyYjc1YjNkM2MyMWVmNWZk
NDNmMDA2ZTMwY2M5YjUxYzYzYWJhMzI2OGE1MzRiZjY4OTc4ZDYwZDIzNjJiZmZkMzFjODEyNTU1
M2ZiOGVjNDFiMmY2NGQ=
Run Code Online (Sandbox Code Playgroud)
curl -X POST -H "Accept: application/json" -H "API-Key: «key»" -H "API-Sign: NmYxOWY4ZjA1OGIwZTZkYzgzNTY5Mjg0MGNjZGViYzFjNDE1ZjAwZDQyYjc1YjNkM2MyMWVmNWZkNDNmMDA2ZTMwY2M5YjUxYzYzYWJhMzI2OGE1MzRiZjY4OTc4ZDYwZDIzNjJiZmZkMzFjODEyNTU1M2ZiOGVjNDFiMmY2NGQ=" …删除 tmux resurrect 并清理整个文件夹 ~/.tmux/ 后,同时在 bash (MacOsX El Captain) 中启动 tmux,我收到信息:
“恢复会话:2016 年 9 月 15 日星期四 17:15:04 CEST”
我假设我没有完全删除 tmux ressurrect 或 tmuxinator 但我想不出禁用它的方法。
编辑:
EDIT2:命令 cat tmux-server-4144.log 的输出 | 会话
1473953899.570430 cmdq 0x7fe92ae04d10: bind-key $ command-prompt -I#S "rename-session '%%'"
1473953899.570436 preparing state for bind-key $ command-prompt -I#S "rename-session '%%'" (client 0x0)
1473953899.573639 cmdq 0x7fe92ae09cd0: new-session
1473953899.573643 preparing state for new-session (client 0x7fe92c003000)
1473953899.573646 cmd_find_current_session: …Run Code Online (Sandbox Code Playgroud) 我想在使用 Bash 时像在 Linux 上一样修改 cmd 的颜色。不确定是否可能,或者我是否应该使用一些模拟器应用程序。
在我的树莓派上,我将 bash 与 powerline 一起使用,并将 vim 与 powerline 一起使用。
如果我将 Pi 连接到外部显示器,一切看起来都很好,但是当我通过 MobaXterm 或 Cygwin ssh 连接时,箭头不会显示。
我相信这是字体的问题吗?有人让这个工作吗?
以下命令:
head -n 1 $FILE | tail -n 1
Run Code Online (Sandbox Code Playgroud)
从 的第一行拉出文本$FILE。中每一行的格式$FILE如下:
1 2 3 4 2 3 3 4 5 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
如您所见,每个字符由一个空格分隔。每个组由两个空格分隔。使用sedI 需要删除单个空格,并将双空格转换为单个空格。
文本 in$FILE是由嵌套在另一个 for 循环中的 for 循环创建的。因此,在嵌套运行后,每行上的文本数据都被重定向>>到$FILE主 for 循环。文本字符串中的每个字符/数字都是嵌套 for 循环完成一次的结果。然后主 for 循环将嵌套的 for 循环的输出发送到$FILE.
所以伪代码的一个例子是:
for i in $(seq 1 $RANDOM)
do
for n in {1..10}
do
$do_something
done
$do_something_else
done >> $FILE
head -n 1 $FILE | …Run Code Online (Sandbox Code Playgroud) 我试图使用 Bash 从 FTP 中删除多个文件。
然后我在这里使用prompt命令找到了我的答案。
但我想知道波浪号 ~ 在:
ftp nobody@ftp.example.com
cd my_local_directory
prompt
mdelete *.txt~
Run Code Online (Sandbox Code Playgroud)
我发现这个网站说:
对于某些 ftp 服务器,在用户名之前使用“波浪号”字符或 ~ 来绕过指定用户目录完整路径的需要。例如,
my_university.edu/users/bob/welcome.html
也可以通过指定:
my_university.edu/~bob/welcome.html
但这与此用例有关。
有许多 3rd 方应用程序允许通过 USB 访问 MTP 设备。这里只有 2 个 http://mac.eltima.com/sync-mac.html http://mac.eltima.com/mtp-file-transfer.html
所以我的问题是,为什么不能直接使用 bash 命令来做到这一点?有没有 bash 专家愿意插话?
该文章从窗户上MTP装置
建议
将 MTP 设备公开为读/写文件系统是不可能的。
如果是这样,应用程序如何实现这一点?