标签: bash

Tee 脚本以在其自身内归档

我熟悉使用 tee,我知道我可以简单地记录输出

script.sh | tee file.log
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个无缝的用户界面。有没有办法在 script.sh 中像上面那样运行 tee ?在这个脚本中,有数百个回声和许多其他正在运行的脚本,很难将每个脚本单独附加到文件中。

bash tee

6
推荐指数
1
解决办法
3450
查看次数

递归遍历目录并对目录中的文件运行命令

我试图反编译包含在某个目录中的所有 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)

可以调整其中之一来实现我想要的吗?如何将第一个命令转换为递归操作?

linux unix java bash command-line

6
推荐指数
1
解决办法
3409
查看次数

如何将组合命令传递给“find -exec”?

什么是有效的语法来组合命令传递到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)

使用&&;代替组合命令时,也会出现相同类型的故障|。我什至尝试用 ' 或 $() 或 {} 等引用组合命令,但它(悲惨地)失败了。

注意:我正在寻找一种单行解决方案,而不使用自定义脚本。

bash find

6
推荐指数
1
解决办法
2万
查看次数

用于访问经过身份验证的 Kraken API 的 cURL 示例

我一直在尝试为 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=" …

bash curl api openssl base64

6
推荐指数
1
解决办法
4298
查看次数

启动 tmux 时,它说尽管已删除 resurrect 已恢复会话

删除 tmux resurrect 并清理整个文件夹 ~/.tmux/ 后,同时在 bash (MacOsX El Captain) 中启动 tmux,我收到信息:

“恢复会话:2016 年 9 月 15 日星期四 17:15:04 CEST”

我假设我没有完全删除 tmux ressurrect 或 tmuxinator 但我想不出禁用它的方法。

编辑:

  1. find / tmux - 没有找到文件或目录
  2. find / resurrect - 没有找到文件或目录
  3. 卸载并再次重新安装 tmux(使用 brew)后仍然没有帮助

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 tmux

6
推荐指数
1
解决办法
422
查看次数

Windows 10 上的 Bash - 有没有办法将 Solarized 等主题应用到 cmd?

我想在使用 Bash 时像在 Linux 上一样修改 cmd 的颜色。不确定是否可能,或者我是否应该使用一些模拟器应用程序。

bash windows-10

6
推荐指数
1
解决办法
2万
查看次数

MobaXTerm 电力线字体问题

在我的树莓派上,我将 bash 与 powerline 一起使用,并将 vim 与 powerline 一起使用。

如果我将 Pi 连接到外部显示器,一切看起来都很好,但是当我通过 MobaXterm 或 Cygwin ssh 连接时,箭头不会显示。

我相信这是字体的问题吗?有人让这个工作吗?

bash mobaxterm

6
推荐指数
1
解决办法
1万
查看次数

使用 sed 进行自定义字符串空间操作

以下命令:

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 bash-scripting

6
推荐指数
1
解决办法
776
查看次数

来自 BASH 的 FTP 命令。~ 有什么作用?

我试图使用 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

但这与此用例有关。

linux ftp bash

6
推荐指数
1
解决办法
422
查看次数

使用 BASH (OSX) 通过 USB 访问 MTP 设备

有许多 3rd 方应用程序允许通过 USB 访问 MTP 设备。这里只有 2 个 http://mac.eltima.com/sync-mac.html http://mac.eltima.com/mtp-file-transfer.html

所以我的问题是,为什么不能直接使用 bash 命令来做到这一点?有没有 bash 专家愿意插话?

文章从窗户上MTP装置

建议 将 MTP 设备公开为读/写文件系统是不可能的。

如果是这样,应用程序如何实现这一点?

usb bash mtp macos

6
推荐指数
2
解决办法
6130
查看次数

标签 统计

bash ×10

linux ×2

api ×1

base64 ×1

bash-scripting ×1

command-line ×1

curl ×1

find ×1

ftp ×1

java ×1

macos ×1

mobaxterm ×1

mtp ×1

openssl ×1

tee ×1

tmux ×1

unix ×1

usb ×1

windows-10 ×1