将别名命令从tcsh转换为bash

将别名命令从tcsh转换为bash,bash,csh,tcsh,Bash,Csh,Tcsh,我对bash还不熟悉。 我想将下面的alias命令格式tcsh转换为bash: alias buzz 'echo \!$;if (-e ~/.sshelp.txt) grep -i \!$ ~/.sshelp.txt && echo \!$;if (-e ~/.sshelp_qct.txt) grep -i \!$ ~/.sshelp_qct.txt ' 我尝试了下面的命令,但它不工作。有什么建议吗 alias buzz= 'echo \!$;if (-e ~/.sshelp.

我对bash还不熟悉。 我想将下面的alias命令格式tcsh转换为bash:

alias buzz 'echo \!$;if (-e ~/.sshelp.txt) grep -i \!$ ~/.sshelp.txt && echo \!$;if (-e ~/.sshelp_qct.txt) grep -i \!$ ~/.sshelp_qct.txt '
我尝试了下面的命令,但它不工作。有什么建议吗

alias buzz= 'echo \!$;if (-e ~/.sshelp.txt) grep -i \!$ ~/.sshelp.txt && echo \!$;if (-e ~/.sshelp_qct.txt) grep -i \!$ ~/.sshelp_qct.txt '

bash
中定义函数。C shell定义别名是因为它们不支持函数。我认为以下(大致)相当

buzz () {
    echo "$1"
    if [ -e ~/.sshelp.txt ]; then
        grep -i "$1" ~/.sshelp.txt && echo "$1"
    fi
    echo "$1"
    if [ -e ~/.sshelp_qct.txt ]; then
        grep -i "$1" ~/.sshelp_qct.txt
    fi
}

为什么不在
.bashrc
中使用
函数
。至少读起来会更简单,也不会保证太多的引号转义。删除=@JonathonK后面的空格有些不相关,因为正文的大部分内容无论如何都是无效的
bash
。感谢我尝试了上面的代码,但它给出了一个错误:意外标记附近的语法错误`{我把上面的代码放在~/.alias文件中,然后把.alias文件放在.bashrupdate中,如果我把上面的代码直接放在.bashrc中,它就可以工作了。但是如果我把它放在~/.alias文件中,然后把它放在~/.bashrc中,它就会崩溃。