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

时间:2018-10-04 15:35:32

标签: bash shell

我有以下命令,我试图将其附加到我的~/.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 个答案:

答案 0 :(得分:3)

这应该对您有用:

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

但是,建议您使用函数代替alias

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

请注意使用$PWD代替命令pwd

答案 1 :(得分:2)

要在双引号字符串内回显文字",请使用转义字符\

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
}

答案 2 :(得分:1)

避免在此处文档中过度转义:

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