我的.bashrc文件包含:
# mkdir, cd into it
function mkcd ()
{
mkdir -p "$*"
cd "$*"
}当我在shell中输入mkcd时,就会得到mkcd: Command not found。当我输入source ~/.bashrc时,会得到一个错误:
Badly placed ()'s.
顺便说一下,我的文本编辑器(emacs)正在将代码识别为Shell-script[tcsh]。
我该怎么解决这个问题?
发布于 2014-01-24 20:31:32
如果您可以接受必须将要创建的目录的名称作为第一个参数传递的限制,则应该如下所示:
# mkdir, cd into it
function mkcd ()
{
mkdir -p "$@"
cd "$1"
}您需要运行source ~/.bashrc才能让它正常工作(或者启动一个新的shell)。
发布于 2014-01-24 23:25:05
关于这一职能的三项评论。这主要是可行的。要抓到几个角落的箱子:
function mkcd { ...; }或mkcd() { ...; }。第一种方法与ksh兼容,但前提是必须删除()。mkcd()表示法是标准的POSIX符号。mkdir -p也可能失败,所以将cd作为mkdir的条件。mkdir和cd的一个参数。只使用一个参数,并在参数替换中使用:?修饰符测试它是否有一个值。这将阻止函数向您发送$HOME。合起来:
function mkcd
{
mkdir -p "${1:?}" && cd "${1}"
}将其放入您的.bashrc并打开一个新的shell。type mkcd型这应以下列方式作出反应:
mkcd is a function,然后是它的定义。
发布于 2014-01-24 21:29:41
我在bash 4.2.45和Linux3.8.0上运行了mkcd函数,它正常工作。在新窗口登录或运行
source ~/.bashrc 在您现有的窗口中应该为您定义函数。如果它不起作用,您将收到如下错误消息:
mkcd: command not found虽然hek2mgl的建议不是使它工作所必需的,但它确实使它更有意义,因为您只需要将cd转到一个目录。
https://stackoverflow.com/questions/21341841
复制相似问题