Linux

如何簡化輸出重定向命令行?

  • May 23, 2022

我在我的 Linux 環境中經常使用輸出重定向命令,例如,

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

我想省略echo .... >....並使用這個命令

mymodule set number 10

有人告訴我 bash 可以做到這一點,但我不知道該怎麼做?有人可以給我一個例子嗎?

似乎最好使用 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

引用自:https://unix.stackexchange.com/questions/703539