在目录名称中使用‘&’

在目录名称中使用‘&’

我有一个目录名ISO和模拟器有一些重要文件。并且此目录位于不同的分区中,并且分区未显示在我的文件管理器(Nautilus)中。因此,我挂载了我的分区并从终端访问它,但由于它的姓名

当我尝试更改目录时:

cd ISO&Emulator

结果:

[1] 1635
bash: Emulator: command not found
bash: cd: ISO: No such file or directory
[1]+  Exit 1

它将目录名称作为命令。有什么方法可以从终端访问该目录吗?

如何解决这个问题?

答案1

使用包含特殊字符的文件或目录名时,应该用引号引起来:

cd 'ISO&Emulator'
cd "ISO&Emulator"

或者仅转义(或引用)特殊字符:

cd ISO\&Emulator    
cd ISO'&'Emulator  
cd ISO"&"Emulator

大多数情况下你可以使用自动完成功能:

光盘 ISOTab ↹

与单引号不同,当名称包含变量时可以使用双引号:

cd "$HOME/ISO&Emulator"

答案2

由于这不是一个命令行系统和一个图形系统桌面环境安装后,您应该了解另一种从终端使用文件和目录的方法,这些文件和目录的名称需要引用,或者输入起来很麻烦:将文件夹图标从文件浏览器拖到终端窗口中。您的系统上的文件浏览器是 Nautilus,但几乎所有文件浏览器都支持此浏览器。这将粘贴您拖动的图标的文件或目录的完整路径自动应用正确的引用

这并不能完全替代使用这些技巧自己知道如何引用路径名(或者任何文本)pa4080 描述,但它非常有用,可以为您节省大量时间,如果您不熟悉何时以及如何使用 引用\,在大多数图形终端仿真器中,这是执行此操作时自动应用的引用形式,因此它会向您演示。 (在某些情况下,' '使用。)

除非你修改了它,否则当你打开终端窗口或登录时获得的 shell虚拟控制台猛击。在任何 shell 中引用的目的是告诉 shell 不要特殊对待某些字符。你可能需要阅读3.1.2 引用在里面Bash 参考手册

当你手动引用时,我建议你选择' '(单引号)形式,因为它是引用多个文本字符的最简单、最容易的方法。如果你想引用的内容本身不包含字符,'那么你可以总是将其括在单引号中,因为开始引用后唯一具有特殊含义的字符''结束引用的后续字符。


最后,你可能想知道发生了什么&当您的命令中没有引号时。

这将把之前的内容 ( cd ISO) 视为一个命令,异步运行在后台,并将其后跟的命令(Emulator)视为第二个命令来运行(在前台,因为它&后面没有命令)。

  1. [1] 1635报告后台作业已经开始(这是第一份工作,进程 ID恰好是1635年)。
  2. bash: Emulator: command not found报告说没有调用命令Emulator
  3. 来自后台作业的消息报告bash: cd: ISO: No such file or directory没有ISO可以更改的目录。
  4. [1]+ Exit 1报告工作1已完成。

相关内容