Как научиться эффективно работать с Unix CLI - PullRequest
6 голосов
/ 22 ноября 2008

Знаете ли вы какие-либо ресурсы, которые учат хорошим навыкам работы в командной строке UNIX?

РЕДАКТИРОВАТЬ: Я не имею в виду общие книги о оболочке или man-страницах. Я имею в виду то, что вы можете видеть только наблюдая за профессионалами, работающими с командной строкой. Например, при частом переключении между двумя каталогами они используют команду «pushd», при повторении команды они используют «историю». Я могу прочитать об этих командах, но хочу сделать их привычкой эффективно их использовать.

Ответы [ 9 ]

7 голосов
/ 22 ноября 2008

Я говорю из собственного опыта, поэтому он может не относиться к вам;

Лучший способ быть эффективным - это использовать его на ежедневной основе вместо использования графических инструментов, даже если они упрощают внешний вид. Затем вы узнаете о наиболее распространенных задачах, которые вас волнуют, и вместо того, чтобы пытаться выполнить их сразу, вы получите довольно хорошую отправную точку для начала обучения. Руководства - это первое, на что нужно обратить внимание, но будут неочевидные приемы, которые вам все равно придется искать. Знание того, что вы точно хотите, бесконечно увеличивает вероятность его нахождения.

Например, вы можете найти, как проще найти все mp3-файлы в справочной странице "find", чем как вообще обращаться с файлами (с чего начать?).

4 голосов
/ 23 ноября 2008

Некоторые общие действия командной строки bash, не по порядку:

  • Редактирование командной строки: вам нужно хорошо работать с emacs или vi и применять это для редактирования ваших команд.
  • Завершение: используйте TAB для расширения имен файлов и путей.
    • примечание: существует огромный набор функций завершения файлов, команд и истории, которые можно настраивать. Большая тема.
  • "cd -": вернуться в последний каталог, в котором вы были
  • ~ = домашний каталог (или ~ user для пользователей home dir)
  • "ESC." : расширяется до последнего аргумента из предыдущей команды
  • "! String": выполнить последнюю команду, начиная со строки
  • учиться находить, grep, sed, piping "|" и перенаправление ">". Вы будете часто комбинировать их, чтобы делать полезные вещи.
  • Циклы из приглашения оболочки, например цикл for - выполнять повторяющиеся действия
  • Узнай свои регулярные выражения! Часто используется для сопоставления файлов.
    • пример: ls x [0-5] *. {Zip, tar} = список файлов, начинающихся с x, за которыми следуют цифры от 0 до 5, за которыми следует любая строка, заканчивающаяся на .zip или .tar

Если возможно, спросите у других их любимые трюки, прочтите руководство и попрактикуйтесь.

3 голосов
/ 22 ноября 2008

это отличный ресурс: «Учебник и экспозиция Rute User» (http://rute.2038bug.com/index.html.gz)

)
3 голосов
/ 22 ноября 2008

Для более продвинутых вещей Этот кажется довольно полным

1 голос
/ 23 ноября 2008

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

Хотя это, безусловно, помогает ознакомиться с доступными инструментами (которых существует множество), «обучение» требует его применения. И для его применения требуются "настоящие" проблемы.

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

Я использую их для обработки данных, используя в основном один файл. /tmp/x.sh и /tmp/x.x не используются в папке каталога.

Мои молотки склоняются к: ls, find, sort, sed, vi, awk, grep и comm. В сочетании с простыми сценариями оболочки, как: для я в cat /tmp/list; сделать .. сделано

Но я много работаю над ETL и очень мало файлов сценариев, поэтому мои навыки написания сценариев в оболочке такие слабые.

Однако я полагаюсь на один скрипт:

#!/bin/sh
# latest -- show latest files
ls -lt $@ | head

Поскольку 95% времени файлы, над которыми я работаю, находятся в топ-10 последних файлов. И "последний * .txt" работает персик.

Итак, суть, вам нужно решить проблемы. Вам нужно выучить команду 'man', man -k приятно находить вещи. Вам также необходимо использовать «См. Также» внизу большинства справочных страниц. Это сокровищница "Я не знал, что ты можешь это сделать".

Тогда просто начинайте решать проблемы. Начните выяснять, «что было бы неплохо иметь», а затем посмотрите, существует ли оно (это вполне возможно) Если нет, то awk, perl или python могут сделать этих "хороших имущих" из воздуха.

1 голос
/ 22 ноября 2008

Если вам нужны вещи, которые вы можете «видеть только наблюдая за профессионалами, работающими с командной строкой», то вы ответили на свой вопрос: смотрите за профессионалами, работающими с командной строкой. Лично я не нахожу это очень полезным, если другой человек не делает то же самое несколько раз; трудно что-то поднять после одного сеанса, потому что трудно одновременно наблюдать за экраном и клавиатурой.

Я думаю, что ключ в том, чтобы не пытаться сразу стать экспертом. Просто используйте командную строку часто и помните, что вы можете использовать ее не так хорошо, как могли бы, но не позволяйте этому отговорить вас от ее использования в любом случае.

Просмотрите справочную страницу вашей оболочки и списки советов, не с целью запомнить все в них, а просто выбрать пару вещей, чтобы попробовать. Просматривайте, пока что-то не попадется вам на глаза и не заставит задуматься: «Ну и дела, это звучит полезно». Тогда попробуйте. Не все сразу пригодится; вам, возможно, придется подождать некоторое время, прежде чем вы столкнетесь с ситуацией, когда вы сможете попробовать что-нибудь. Может быть, вы могли бы записать некоторые вещи в заметках Post-It у своего стола, чтобы напомнить вам, что некоторые умения возможны, поэтому, когда вы столкнетесь с ситуацией, когда вам может пригодиться более неясная функция, вы с большей вероятностью не забудете ее попробовать. .

1 голос
/ 22 ноября 2008

stackoverflow.com esp. тег bash ;-) (и, конечно, страница руководства по bash )

0 голосов
/ 23 февраля 2009

кстати, действительно хороший инструмент для такого рода вещей. Всякий раз, когда вы не знаете, как лучше всего что-то сделать, или хотите, чтобы вы не повторяли себя, просто используйте apropos с одним или двумя ключевыми словами, чтобы найти другие команды, которые могут помочь. В таких дистрибутивах, как debian, вы также можете установить веб-справочные инструменты, которые будут искать все руководства, доступные в системе: texinfo, man-страницы, html, pdf и т. Д.

Кроме того, да, хотя бы раз прочитайте руководство по вашей оболочке - желательно, возвращайтесь к нему несколько раз, когда вы узнаете больше, достигнете пределов и хотите быть более эффективными.

Идея присоединения к LUG тоже хороша; вы определенно будете учиться на чужих демонстрациях.

0 голосов
/ 23 ноября 2008

Присоединяйтесь к LUG. Именно здесь я узнал большинство вещей на ранней стадии. Попросите организаторов провести «Ночь Bash Tips And Tricks».

Ловкие пользователи оболочки любят хвастаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...