在终端中输入目录时如何获得更好的视图?

use*_*903 8 linux terminal bash command-line macos

我目前正在使用 Mac 并学习使用终端,但该问题也适用于 Linux 系统。

我想问一下,在终端/命令行中输入路径时,终端内有没有办法更好地查看目录?

例如,我想 cd 到特定目录。一旦我开始输入地址,有没有办法在每个目录上基本 ls ?例如,如果我想将一个文件从一个目录复制到另一个目录并想输入 2 个绝对路径,我是否需要记住 2 个路径?我知道按 Tab 有助于自动完成,但如果我不知道第一个字母怎么办?

现在我依赖于使用 Finder,但我想专门使用终端的人有更好的方法。

谢谢 !

ter*_*don 8

Tab正是您所需要的。如果你点击tab两次,它会显示所有可能的完成:

$ cd /usr/  ## Hit tab twice here
bin/     include/ lib64/   sbin/    src/     
games/   lib/     local/   share/   var/     
Run Code Online (Sandbox Code Playgroud)

你不需要知道第一个字母,第二个tab会告诉你一切。


Has*_*tur 5

更多关于的一些话 Tab

Tab在可用命令中完成部分书面命令(或选项)非常好,正如 Terdon在另一个答案中强调的那样。

要完成一个命令,Tab一次就足够了。再次Tab完整列表。
此外,您可能喜欢自定义Tab. 尝试例如那些 2 行:

bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
Run Code Online (Sandbox Code Playgroud)

第一个Tab向您显示所有可能性并使用第一个可用的命令自动完成命令,从第二次按下Tab 它将开始在它们之间循环。

笔记:

您可以编写自己的bash 补全脚本,带有规则选项...
文章bash 补全介绍中提供了更多提示:第 1 部分是基础,第二部分是编写您自己的脚本。

您可能会bind complete在下面找到有趣的参考资料。

第二个答案:绝对路径和快捷方式

在每个命令中写入绝对路径(完整路径)并不总是强制性的,即使在编写脚本时是一种很好的做法,并且您希望避免被作为特洛伊木马利用的风险。

有一些快捷方式可以加快速度,例如Tab,, ,和 a 在当前 shell 中定义的所有变量。 Alt+..~

下面是一些例子(.意思是这里~意思是):

将文件复制到当前目录就足以写入 从您的目录复制文件到当前目录您可以写入 将文件从当前目录复制到最后一个写入历史记录中存储的最后一个命令的最后一个参数. 如果再次按下,它将用 bash 历史记录中的前一个位置替换刚刚找到的位置。举个例子就更简单了:cp /my/far/far/away/myfile .
homecp ~/myfile .
cp myfile $OLDPWD
Alt+.

mkdir OldDir
mkdir NewDir
cd # here press `Alt + .` and it will autocomplete with NewDir
   # press `Alt + .` again and you will see "cd OldDir"
Run Code Online (Sandbox Code Playgroud)

参考:

  • bash 补全简介第 1部分第 2 部分
  • help bind, 是的帮助,因为它bind是一个内置命令
  • help completecomplete -p | less以舒适的格式列出清单。
  • help pushdhelp popd从堆栈中推入和弹出一个目录。
  • 可编程完成内置