Linux中打印命令代替echo

Linux中打印命令代替echo

echo我只需使用 linux命令在终端中打印一条消息。

prayag@prayag$ echo "prayag works on JVM"
prayag works on JVM

print我可以使用命令得到相同的输出吗?

我实际上浏览了他们的手册,其中将$ man print其描述为 Run-mailcap-programs,这是我以前从未听说过的术语。并了解到它用于基于 MIME 查找打开文件的正确程序。

那么有什么办法可以打印一条简单的线单独使用print而不是echo?

发现类似的问题需要将文本文件的内容分配给 bash 脚本中的变量echo,但是那边的人建议print

我尝试跟随,但遇到了问题。

$ print --"text/plain" "prayag works on JVM"
Warning: unknown mime-type for "prayag works on JVM" -- using "application/octet-stream"
Error: no such file "prayag works on JVM"

它要求提供一个文件,并提供文件。

$ print --"text/plain" application.properties 
Warning: unknown mime-type for "application.properties" -- using "application/octet-stream"
Error: no "print" mailcap rules found for type "application/octet-stream"

awk但与命令和提供的文件结合使用,

$ awk '{print}' application.properties 
prayag works on JVM

答案1

您在这里混淆了很多事情,让我尝试为您梳理一下。

  1. awk '{print}' ...

    print这和你问的问题没有关系。awk是一种动态编程语言,它包含自己的命令,其中print之一。

  2. print --"text/plain" "prayag works on JVM"和其他形式

    该命令print用于根据 mailcap 文件的内容显示文件,对每种特定文件类型使用指定的“处理程序”,而不是将字符串打印到屏幕上。

    打印手册页摘录

    run-mailcap、查看、查看、编辑、撰写、打印 - 通过 mailcap 文件中的条目执行程序

    run-mailcap(或其任何别名)将使用给定的操作依次处理每个 mime 类型/文件。每个文件都被指定为它的 mime 类型、编码(例如压缩)和文件名,并用冒号分隔。如果省略 mime-type,则会通过尝试将文件扩展名与 mime.types 文件中的扩展名进行匹配来尝试确定类型。如果省略编码,也将从文件的扩展名确定。当前支持的编码有 gzip (.gz)、bzip (.bz)、bzip2 (.bz2) 和 compress (.Z)。文件名“-”可用于表示“标准输入”,但必须指定 mime 类型。

  3. echo

    该命令echo是您正在使用的 shell 的内置命令,称为 Bash(我假设您正在使用 Bash)。您可以使用以下命令确认这一点:

    $ type -a echo
    echo is a shell builtin
    echo is /bin/echo
    

    您会注意到这echo也是一个独立的可执行文件,/bin/echo.这是与您正在使用的命令不同的命令echo,但具有类似的目的。

  4. print在 zsh/ksh 等 shell 中

    感谢@Gilles 评论,print您正在寻找的命令很可能是内置于 shell 中的命令,例如zshand/or ksh。您可以通过手册页查看其用法man zshbuiltins

    例子

    zsh % print "hello world"
    hello world
    

    zsh您可以通过键入或 来运行这些 shell 之一ksh

打印函数

也许您正在寻找命令printf

$ printf "%s\n" "hello stringy world"
hello stringy world

$ printf "this is some padded digits: %04d\n" "10"
this is some padded digits: 0010

该命令printf采用一组特殊字符的格式,以便您可以指示它如何显示字符串或数字等内容。请参阅 的手册页printf

邮件帽

所以很多人可能都忘记了该文件/etc/mailcap。该文件包含 mime 类型(文件的标头,用于标识文件的文件类型)。然后,您可以在此mailcap文件中创建条目,指定使用什么工具打开文件的特定 mime 类型。

例子

text/html; /usr/bin/sensible-browser '%s'; description=HTML Text; nametemplate=%s.html
application/x-troff-man; /usr/bin/nroff -mandoc -Tutf8; copiousoutput; print=/usr/bin/nroff -mandoc -Tutf8 | print text/plain:-
application/x-ogg; /usr/bin/mplayer '%s'; description="OggVorbis Audio"
application/ogg; /usr/bin/mplayer '%s'; description="OggVorbis Audio"
audio/mpeg; /usr/bin/mplayer '%s'; description="MPEG Audio Format"
audio/x-mpegurl; /usr/bin/mplayer '%s'; description="Icecast Playlists"
audio/x-ms-wax; /usr/bin/mplayer '%s'; description="Audio Format"

上面几行表示,如果您获得 mime-type 的文件audio/mpeg,则使用该工具/usr/bin/mplayer打开该文件。

mailcap这些规则通常由电子邮件工具使用,但其他工具也可以利用文件中的这些条目。

如果您有兴趣了解有关 mime 类型或 mailcap 的更多信息,请参阅以下参考资料。

参考

答案2

您可以使用 printf 命令来执行此操作,

 # printf Hello World
 Hello

 # printf "Hello World"
 Hello World

好吧,您确实需要使用 print commnad 然后您可以添加别名

 # alias print='echo'

 # print Hello World
 Hello World

 # unalias print  < -- to revert.

还可以设置永久,

 # export print='echo'

 # print Hello Linux
 Hello Linux

所以,

# export | grep print
declare -x print="echo"

# unset print   < -- to revert.
# export | grep print

答案3

  • printf:更便携,C 风格
  • print :更可控(ksh、zsh)

至于zsh,我认为print比echo要好。

将每个实体显示在单独的行中:
print -l $fpathvsecho $fpath | sed 's/ /\n/g'

相关内容