我必须浏览一系列包含软件安装程序的目录。我编写了一个小型 bash 函数,可以让我转到包含所有版本的主文件夹,但子目录的文件名太长了。
主文件夹名为“release”,包含名称为“Build 10 - 0.0.3580 - ecb871131857710a”的目录。我读过 William Shotts' Jr 的书“Linux 命令行:完整介绍”,这本书非常好,内容详尽,但它并没有真正让我深入了解如何解决这个问题,我的同事似乎也不知道更简单的方法。
有人能给我一些建议或一般方法来帮助我解决这个问题吗?我不是在寻找脚本或有人能给我完整的答案,但如果能在正确的方向上有所推动,我将不胜感激。
答案1
去年,在学校里,我向一个男孩介绍了 bash 补全的优秀之处,当时他正不情愿地探索 Mercurial 命令行版本相对于 TortoiseHG 的优势,在我的坚持下,他因此受到了启发。对话如下:
我:输入 cd ~
他:是吗?
我:现在标签
他和?
我:再次使用斜线和制表符。
他:哦,该死!
我:输入。很巧妙,对吧?现在输入你保存文件的文件夹的前三个字母。
他:好嗎?
我:标签
他:哇哦!这真的很有用!
我:命令行的力量......
他:cd Sch[tab][回车] cd Proj[tab][回车] cd s[tab][tab][tab]
他:没用
我:区分大小写。小写字母和大写字母不一样。输入 Sourc[tab]
他:哦。[tab][输入][tab][输入]
我:不,别再这样了,你可以完成整个路径,而不仅仅是单个文件夹。
他:哦天啊!这太酷了!
我:接下来我将向您展示如何使用定位来查找文件。
我可能改变了他的一生,颠覆了他的世界观!
答案2
Linux 通常有以下限制:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
如果您的“长得可笑”的路径名比这短,那么您就不会有问题。
我注意到您的名称包含空格,因此请确保始终引用您的变量。