Как я могу просмотреть справочную или шпаргалку основного синтаксиса bash в терминале linux?

8

Каждый раз, когда мне нужно выполнить небольшой сценарий bash, включающий операторы if, проверку на наличие пустых переменных и несуществующих файлов и т. Д. Я попадаю в Google, чтобы найти простое руководство или руководство по bash.

Часто они слишком длинные и сложные, чтобы быстро ответить на вопрос, который у меня есть.

Итак, я подумал, что должна быть какая-то команда или страница руководства, которая покрывает основной синтаксис bash (для таких вещей, как операторы if, проверки на наличие пустых переменных, несуществующие файлы и т. Д.) В краткой и доступной форме. Я уверен, что я просто не узнал команду (похоже, что bash не тот).

Где я могу найти это?

Самуэль Лампа
источник
2
в bashвы можете попробоватьhelp
mikeserv
github.com/cirosantilli/bash-cheat
Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功

Ответы:

13
  • man bash каноническая ссылка Bash.
  • help helpдает вам помощь по helpвстроенной функции Bash, и как она дает вам короткие справочные сообщения о других встроенных программах Bash, таких как help for.
  • Wiki Грега - это лучшее место, где можно найти краткий, краткий, а иногда даже развлекательный справочный материал практически по всем аспектам Bash.
  • Если вам нужен быстрый способ поиска синтаксиса, вы можете управлять версиями.bash_history . Есть слишком много команд, различные Синтаксисов параметров, sedи awkлиния шума и другие вещей , чтобы всегда помнить все это, так приятно иметь «хорошо ухоженные» личные ссылки с тегами , чтобы посмотреть в.
l0b0
источник
+1 за упоминание help.
Златовласка
1
Спасибо! Как упоминалось в ответе @ polym, я явно использовал неправильные поисковые термины в man bash («операторы if», «[-n» и т. Д.) Безрезультатно, и поэтому думал, что информации там нет. Поиск «условных выражений» был правильным поисковым термином.
Самуэль Лампа
2
У меня равное количество любви и ненависти к этому моменту ... 10 лет ... не знал, helpбыл ли там. Так много ненужного man bashчтения не требуется!
Мэтт
13

Так как в Интернете есть много таких вещей , вот совет для вас; Я использую это для всех видов вещей.

Создать каталог $HOME/notes. Добавить подпапку bash. Если у вас нет $HOME/bin, создайте его, добавьте его к своему пути, используя любой метод, который вы предпочитаете ( например, в~/.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.txt, loops.txtи т.д. Пока это только для личного пользования, вы не нарушая авторских прав.

Теперь вы можете использовать это из командной строки, например: cmdref bash arraysи этот шпаргалка будет напечатана на консоли. Обратите внимание, что, хотя файлы .txt(опять же, использование соответствующих суффиксов полезно для редакторов, файловых браузеров и т. Д.) Не следует использовать, cmdref bash arrays.txtтак как они добавляются cmdref.sh(единственное, что делает скрипт - это преобразование путей и добавление суффикса).

лютик золотистый
источник
Великолепный! Отличная идея, она научила меня нескольким вещам, о которых я не думал, насколько гибок и настраиваем Linux.
Могучий
@goldilocks Я не понимаю, почему вы упомянули символическую ссылку на файл сценария, в частности: «Мне нравится делать это, чтобы вы могли редактировать исходный код cmdref.sh, и редактор по-прежнему будет распознавать тип файла по суффиксу». Не могли бы вы объяснить? Означает ли это, что я могу это сделать, vi cmdrefи vim откроет «cmdref.sh», а затем я смогу его отредактировать, или я что-то упускаю здесь очевидное?
Компьютерщик
@ Geek AFAIK все редакторы в основном используют суффикс файла, чтобы определить подсветку синтаксиса WRT типа файла (в противном случае в лучшем случае было бы схематично, но для некоторых инструментов это может быть запасной вариант, если они не распознают суффикс). Так что если вы vi ~/bin/cmdref, vim, на самом деле не знаете, что это за файл, и для подсветки будете использовать значение по умолчанию (я так думаю .txt). Но если вы vi ~/bin/cmref.sh, vim, знаете, что файл является сценарием оболочки, и выделение будет иметь смысл. Но WRT команда, которую вы хотите ввести cmdref, а не cmdref.sh. Вот почему я использую символическую ссылку.
Златовласка
В качестве дополнения к этому: viсама по себе обычно является символической ссылкой vim, поэтому вы вообще получаете подсветку синтаксиса (я думаю, у оригинального «vi» такой функции не было). И: ВЬЕТ на самом деле является достаточно умно , чтобы признать , что сценарий как сценарий оболочки , если файл не имеет суффикса, но принцип стоит;) В редких случаях , возможно , я должен / хочу использовать что - то менее умное.
Златовласка
... если вы хотите увидеть разницу, загрузите .shфайл в vim и set filetype=txt- eek!
Златовласка
3

man bashохватывает все аспекты Баша синтаксиса, например , для if statements, string is zeroи non-existent files, просто поиск (нажмите на /кнопку и введите следующий) для CONDITIONAL EXPRESSIONS.

Polym
источник
1
Ах, действительно. Мой мозг должен быть выключен, или его не хватает, так как я не нашел этот поисковый термин (я пытался искать слова «если заявления», «\ '[-n» и т. Д. Безрезультатно). Спасибо!
Самуэль Лампа
1
@SamuelLampa, если вы используете страницу руководства bash достаточно (это не займет много времени), вы почувствуете ее структуру, так что вы можете сказать, что там и где находится, прежде чем вы на самом деле посмотрите ее.
Дэвид З,