小编Bra*_*rks的帖子

如何直接切换到 Tmux 中的窗格?

我想通过窗格 # 直接切换到 Tmux 中的窗格。

我怎样才能做到这一点?我知道如何在窗格之间循环,并移动到当前窗格旁边的窗格。

我希望能够运行该display-panes命令,该命令在每个窗格上显示“窗格#”,然后使用由display-panes.

这可能吗?

注意:为了清楚起见,我不是指窗口,而是指窗格。谢谢!

tmux

47
推荐指数
4
解决办法
3万
查看次数

从脚本获取窗口中每个窗格的窗格#?

有没有办法在 Tmux 中找出特定窗格的窗格索引?

我知道我可以运行类似的东西:

tmux display-message -p  "#{pane_index}"  
Run Code Online (Sandbox Code Playgroud)

但这仅适用于活动窗格。我希望它适用于它运行的任何窗格。通常当然很难在非活动窗格的窗格中运行脚本,但如果您使用:set-window-option synchronize-panes同步所有窗格之间的输入,则可以。

我将如何使用它?

在我的工作中,我需要同时连接到负载均衡器中的多个相同服务器,我使用 Tmux 窗格来完成。我通常会打开同步窗格功能,以便将我键入的任何内容同时发送到每个窗格。这很好用。

我发现我想连接到服务器并有时对每个窗格做一些独特的事情,每次都使用相同的“窗格索引”。例如,我会像这样运行一个命令:

ssh NODE_$(get_pane_number)
Run Code Online (Sandbox Code Playgroud)

在每个窗格中同步并运行时,它将在具有 4 个窗格的窗口中运行以下命令:

ssh NODE_0 在窗格 0

ssh NODE_1 在窗格 1

ssh NODE_2 在窗格 2

ssh NODE_3 在窗格 3

我当然可以编写这个脚本,但这只会我开始同步输入之前运行良好。有时我也想在开始同步输入后执行此操作。

tmux

14
推荐指数
1
解决办法
5163
查看次数

在执行之前展开子shell?

我经常使用子外壳运行命令,有时希望在运行某些东西之前扩展子外壳。这样我可以验证我在做什么,并可能编辑即将发生的事情。

例如,如何在运行之前扩展以下命令行,以便我可以编辑子shell的结果?

例如

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt
Run Code Online (Sandbox Code Playgroud)

我希望运行命令之前看到扩展的子shell ,如下所示:

$ mv /tmp/test.txt /tmp/new.txt
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

shell bash command-history subshell

12
推荐指数
1
解决办法
1767
查看次数

如何等待程序完成,并在完成后将标准输入传输到标准输出?

我试图弄清楚如何等待命令完成,然后将标准输入通过管道传输到标准输出。我使用的是 Mac,但我认为我的问题更多是关于如何等待进程完成并通过管道传输输出,然后是与 Mac 相关的任何事情。

我注意到,在 Mac 上,我可以say一起运行几个命令,如果我使用运算符将​​它们连接起来,它们会等待每个短语完全说出后再开始下一个短语&&

$ say "stage 1" && say "stage 2"
Run Code Online (Sandbox Code Playgroud)

这就是真正的用例 - 我有一个 bash 脚本,我希望它在完成某些操作后将stdin 传递到 stdout。

$ cat /etc/passwd | say_and_pass "stage 1" | grep -v test | say_and_pass "stage 2"
Run Code Online (Sandbox Code Playgroud)

所以从概念上讲,这会大声说“阶段 1”,然后立即说“阶段 2”,然后将 grep 的内容转储/etc/password到标准输出。

我对say_and_pass脚本的初步破解是这样的:

说并通过

#!/usr/bin/env bash
OUT="$*"
say "$OUT" && cat 
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用;-)

编辑:我更改了上面的示例以用作say_and_pass "stage2"最终命令,这是我的解决方案工作所必需的......

bash

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

在 Zsh/Bash 中使用 Netrw 或 Nerdtree 通过浏览选择文件?

我经常发现自己在 shell 中,想要将文件名插入到冗长的命令中。

\n

我想点击快捷方式,并使用 Netrw 或 Nerdtree 浏览文件或目录,并将其粘贴到命令 I\xe2\x80\x99m 构建中。

\n

因此,如果我在一个文件夹中,并且想要比较 2 个文件:

\n
    \n
  • 我会输入diff

    \n
  • \n
  • 然后我想点击快捷方式,使用 Netrw 或 Nerdtree 进行可视化浏览,然后选择一个文件。

    \n
  • \n
  • 该文件名现在已添加到我的 diff 命令中...例如diff /tmp/file1.txt

    \n
  • \n
  • 我再次点击快捷方式,然后浏览第二个文件,\n/super/ez/another/file/somewhere/else/compare.txt

    \n
  • \n
  • 然后将第二个文件添加到我的diff命令中,所以我现在有:

    \n
      diff /tmp/file1.txt /super/ez/another/file/somewhere/else/compare.txt\n
    Run Code Online (Sandbox Code Playgroud)\n
  • \n
\n

使用任何工具可以做到这一点吗?我喜欢 Vim 中的 Netrw,但愿意尝试新事物!

\n

Tab请注意,我对使用通配符完成文件名不感兴趣。这有时有效,但并非总是有效。我喜欢 Netrw,并且很想弄清楚如何使用它通过浏览来选择文件名。

\n

bash vim zsh

5
推荐指数
1
解决办法
1729
查看次数

bash - 获取我正在通过历史记录编辑的当前命令的第一个参数,或类似的?

我经常在 bash 提示符下编写命令,我想在其中获取以前的参数,在我输入的 CURRENT 行中,然后放在命令的其他位置。

一个简单的例子,如果我想重命名一个文件。我会

  • 输入mv命令
  • 输入我想移动的文件名, ~/myTestFileWithLongFilename.txt
  • 现在我只想更改我在第一个参数中提供的文件的扩展名,而无需再次输入。

我可以以某种方式使用历史记录或 bash 完成来自动完成第一个参数吗?

$ mv ~/myTestFileWithLongFilename.txt ~/myTestFileWithLongFilename.md
Run Code Online (Sandbox Code Playgroud)

我当然知道我可以执行不完整的命令,将其放入历史记录中,然后用 引用它!$,但是我的历史记录被无效命令污染,我想知道是否有更好的方法

bash history-expansion

5
推荐指数
2
解决办法
275
查看次数

Tmux - 在 bash 变量中获取当前窗口中的窗格数?

我正在编写 Tmux 脚本,并想通过 bash 脚本了解当前窗口中的窗格数量。

有没有办法找出这些信息?

在伪代码中,我想要这样的东西:

#!/bin/bash
COUNT=$(tmux get_number_of_panes)
...
Run Code Online (Sandbox Code Playgroud)

bash tmux

4
推荐指数
1
解决办法
2749
查看次数

Bash:从标准输入或命令行参数循环遍历行的简洁方法?

我有一个 bash 脚本,我想遍历 stdin 中的行,或者遍历传入的每个参数。

有没有一种干净的方法来写这个,所以我不必有 2 个循环?

#!/bin/bash

# if we have command line args... 
if [ -t 0 ]
then
  # loop over arguments
  for arg in "$@" 
  do
    # process each argument
  done
else
  # loop over lines from stdin
  while IFS= read -r line; do
    # process each line
  done
fi
Run Code Online (Sandbox Code Playgroud)

编辑:我正在寻找一个只使用一个循环的通用解决方案,因为我发现我想经常这样做,但总是写出 2 个循环,然后调用一个函数。所以也许某些东西可以将 stdin 变成一个数组,所以我可以使用单个循环来代替?

bash

4
推荐指数
2
解决办法
4314
查看次数

标签 统计

bash ×6

tmux ×3

command-history ×1

history-expansion ×1

shell ×1

subshell ×1

vim ×1

zsh ×1