我目前正在使用 Mac 并学习使用终端,但这个问题也适用于 Linux 系统。
我想问一下,在终端/命令行中输入路径时,有没有办法在终端内更好地查看目录?
例如,我想 cd 到特定目录。一旦我开始输入地址,有没有办法基本上在每个目录中 ls ?例如,如果我想将文件从一个目录复制到另一个目录,并想输入 2 个绝对路径,我需要记住 2 个路径吗?我知道按 Tab 有助于自动完成,但如果我不知道首字母怎么办?
现在我依靠使用 Finder 来实现这一点,但我想专门使用终端的人有更好的方法。
谢谢 !
答案1
Tab正是您所需要的。如果您点击tab两次,它将显示所有可能的完成方式:
$ cd /usr/ ## Hit tab twice here
bin/ include/ lib64/ sbin/ src/
games/ lib/ local/ share/ var/
您不需要知道第一个字母,第二个字母tab会告诉您一切。
答案2
关于Tab
Tab非常适合在可用命令中完成部分书面命令(或选项),正如 Terdon 所强调的那样在另一个答案中。
完成一个命令就足以按Tab一次。要获取完整列表按Tab再次。
此外,您可能喜欢定制行为Tab.例如尝试以下两行:
bind "TAB:menu-complete"
bind "set show-all-if-ambiguous on"
第一个按钮Tab向您展示所有的可能性,并使用第一个可用的命令自动完成命令,从第二次按下开始,Tab 它将开始在它们之间循环。
笔记:
你可以写自己的bash 完成脚本,带有规则选项...
文章中有一些提示Bash 补全简介:第一部分是基础,第二部分是编写自己的脚本。
您可能会发现bind
complete
下面的参考资料很有趣。
第二个答案:绝对路径和快捷方式
在每个命令中写入绝对路径(完整路径)并不总是强制性的,即使当你编写脚本并且想要避免被利用的风险时,这是一种很好的做法,因为特洛伊木马。
有一些捷径为了更快地运行,例如,,,,Tab以及当前 shell 中定义的所有变量。 Alt+..~
下面是一些例子(.意味着这里和~手段家):
要将文件复制到当前目录,只需写入cp /my/far/far/away/myfile .
要从目录复制home
文件到当前目录,你可以这样写cp ~/myfile .
将文件从当前目录复制到最后一个目录cp myfile $OLDPWD
Alt+.写入历史记录中存储的最后一个命令的最后一个参数。如果再次按下,它将用 bash 历史记录中前一个位置的参数替换刚刚找到的参数。举个例子更简单:
mkdir OldDir
mkdir NewDir
cd # here press `Alt + .` and it will autocomplete with NewDir
# press `Alt + .` again and you will see "cd OldDir"
参考:
答案3
再看看Midnight Commander
- 一个非常棒的文本模式文件管理器。您可以在两个面板中导航,找到文件后,只需按 F5 即可复制。按 F6 可移动它...我经常使用终端,即使不是大多数时间,但我不能没有终端mc
(软件包的正常名称)。