如何 ls/cd 使用索引而不是名称

How to ls/cd using indexes rather than names

所以我在文件系统中移动的正常方法是使用 ls --color 查看所有文件和目录,然后输入 cd [directory] 然后再次输入 ls --color 并冲洗和重复直到我找到一个文件,然后我输入 vim [file] 来编辑它。

在我看来,这是一种非常低效的处理方式。我设想了这些功能:

  1. 合并 cdls --color 这样,一旦我 cd 进入目录,它就会输出带有颜色的内容(这样我就可以分辨什么是目录,什么是文件,以及等等)
  2. lscd使用索引。我的意思是让 ls 的输出在目录中的所有内容旁边打印数字,例如第 4 项的 [3] 或其他内容,这样我所要做的就是键入 cd [3]。这会有所帮助,因为文件名有时很长(比如真的很长)并且包含空格,而且我不想因为不可避免的拼写错误而重新输入长命令。

我不确定 bash 中是否已经有这样的东西,或者它是否是我可以下载的插件,或者我是否只需要编写一个 shell 脚本,但是任何帮助会很棒!

编辑: 我应该添加这个来探索文件系统。我没有要访问的目标文件。

有多种方式可以更高效地浏览文件系统。

  1. 使用 shell 的自动完成功能。可能是解决您问题的最有效方法。

    cd /a/TABTAB

    这将显示 /a/ 中包含的目录,或者,如果只有一个(对应于您目前输入的内容),将使用它自动完成您的命令。

  2. 按照评论中的建议使用 GUI。

  3. 而不是交替使用 lscd,您可以使用多个 ls 和最后一个 cd :

    $ ls /a  
    > b/ c/ d/  
    $ ls /a/b  
    > e/  
    $ ls /a/b/e  
    >fileIWant  
    $ cd /a/b/e  
    $ vim fileIWant
    

    您可以使用 ALT + 重复最后一步的路径 ..
    你甚至不需要最后的 cd 并且可以直接使用 vim /a/b/e/fileIWant.

  4. 递归使用lsls -R /a。输出可能有点难以使用。