mkdir 中的详细选项是什么?
What is the verbose option in mkdir?
我正在阅读 Shell (Bash) 脚本 的入门读物,并注意到 mkdir
的联机帮助页描述了一个冗长的创建目录时显示消息的选项:
-v, --verbose
print a message for each created directory
似乎 mkdir -v
打印了一条预定义的消息。有没有办法打印自定义消息?有没有办法永久设置自定义消息而不是默认消息?
你有没有尝试 运行 使用这个标志?
lgml-alfasi2:dotfiles alfasi$ mkdir -v tp
mkdir: created directory 'tp' <-- see why it is called 'verbose' ?
lgml-alfasi2:dotfiles alfasi$
来自男人:
-v Be verbose when creating directories, listing them as they are created.
所以对于你的另一个问题:不 - 你不能 "custom" 预定义的消息
也就是说,这是一个开源项目,所以如果您愿意,您可以创建自己的分支、提交 PR 等:http://opensource.apple.com/source/file_cmds/file_cmds-212/mkdir/mkdir.c
如果您对包装器感到满意,请尝试
mkdir -v "$@" | sed 's/mkdir: created directory /jar-jar: yea, weesa gotta /'
更根本的是,mkdir
中的消息字符串通常或多或少是硬编码的。但是,如果有本地化支持,您实际上可以用自己的消息目录覆盖。
例如,如果您的 mkdir
是使用 gettext
构建的,您可以创建一个新的英语 .po
文件,替换目录创建消息,构建一个新的语言环境,然后 运行 就这样。另见 http://translationproject.org/domain/coreutils.html
这取决于你想要什么,这介于严重矫枉过正和疯狂之间。
您可以创建这样的脚本:
#/bin/bash
/bin/mkdir "$@" |sed -e"s/mkdir: created directory /$USER created folder /"
然后运行那个脚本而不是mkdir。
通过向 sed 添加额外的 -e"s/x/y",为每条要更改的消息修改该脚本。
如果您坚持将其命名为mkdir,那么您可以将其放在搜索路径中的mkdir 之前。
我不建议将其命名为 mkdir。您只会为调用 mkdir
的其他脚本感到悲伤
来自 the source code for mkdir.c
,这是处理 -v
选项的部分:
case 'v': /* --verbose */
options.created_directory_format = _("created directory %s");
break;
如您所见,使用的字符串已硬编码到源代码中。要将消息永久更改为自定义消息,可以修改源代码的这一部分并重新编译mkdir
。
我正在阅读 Shell (Bash) 脚本 的入门读物,并注意到 mkdir
的联机帮助页描述了一个冗长的创建目录时显示消息的选项:
-v, --verbose print a message for each created directory
似乎 mkdir -v
打印了一条预定义的消息。有没有办法打印自定义消息?有没有办法永久设置自定义消息而不是默认消息?
你有没有尝试 运行 使用这个标志?
lgml-alfasi2:dotfiles alfasi$ mkdir -v tp
mkdir: created directory 'tp' <-- see why it is called 'verbose' ?
lgml-alfasi2:dotfiles alfasi$
来自男人:
-v Be verbose when creating directories, listing them as they are created.
所以对于你的另一个问题:不 - 你不能 "custom" 预定义的消息
也就是说,这是一个开源项目,所以如果您愿意,您可以创建自己的分支、提交 PR 等:http://opensource.apple.com/source/file_cmds/file_cmds-212/mkdir/mkdir.c
如果您对包装器感到满意,请尝试
mkdir -v "$@" | sed 's/mkdir: created directory /jar-jar: yea, weesa gotta /'
更根本的是,mkdir
中的消息字符串通常或多或少是硬编码的。但是,如果有本地化支持,您实际上可以用自己的消息目录覆盖。
例如,如果您的 mkdir
是使用 gettext
构建的,您可以创建一个新的英语 .po
文件,替换目录创建消息,构建一个新的语言环境,然后 运行 就这样。另见 http://translationproject.org/domain/coreutils.html
这取决于你想要什么,这介于严重矫枉过正和疯狂之间。
您可以创建这样的脚本:
#/bin/bash
/bin/mkdir "$@" |sed -e"s/mkdir: created directory /$USER created folder /"
然后运行那个脚本而不是mkdir。
通过向 sed 添加额外的 -e"s/x/y",为每条要更改的消息修改该脚本。
如果您坚持将其命名为mkdir,那么您可以将其放在搜索路径中的mkdir 之前。
我不建议将其命名为 mkdir。您只会为调用 mkdir
的其他脚本感到悲伤来自 the source code for mkdir.c
,这是处理 -v
选项的部分:
case 'v': /* --verbose */
options.created_directory_format = _("created directory %s");
break;
如您所见,使用的字符串已硬编码到源代码中。要将消息永久更改为自定义消息,可以修改源代码的这一部分并重新编译mkdir
。