2010-08-17 2 views
0

Несмотря на то, что мне приходилось осмеливаться в сценариях и командах оболочки, я все же считаю себя новичком, и мне интересно услышать от других то, что они считают важными битками знаний.Каковы наиболее важные концепции/команды оболочки/терминала для начинающих?

Вот пример того, что я считаю важным:

Я думаю, что понимание $ PATH имеет решающее значение. Для запуска psql, например, папка PostgreSQL должна быть добавлена ​​в переменную $ PATH, шаг легко просматривается новичками.

+3

Это должно быть отмечено Community Wiki. – Borealid

ответ

4

Концепция труб. Важным является тот факт, что вы можете легко перенаправить вывод и разделить сложную задачу на несколько простых.

+0

Я согласен, что трубы, безусловно, являются важным инструментом, особенно когда grepping выводится из других команд. – LDK

1

Если вы пишете сценарии оболочки, важная привычка всегда ставит двойные кавычки вокруг переменных подстановок. То есть, всегда пишут "$myvariable" (аналогично «$ (МояКоманда)»), никогда не простой $myvariable или $(mycommand) , если вы не понимаете, почему именно вам нужно оставить их. (Опять же, вопрос не в том, «следует ли использовать кавычки?», «Почему я хочу опустить кавычки?»)

Причина в том, что оболочка делает неприятные вещи, когда вы оставляете переменную подстановкой без кавычек. (Эти неприятные вещи называются разбиением полей и расширением пути. Они хороши в некоторых ситуациях, но почти никогда не являются результатом замены переменной или команды.)

Если вы не укажете кавычки, ваш скрипт может появиться работа на первый взгляд. Это связано с тем, что неприятные вещи происходят только в том случае, если значение переменной содержит некоторые специальные символы (пробелы, \, *, ? и [). Этот вид скрытой ошибки обычно обнаруживается в день создания файла, чье имя содержит пробел, и ваш скрипт заканчивается удалением вашего исходного дерева/тезисов/изображений ребенка/...

Так, например, если у вас есть переменная $filename, которая содержит имя файла, который вы хотите передать в команду, всегда писать

mycommand "$filename" 

и не mycommand $filename .

+0

Это не относится к zsh – ZyX

Смежные вопросы