标签: bash

如何使 bash 补全行为像这样?

I\xe2\x80\x99m 不确定我\xe2\x80\x99m 的要求是否可能,但我希望 bash 在制表符按下时执行以下操作:

\n\n
    \n
  • 在第一个选项卡按下时,展开一个公共前缀(跳过/嘟嘟声并且不执行任何操作,我不\xe2\x80\x99t真的介意,如果有\xe2\x80\x99t)
  • \n
  • 在第二个选项卡上按下,列出选项
  • \n
  • 任何后续的选项卡按下都会循环显示这些选项
  • \n
\n\n

如果在整个过程中按下 Tab 以外的任何键,则下一次按 Tab 的行为将与第一步相同。

\n\n

我设法得到一和二:

\n\n
bind \xe2\x80\x9cset show-all-if-unmodified on\xe2\x80\x9d\nbind \xe2\x80\x98set menu-complete-display-prefix on\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

我成功地得到了一和三:

\n\n
bind \xe2\x80\x98set menu-complete-display-prefix on\xe2\x80\x99\nbind \xe2\x80\x98TAB:menu-complete\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,将所有三个选项结合起来会得到一和三。

\n\n

我怎样才能获得所需的行为?

\n\n

谢谢!

\n

bash bashrc tab-completion

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

命令在本地工作,但在使用 ssh 调用时返回“未找到事件”

我想检查只读文件系统。我写了这个awk命令并且运行良好:

awk '{ if ( $4 ~ /ro,/ && $2 !~ /sys/ ) {print $2} }' /proc/mounts
Run Code Online (Sandbox Code Playgroud)

我想将此命令与ssh. 这不起作用:

$ ssh ip "awk '{ if ( $4 ~ /ro,/ && $2 !~ /sys/ ) {print $2} }' /proc/mounts"  
bash: !~: event not found
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?问题是因为波浪号字符吗?

linux ssh bash special-characters

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

如何显示多个请求中curl的单独退出状态?

我的问题很简单 -当curl执行多个请求时,有没有办法显示每个URL的curl的单独退出状态?

让我们假设我需要检查站点a.comb.comc.com查看它们:

  • HTTP 返回码
  • 如果HTTP返回码是000,我需要显示curl的exit code

注意 - a.comb.comc.com在此代码/问题中用作示例。在真实的脚本中,我确实有一个有效的 URL 列表 - 其中超过 400 个具有非重叠模式 - 并且它们返回各种 HTTP 代码 - 200/4xx/5xx 以及 000。

000 是curl 无法建立连接的情况,但提供退出代码以了解阻止其建立连接的原因。就我而言,还有许多退出代码 - 6、7、35、60。

我尝试运行以下代码

unset a
unset rep
a=($(curl -s --location -o /dev/null -w "%{response_code}\n" {https://a.com,https://b.com,https://a.com}))
rep+=("$?")
printf '%s\n' "${a[@]}"
echo
printf '%s\n' "${rep[@]}"
Run Code Online (Sandbox Code Playgroud)

虽然上述代码返回每个单独请求的 HTTP 返回代码,但仅显示最后一个请求的退出代码。

000
000
000

60
Run Code Online (Sandbox Code Playgroud)

当我提供多个 URL 进行卷曲时,我确实需要能够记录单独的退出代码。这个问题有解决方法/解决方案吗?

一些附加信息:目前,我将所有 URL 放入一个数组中,并通过它运行一个循环,分别检查每个 URL。然而,浏览 …

url bash curl

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

如何在 bash 中从 zsh(或其他 shell)在一行中运行命令?

假设我当前位于 zsh shell 中。如果我想在 bash 中运行命令,我当前执行以下两个命令。

exec /bin/bash
# Below is my bash command
help set
Run Code Online (Sandbox Code Playgroud)

如何在一行中实现上述目标而不将 shell 更改为 bash?

bash

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

为什么 bash -c 'cd / ; pwd' 通过 SSH 运行时失败

我试图找出为什么以下命令无法正确设置工作目录。

ssh localhost bash -c "cd / ;pwd"
Run Code Online (Sandbox Code Playgroud)

虽然以下版本有效:

bash -c "cd / ;pwd"

ssh localhost "cd / ;pwd" 

ssh localhost 'bash -c "cd / ;pwd"'

ssh localhost bash -c "pwd; cd / ;pwd"
Run Code Online (Sandbox Code Playgroud)

我在 macOS 和 ubuntu 18.04 上注意到了这种行为。

linux ssh bash ubuntu

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

linux/bash 中的 copy con <filename> 相当于什么

在DOS/Windows中,我们可以在命令提示符下执行以下操作

copy con [filename] <ENTER>
Run Code Online (Sandbox Code Playgroud)

这会将您在终端中输入的任何内容复制到文件名中。

现在,在 bash/linux 中相当于什么?

linux terminal bash command-line

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

如何创建在执行远程命令后退出 ssh 会话的 shell 脚本

我正在尝试编写一个 bash 脚本来编译一些代码并将其部署到远程服务器。到目前为止,我一直在努力弄清楚如何让脚本退出 ssh 会话。我以为我可以只使用“exit”,但似乎退出脚本而不实际关闭 ssh 会话。在 ssh 命令中使用“-f”标志是我见过的另一个选项,但这限制了我可以做的事情而不会让我的脚本变得混乱。-f 要求将所有远程命令塞进对 ssh 的一次调用中。对于一两个命令来说这很好,但对于更复杂的操作来说会变得混乱。

是否还有其他选项允许在 shell 脚本中启动和关闭 ssh 会话?

作为参考,这里有一个快速示例脚本:

#!/bin/bash
echo 'starting a thing...'
mkdir folderA
ssh -f messagecenter-dev -p 22001 'uptime; free -m | cat /proc/loadavg'
cd folderA
echo 'I did a thing!'
exit
Run Code Online (Sandbox Code Playgroud)

我该如何在不需要使用“-f”的情况下做到这一点?

ssh unix bash macos

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

如何在 Bash 循环中使用 `tax[13]-eq-dc` 正则表达式?

以下正则表达式tax[13]-eq-dc代表两个服务器:tax1-eq-dc 和tax3-eq-dc。
我试图找到一种在 Bash do 循环中使用它的方法,但不能仅仅获得正确的语法。

例如,下列说法是错误的:

$ for i in tax[13]-eq-dc; do ping -c3 $i; done
ping: unknown host tax[13]-eq-dc
Run Code Online (Sandbox Code Playgroud)

有什么想法正确的语法吗?

bash regex

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

为什么每次打开终端都会显示“/home/igoru /etc/bash_completion”?

我在~/.bash_aliases昨天添加了一些行......今天我的 gnome 终端开始向我展示这个表达式,就在提示之前。

/home/igoru /etc/bash_completion
igoru@igoru-ubuntu:
Run Code Online (Sandbox Code Playgroud)

这些是我添加的行:

alias realias='vim ~/.bash_aliases; source ~/.bash_aliases'
alias ..='cd ..'
alias .='echo $PWD'
alias canhaz='sudo apt-get install'
Run Code Online (Sandbox Code Playgroud)

怎么了?
这个表达式真的与那些别名有关,还是什么?

linux terminal bash shell

0
推荐指数
1
解决办法
226
查看次数

任何人都知道如何将我的 Mac 终端变成这个?

如何让我的 Mac 终端看起来像下面的截图?输入行很酷,看起来很有用。

在此处输入图片说明

mac terminal bash macos

0
推荐指数
1
解决办法
841
查看次数