use*_*456 4 filesystem bash rename copy
如何使几乎所有Linux文件管理(例如查找、自动完成等)不区分大小写,但其shell/Bash复制和移动命令“cp”、“mv”区分大小写?
您提到查找文件和自动完成作为您希望不区分大小写的示例,但即使这些是唯一不区分大小写的东西(具体来说,find命令和 shell 的选项卡完成),您也可以获得几乎所有效果当您希望从 shell 执行的大多数操作不区分大小写时。
原因是在 shell 中输入文件名主要有以下三种情况:
find这个,你可以告诉它不区分大小写地搜索。通常这包括用测试替换-name测试-iname。尽管/bin/sh在 Ubuntu 中是由 提供的dash,但默认的用户 shell(当您以非图形方式登录或打开终端时获得的 shell)是bash。大多数 Ubuntu 用户使用bash. 因为它是 Ubuntu 中最流行的 shell,并且您已将这个问题标记为bash,所以我猜您使用它。请注意,使另一个 shell(例如zsh)使用不区分大小写的制表符完成的方式通常是不同的(有些 shell 不能,或者甚至根本没有制表符完成)。
bash我建议您执行不区分大小写的制表符补全的方法是首先通过运行以下命令在当前运行的 shell 中进行尝试:
bind 'set completion-ignore-case on'
Run Code Online (Sandbox Code Playgroud)
运行该命令后,命令的名称及其文件名参数的名称都将遵循不区分大小写的制表符补全。尽管这确实适用于cp和 等命令,但仅当您按执行完成mv时才会发生。Tab无论命令中出现什么文本,无论是您编写的文本还是通过制表符补全生成的文本,都是解析命令参数的文本。因此,您始终可以完全而有效地控制什么是不区分大小写的,什么是不区分大小写的。
我并不认为这是唯一的,甚至不一定是理想的解决方案,但它是一个相当普遍且安全的解决方案。(您最终可能希望通过为不希望不区分大小写的命令编写自定义规则来进一步自定义制表符完成。)
在尝试不区分大小写的选项卡完成并决定始终启用它后bind,您可以通过将同一行添加到文件末尾来永久启用它,或者直到您决定撤消更改为止~/.bashrc。正如init3 所说,您可以使用 shell 命令或在文本编辑器中执行此操作:
Run Code Online (Sandbox Code Playgroud)echo "bind 'set completion-ignore-case on'" >> ~/.bashrc或者只需使用您最喜欢的文本编辑器添加该行。重新启动您的 bash 会话并享受吧。
(这是来自 init3 的回答Can I make Tab auto-completion case-insensitive in Bash?这个问题显示了在 中启用不区分大小写的选项卡完成的一些其他方法bash,如果您感兴趣的话。)
| 归档时间: |
|
| 查看次数: |
2062 次 |
| 最近记录: |