我想做这个:
echo alias get_python_lib='python -c "from distutils.sysconfig import get_python_lib; print get_python_lib();"' >> ~/.bash_aliases
我的文件中的结果~/.bash_aliases
是:
alias get_python_lib=python -c "from distutils.sysconfig import get_python_lib; print get_python_lib();"
不幸的是,该echo
命令去掉了第一组撇号('),因此别名不起作用。
我尝试了各种撇号和引号交换方式,并使用了我能找到的所有替代命令(,,,echo
),但没有任何效果。type
cat
printf
当文本行需要所有撇号和引号时,如何将一行文本附加到文件中?
答案1
转义引号有效,并且添加包装引号也有效:
echo alias get_python_lib=\'python -c "\"from distutils.sysconfig import get_python_lib; print get_python_lib();\""\' >> ~/.bash_aliases
$ cat .bash_aliases
alias get_python_lib='python -c "from distutils.sysconfig import get_python_lib; print get_python_lib();"'
答案2
或者将所有参数括在双引号中,echo
并转义内部双引号
echo "alias get_python_lib='python -c \"from distutils.sysconfig import get_python_lib; print get_python_lib();\"'" >> ~/.bash_aliases