标签: bash

如何在 Bash 命令行上扩展 *

我明白,如果你输入ls *它实际上是扩展到ls a b c当前直接有文件的时候abc.

我想知道在我输入之前是否有办法扩展它。类似于Ctrl+X 的工作方式,或Tab Complete 的工作方式。

所以为了让自己清楚

$ ls *
<press magic key>
$ ls a b c
Run Code Online (Sandbox Code Playgroud)

以类似的方式:

$ ls ~/
<press tab>
$ ls /home/username
Run Code Online (Sandbox Code Playgroud)

我以为我以前看过这个,但我可能弄错了。

bash autocomplete globbing

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

像 zsh 一样的 Bash 自动完成

我正在使用 bash,但我想要 zsh 风格的自动完成(你点击选项卡,它通过选项卡浏览可能性),而不是 bash 似乎做什么,它显示一个可能性列表,但在我输入之前不选择任何内容还有一些可以消除歧义。如何在 bash 中获得 zsh 类型的行为?

寻找解决方案已经找到了许多其他问题的答案,所以我希望我能在这里得到一个简单的答案(即粘贴到我的.bashrc.

(为了回答这个显而易见的问题,我需要在这里使用 bash,因为我刚加入一个团队,他们做了一些事情来设置 bash 以使环境更易于工作。我可能最终可以确保我让它工作相同在 zsh 中的方式,但现在如果我使用 bash 并且在交互式使用期间让它表现得更像 zsh 会更容易。)

bash zsh autocomplete

38
推荐指数
3
解决办法
2万
查看次数

: bash 的冒号命令

作为一个 bash 新手,我一直在通过复制/粘贴 + github 升级我的 .bashrc,我遇到了:让我和谷歌都难堪的命令。例如: ${USER_BASH_COMPLETION_DIR:=~/.bash_completion.d}

如果最初在我的 .bashrc 中没有此语句,并将这些内容输入到我的终端中(->表示相关输出):

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
echo $USER_BASH_COMPLETION_DIR
-> /Users/sh/.bash_completion.d
Run Code Online (Sandbox Code Playgroud)

和:

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
export USER_BASH_COMPLETION_DIR=asdf
echo $USER_BASH_COMPLETION_DIR
-> asdf
Run Code Online (Sandbox Code Playgroud)

但:

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
export USER_BASH_COMPLETION_DIR=asdf
: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
echo $USER_BASH_COMPLETION_DIR
-> asdf
Run Code Online (Sandbox Code Playgroud)

我不明白!

1) 冒号命令如何设置变量但不能覆盖设置的变量export

2):在某些 .bashrc 中使用背后的逻辑是什么?

使用 Mac 10.6.8

(在上下文中包含关键字冒号只是为了帮助像我这样试图搜索该术语的其他人)

bash

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

删除数百万个文件

我有一个目录,里面装满了数百万张 gif 图像。rm 命令太多了。

我一直在尝试这样的 find 命令:

find . -name "*.gif" -print0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)

问题是,它使我的机器非常糟糕,并且由于它是服务器而导致客户超时。

有什么方法可以更快地删除所有这些文件......而不锁定机器?

linux bash shell rm find

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

Shellshock 错误会影响 ZSH 吗?

请问弹震击的错误影响ZSH?

升级 Bash 是唯一的解决方案吗?

bash zsh shellshock

38
推荐指数
3
解决办法
8165
查看次数

将文本传递给需要文件的程序

与我在 Stack Overflow 上提出的一个问题相关:将多行代码传递给 wsadmin.sh?.

我有,作为一个字符串,我需要输入命令的几行输入。然而,该命令只接受一个充满输入的文件。

有什么方法可以将这些行存储在一个临时文件或管道中,而这些文件或管道实际上从未真正写入磁盘,然后将其直接输入到程序中?

我如何获取管道,将输入输入其中,将该管道传递给命令,然后摆脱管道?

linux bash command-line

38
推荐指数
3
解决办法
2万
查看次数

从 Windows Subsystem for Linux 在主机系统中打开浏览器?

我有一个包含这一行的 ruby​​ 脚本:

system("open '#{html_path}'")
Run Code Online (Sandbox Code Playgroud)

html_path是本地.html文件的路径。因此,脚本会打开一个浏览器,我通常可以在其中检查和查看此文件。

与 MacOS 环境相比,这在bashWSL 中不起作用。运行脚本没有任何反应,当我open直接在控制台中执行调用时,我得到了这个:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ open Preview.html
Couldn't get a file descriptor referring to the console
Run Code Online (Sandbox Code Playgroud)

我已经调查open过在 Ubuntu做了一些不同的事情,我应该使用seexdg-open打开一个文件。

不幸的是,这些在 WSL 中也不起作用:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ see ./Preview.html
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /us
r/bin/see line 528.
Couldn't find a suitable web browser!
Set …
Run Code Online (Sandbox Code Playgroud)

browser bash ruby windows-subsystem-for-linux

38
推荐指数
7
解决办法
5万
查看次数

如何获取文件的sha256sum并比较以检查一行?

我一直发现自己想在脚本中立即下载并检查下载的完整性,但我一直无法找到正确的sha256sum.

MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}
Run Code Online (Sandbox Code Playgroud)

如何获取sha256sum新文件并立即将其与已知散列进行比较?

bash hashing

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

Bash 命令在 x 行数后切断输出

我正在寻找一个 bash 命令,我可以用它来限制文件或其他命令输出的行数。例如

ls -thor | limit 10
Run Code Online (Sandbox Code Playgroud)

会将 ls 命令的输出限制为 10 行(在示例中,命令“limit”自然是一个虚构的命令,我正在寻找它的等效命令)。有没有这样的命令,或者相关的解决方案?

linux bash gnu

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

在 Mac OS X 上从终端(或脚本)更改 DNS 服务器

如何从 Mac OS X 上的终端更改我的 DNS 服务器?[我需要这个,因为我的 DNS 无法与我的 VPN 正常工作。有时它使用 DNS 作为我的主连接,有时它使用为 VPN 指定的 DNS(它应该使用)。]

dns bash macos

37
推荐指数
4
解决办法
7万
查看次数