如何简化输出重定向命令行?

如何简化输出重定向命令行?

我在Linux环境中经常使用输出重定向命令,例如:

echo mymodule set number 10 >/proc/aaaa/bbbb_cmd

我想省略echo .... >....并使用这个命令,例如

mymodule set number 10

有人告诉我 bash 可以做到这一点,但我不知道该怎么做?有人能给我举个例子吗?

答案1

似乎 shell 函数最适合您:

mymodule () {
    local IFS=' '
    printf 'mymodule %s\n' "$*" >/proc/aaaa/bbbb_cmd
}

这定义了 shell 函数mymodule。它将写入该字符串mymodule,后跟您在命令行上提供的任何其他字符串,以空格分隔/proc/aaaa/bbbb_cmd

"$*"扩展为命令行参数列表,与作为$IFS分隔符的第一个字符(默认情况下为空格,但我们在此处明确将其设置为空格,以便函数仍然可以在$IFS已修改的上下文中工作)连接成单字符串。

shell 函数定义可以放置在您通常放置别名的任何位置,或者放置在您的~/.bashrc文件或等效文件中。该函数将在您启动的下一个 shell 会话中可用。

您将像问题中所示那样使用此 shell 函数:

mymodule set number 10

相关内容