代码之家  ›  专栏  ›  技术社区  ›  David542

如何在bash命令中转义双引号

  •  2
  • David542  · 技术社区  · 6 年前

    我有以下命令,我正试图附加到我的 ~/.bash_profile

    echo 'alias N="cd $(pwd) && source ./bin/activate && cd new""
    

    alias N="cd /Users/david/Desktop/django2 && source ./bin/activate && cd new"
    

    怎样才能正确地逃离这场灾难 pwd 还是引用?

    3 回复  |  直到 6 年前
        1
  •  3
  •   anubhava    6 年前

    这应该适合您:

    echo "alias N='cd $(pwd) && source ./bin/activate && cd new'"
    

    但是,建议您使用函数而不是 alias .

    echo "N() { cd '$PWD' && source ./bin/activate && cd new; }"
    

    注意使用 $PWD 而不是命令 pwd

        2
  •  2
  •   bishop    6 年前

    回音 " \ :

    echo "alias N=\"cd $(pwd) && source ./bin/activate && cd new\""
    

    我的盒子上的输出:

    alias N="cd /home/bishop/ && source ./bin/activate && cd new"
    

    但是,您的用例向我建议了一个函数:

    go() {
        local where
        where=${1:-${PWD}}
        cd "${where}" && source ./bin/activate && cd new
    }
    
        3
  •  1
  •   that other guy    6 年前

    使用here文档避免过度转义:

    cat >> ~/.bash_profile << EOF
    alias N="cd $(pwd) && source ./bin/activate && cd new"
    EOF