Как узнать свой путь через оболочку Linux

Я хочу прекратить потерять драгоценное время при работе с оболочкой Linux/Unix.

Если бы я мог понять это хорошо, это было бы здорово. В противном случае:

  • Я могу потерять день только для создания crontab.
  • Я буду продолжать задаваться вопросом, почему shebang в этом script не работает.
  • Я буду продолжать задаваться вопросом, какова реальная разница между:
    • . run.sh
    • ./run.sh
    • ../run.sh
    • sh run.sh
    • sh./run.sh

Вы видите, это такие вещи, которые калечат мою жизнь Linux/Unix.

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

Какое окончательное решение?

Ответ 1

Человеческие страницы, вероятно, являются "окончательным" решением. Я всегда удивляюсь, какие драгоценности они содержат.

Вы можете даже использовать man bash для ответа на некоторые вопросы, которые вы задаете в этом вопросе.

Ответ 2

Просто для удовольствия:

  • . run.sh --- "Источник" кода в run.sh. Обычно это используется для преобразования переменных среды в текущие процессы оболочки. Вероятно, вы не хотите этого для script, называемого run.sh.

  • ./run.sh --- Выполните run.sh script в текущем каталоге. Обычно текущий каталог не находится в пути по умолчанию (см. $PATH), поэтому вам нужно явно вызывать относительное местоположение. Символ . используется иначе, чем в элементе # 1.

  • . ./run.sh --- Источник run.sh script в текущем каталоге. Это сочетает использование . с элементами №1 и №2.

  • sh run.sh --- Используйте интерпретатор оболочки sh на run.sh. Оболочка Bourne обычно используется по умолчанию для запуска сценариев оболочки, поэтому, вероятно, это то же самое, что и элемент №2, за исключением того, что он находит первый run.sh в $PATH, а не тот, который находится в текущем каталоге.

  • sh ./run.sh --- И это обычно совпадает С# 2, кроме словаря.

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

Что касается обучения, я бы предложил использовать bash или ksh и не позволять никому говорить вам что-то еще, пока вам не станет удобно. Пожалуйста, не учитесь с помощью csh, или вам нужно будет слишком много отучить, когда вы начнете с оболочки типа Bourne позже.

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

Ответ 3

Попробуйте проект документации Linux BASH страницы здесь [tldp.org].
PS: Разница в том, что. это то же самое, что и команда источника. Это требует только разрешения на чтение. Чтобы использовать. /run.sh, вам нужны разрешения на выполнение. Когда вы используете "sh", вы явно указываете команду, которую хотите запустить script (здесь вам нужно только разрешение на чтение). Если вы используете оболочку для ее выполнения, там не должно быть проблем. Если вы хотите использовать другую программу, например "python", вы можете использовать python run.py. Другой трюк состоит в том, чтобы добавить строку #!<program> в начало вашего script. В вашем случае #!/bin/sh будет делать, а для Python лучше всего подходит #/usr/bin/env python.

Ответ 4

Я думаю, что погружение в это - это ответ. Это как научиться ходить, печатать, использовать эргономичную клавиатуру или вводить дворак. Соблюдайте это полностью. И да, вы абсолютно затормозите. И вы будете вынуждены постоянно смотреть на свои руки или вещи Google. Но в конце концов это придет к вам.

Забавная история, я убил доступ к интернету в квартире, выполнив выпуск ifconfig. Полностью не знал, что ifconfig renew не является командой. Пришлось позвонить другу, когда Google не загрузил;) dhcpcd позже, и я вернулся к поиску всего.

Ответ 5

Oreily имеет более старую книгу, в которой рассказывается о сценариях bash и bash в конце. Большинство всего, что вам нужно знать, доступно в Интернете, но распространяются.

Ответ 6

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

Ответ 7

используйте оболочку много, введите "[prog-name] --help" много, наберите "man [prog-name]" много и сделайте заметки о том, что работает, а что нет - даже если те примечания кажутся очевидными в то время. К завтрашнему, они могут быть не так очевидны, снова. OTOH, через пару недель они обязательно должны быть!

У вас есть gander в некоторых из многих книг по работе с оболочками, например От Bash до Z Shell (который охватывает Bash и Z), пройдите через учебник по сценарию оболочки или Gnu Bash.

Ответ 8

Есть несколько достойных онлайн-руководств, которые помогут вам чувствовать себя более комфортно в оболочке. Например:

Проведите некоторое время, читая эти уроки и, прежде всего, играя в оболочке. Довольно скоро он начнет ощущаться как $HOME. (Ладно, извините за плохой каламбур...)

Ответ 9

В то время как придерживаться Bash может быть лучше всего, а только обучение, fish оболочка может быть немного проще в использовании, Я играл с ним в течение нескольких недель, и хотя он не казался таким сильным, как bash, он выглядел довольно удобным для пользователя.

Ответ 10

То, как я действительно научился в Linux, заключалось в установке gentoo. Это происходит вечно, но вы начинаете видеть, как все связывается.

Перейдите к последним инструкциям и начните следовать им. Делайте это достаточно времени, и он начинает прилипать.

Через некоторое время вы получаете удобное здание с нуля.

Ответ 11

Я нахожу попытку узнать новую команду, используя страницы man, иногда немного подавляющие.

Я предпочитаю man-страницы для обновления памяти.

Когда я хочу изучить команду, я ищу примеры, а затем используйте man-страницы для точной настройки того, что я хочу.