cd到包含在macOS上的Bash中的变量中存储的空格的路径

时间:2019-02-25 20:07:28

标签: bash macos cd quoting

我有

const productSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 1,
    maxlength: 255
  },
  extraData: {
    brand: {
      type: String,
      required: true,
      minlength: 1,
      maxlength: 255
    },
    quantity: {
      type: Number,
      required: true,
      minlength: 1,
      maxlength: 10
    },
   required: true
  }
});

当我执行TrueextraData.required时遇到错误。我不想做x="/dir 1" y=/dir\ 2 ,因为

  1. 我不知道哪个变量包含带空格的路径
  2. 不方便

有什么解决方法吗?

1 个答案:

答案 0 :(得分:3)

有一个shell option告诉Bash检查cd的参数是否为包含路径的变量:

shopt -s cdable_vars
y='/dir 2'
cd y

其中cd y等效于cd "$y"

从手册:

  

cdable_vars
  如果设置了该参数,则将cd内置命令的参数(不是目录)视为变量的名称,该变量的值是要更改的目录。


bash-completion的最新版本检查是否设置了shell选项,并提供了用于完成cd的变量名的功能,但是要使其正常工作,必须在加载完成功能之前设置shell选项

cd的默认完成设置是

complete -F _cd -o nospace cd pushd

要为此添加变量完成,它已更改为

complete -v -F _cd -o nospace cd pushd