Linux mkdir中的详细选项是什么?

Linux mkdir中的详细选项是什么?,linux,bash,shell,sh,mkdir,Linux,Bash,Shell,Sh,Mkdir,我正在学习Shell(Bash)脚本入门,注意到mkdir的主页描述了一个详细选项,在创建目录时显示一条消息: 似乎mkdir-v打印了一条预定义的消息。有没有打印自定义邮件的方法?是否有办法永久设置自定义消息而不是默认消息?是否尝试使用此标志运行它 lgml-alfasi2:dotfiles alfasi$ mkdir -v tp mkdir: created directory 'tp' <-- see why it is called 'verbose' ? lgml-alfasi

我正在学习Shell(Bash)脚本入门,注意到
mkdir
的主页描述了一个详细选项,在创建目录时显示一条消息:


似乎
mkdir-v
打印了一条预定义的消息。有没有打印自定义邮件的方法?是否有办法永久设置自定义消息而不是默认消息?

是否尝试使用此标志运行它

lgml-alfasi2:dotfiles alfasi$ mkdir -v tp
mkdir: created directory 'tp'  <-- see why it is called 'verbose' ?
lgml-alfasi2:dotfiles alfasi$
因此,对于您的另一个问题:否-您不能“自定义”预定义消息


这就是说,这是一个开源项目,所以如果您喜欢,您可以创建自己的fork,提交PR等:

如果您对包装器感到满意,请尝试以下方法

mkdir -v "$@" | sed 's/mkdir: created directory /jar-jar: yea, weesa gotta /'
更基本的是,
mkdir
中的消息字符串通常或多或少是硬编码的。但是,如果有本地化支持,您实际上可以使用自己的目录覆盖消息目录

例如,如果您的
mkdir
是使用
gettext
构建的,您可以创建一个新的英文
.po
文件,替换目录创建消息,构建一个新的区域设置,然后使用该文件运行。另见


根据您的需要,这介于严重的过度杀戮和疯狂之间。

您可以创建如下脚本:

#/bin/bash

/bin/mkdir "$@" |sed -e"s/mkdir: created directory /$USER created folder /"
然后运行该脚本而不是mkdir

通过在sed中添加额外的-e“s/x/y”来修改要更改的每条消息的脚本

如果您坚持将其命名为mkdir,则可以将其放在mkdir之前的搜索路径中

我不建议将其命名为mkdir。您只会为从调用mkdir的其他脚本而感到悲伤,这是处理
-v
选项的部分:

    case 'v': /* --verbose  */
      options.created_directory_format = _("created directory %s");
      break;

如您所见,所使用的字符串是硬编码到源代码中的。要将消息永久更改为自定义消息,可以修改源代码的这一部分并重新编译
mkdir

消息打印为标准错误,这样您的
sed
就看不到
mkdir
@tripleee的输出:我在mac上测试过,mkdir将消息输出到stdout。我没有在Linux上测试。OP要求使用Linux,所以我的不好。另外,你应该总是双引号
“$@”
@tripleee:我刚刚在CentOS 6.3上测试过。冗长的消息来自标准输出。你在什么Linux上测试?对不起,你是对的,我一定是第一次打错了什么东西。
。(…)
表示它不是严格的硬编码。相反,对硬编码的源字符串执行
gettext
查找,查找的结果就是实际打印的内容。链接是指向OSX源(即基本上是BSD),而不是Linux(即GNU
coreutils
)。@tripleee你说得对,google显示了mkdir的多个版本,例如权威源代码是
#/bin/bash

/bin/mkdir "$@" |sed -e"s/mkdir: created directory /$USER created folder /"
    case 'v': /* --verbose  */
      options.created_directory_format = _("created directory %s");
      break;