如何在linux终端中查看基本bash语法的参考或备忘单?


8

每次我需要做一些bash脚本,包括if语句,检查空变量和不存在的文件等。我发现自己在google上找到了一些简单的bash手册或指南。

这些通常太长且太复杂,无法快速回答我手头的问题。

因此,我在想,必须有一些命令或手册页以简短且易于访问的方式涵盖基本的bash语法(用于if语句,检查空变量,不存在的文件等)。我确定我还没有找到命令(man bash似乎不是这样)。

在哪里可以找到?


2
bash你可以尝试help
mikeserv

Answers:


13
  • man bash 是规范的Bash参考。
  • help help为您提供有关helpBash内置程序的帮助,以及如何为您提供有关其他Bash内置程序的简短帮助消息,例如help for
  • Greg的Wiki是查找Bash几乎每个方面的要点,简洁甚至有时甚至有趣的参考资料的最佳场所。
  • 如果您想要一种快速的语法查询方法,可以使用version control.bash_history。有太多的命令,不同的参数语法,sed以及awk线路噪声和其他的东西永远记住这一切,所以这是很好的有一个“很好的梳理”个人参考标签中查找。

+1提及help
goldilocks 2014年

1
谢谢!如@polym的回答中所述,我显然在man bash中使用了错误的搜索词(“ if语句”,“ [-n”等),但无济于事,因此认为该信息不存在。在这里搜索“条件表达式”是正确的搜索词。
塞缪尔·兰帕

2
在这一刻,我有同等的爱与恨……十年……不知道help在那里。不需要那么多不必要的man bash阅读!
马特

13

由于在线上有很多这样的东西,所以这里有个建议。我用它来做各种各样的事情。

创建一个目录$HOME/notes。添加一个子文件夹bash。如果您没有$HOME/bin,请创建一个,然后使用您喜欢的任何方法(例如:in~/.bashrc)将其添加到您的路径。然后在其中放一个简单的脚本cmdref.sh

#!/bin/bash

if [ -z "$CMREF_DIR" ]; then
        CMREF_DIR="$HOME/notes"
fi

cat "$CMREF_DIR/${1}/${2}.txt"

为方便起见,使用符号链接ln -s ~/bin/cmdref.sh ~/bin/cmdref;我喜欢这样做,因此您可以编辑cmdref.sh源代码,编辑器仍然可以通过后缀识别文件类型。

将任何内容复制粘贴到各种文件中~/notes/bash,例如,您可以拥有一个文件arrays.txtloops.txt等等。只要这是供您个人使用,就不会侵犯版权。

您现在可以在命令行中使用它,例如:cmdref bash arrays并且该备忘单将被打印到控制台。请注意,尽管文件是.txt(同样,使用适当的后缀对编辑器,文件浏览器等很有用),但您不应使用,cmdref bash arrays.txt因为它们是附加在后的cmdref.sh(脚本唯一要做的就是转换路径并添加后缀)。


华丽!好主意,并教会了我一些我从未考虑过的关于Linux灵活和可自定义的东西。
强大的

@goldilocks我不明白您提到的脚本文件符号链接的原因,特别是“我喜欢这样做,因此您可以编辑cmdref.sh源,并且编辑器仍可以通过后缀识别文件类型。” 你能解释一下吗?这是否意味着我可以做,vi cmdref并且vim将打开“ cmdref.sh”,然后可以对其进行编辑?或者我是否在这里遗漏了一些明显的内容?
极客2014年

@Geek AFAIK所有编辑器主要使用文件后缀来确定文件类型WRT语法高亮显示(最好以其他方式进行粗略介绍,但如果某些工具无法识别后缀,则可能是后备)。因此,如果您使用vi ~/bin/cmdref,vim并不真正知道这是哪种文件,而是会使用默认值突出显示(我认为是.txt)。但是,如果您使用vi ~/bin/cmref.shvim知道该文件是shell脚本,则突出显示将是有意义的。但是WRT是您要键入的命令cmdref,而不是cmdref.sh。这就是为什么我使用符号链接。
goldilocks

作为补充说明:vi它本身通常是的符号链接vim,这就是为什么您要语法高亮显示的原因(我认为原始的“ vi”没有这种功能)。和:VIM实际上足够聪明,认识到脚本作为shell脚本,如果文件没有后缀,但原理站;)在极少数情况下,也许我需要/想使用的东西少聪明。
goldilocks

...如果要查看区别,请.sh在vim中加载文件,然后set filetype=txt-瞧!
goldilocks

3

man bash占地面积bash的语法,例如用于各个方面if statementsstring is zero并且non-existent files,只要搜索(打/键,并输入以下)进行 CONDITIONAL EXPRESSIONS


1
嗯,的确如此。我的大脑必须关闭或缺少,因为我没有想到该搜索词(我试图搜索“ if语句”,“ \'[-n”等都无济于事)。谢谢!
塞缪尔·兰帕2014年

1
@SamuelLampa如果您对bash手册页的使用足够多(花费不多),您将对它的结构有所了解,因此可以在实际查找它之前告诉其中的内容和位置。
David Z
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.