7 вещей, которые я хотел бы знать, прежде чем начать работать с терминалом Linux
Давайте будем реалистами: переход на Linux может быть сложным, поэтому вам понадобится как можно больше помощи. Вот вещи, которые помогли бы мне больше всего, когда я переходил с Windows.
1. Разница между терминалом, оболочкой и командной строкой
Одной из самых запутанных вещей при начале работы с Linux является терминология. Некоторые люди будут использовать термины взаимозаменяемо, в то время как другие настаивают на строго правильном использовании. Если вы не осведомлены о различиях между терминами, легко сделать ошибки.
Вот как я это запоминаю: терминал — это приложение, которое запускает оболочку, предоставляющую командную строку.
Командная строка (CLI) — это текстовая альтернатива графическому пользовательскому интерфейсу (GUI). Она показывает приглашение для ввода команды, которую вы будете вводить с клавиатуры, а затем нажимать Enter для выполнения. Вы можете найти командную строку в нескольких различных приложениях: в IDE, консоли вашего браузера или в оболочке Unix. Даже поле поиска в интернете можно считать очень специфическим типом командной строки.
Оболочка предоставляет интерфейс командной строки. Существует множество различных типов Unix-оболочек, отражающих долгую историю операционной системы. Наиболее часто используемыми являются Bash и Zsh, к другим примерам относятся Fish, Ksh и Tcsh. Оболочка предоставляет основную функциональность, которая находится на более высоком уровне, чем ядро операционной системы. Она предоставляет командный язык, который вы можете использовать для запуска и управления программами.
Терминал (строго говоря, эмулятор терминала) — это приложение, которое запускает оболочку, передавая ей ввод и отображая вывод от нее. Обычно это графическое приложение с функциями окон, такими как вкладки и копирование/вставка с помощью мыши. Доступные терминалы на Linux включают Kitty, Terminator, Guake и Ghostty. На macOS очень популярен iTerm2. Терминал изначально представлял собой недорогое, автономное оборудование, которое обеспечивало клавиатуру и дисплей для подключения к компьютеру. Вы также можете услышать термин «консоль», который примерно аналогичен «терминалу».
В этой статье я продолжу использовать слово «терминал» для обозначения общего использования командной строки оболочки.
2. Как найти помощь
Когда вы начинаете использовать терминал, часто возникает ощущение, что вы немного в неведении. Пустая строка приглашения без четких инструкций или списка доступных опций может быть довольно пугающей.
В Linux помощь начинается с man, браузера руководств. Эта команда предоставляет доступ к текстовой документации почти по каждой команде, которую вы можете выполнить в терминале. Вы можете открыть страницы помощи, выполнив man <команда>, например:
$ man ls $ man mkdir $ man man
Это отобразит соответствующую страницу справки, используя ваш системный пейджер — команду, которая отображает текст в постраничном интерфейсе с возможностями прокрутки вверх и вниз, поиска текста и многим другим. Обычно, пейджер по умолчанию — это less, и вы можете использовать его для прокрутки справки с помощью клавиш вверх/вниз или по одной странице с помощью пробела. Нажмите q, чтобы выйти, или h для получения дополнительной помощи.
Документация в man-страницах подробная и техническая, но также полная. Man-страницы имеют довольно стандартный макет, с разделами о вариантах команд, конфигурации и примерах.
Лучший способ ознакомиться с ними — это читать их, и я рекомендую начать с более простых, коротких страниц для общих команд, таких как pwd, mkdir и echo. Команда ls — хороший пример очень распространенной программы с длинной страницей man, которая отлично подходит для знакомства с системой.
Вы можете даже попробовать man man, если у вас возникают трудности с использованием man, но его документация довольно сложная, поэтому она может оказаться не такой полезной!
Если страницы man кажутся немного устрашающими, вы можете попробовать tldr вместо этого. Эта альтернатива требует установки, но она более дружелюбна, с акцентом на примерах использования команды для общих случаев.
3. Как псевдонимы могут сэкономить мне так много времени
Я не осознавал, сколько времени я теряю, пока не начал использовать псевдонимы. Псевдоним — это как ярлык для команды, и у него есть два основных преимущества, которые принесут большие выгоды в долгосрочной перспективе:
- Псевдоним обычно короче, что экономит ваше время и усилия при наборе большего количества символов.
- Псевдоним помогает избежать необходимости запоминать сложные варианты.
Я видел, что некоторые люди используют алиасы, такие как это:
alias ll="ls -l"
Что замечательно, потому что это экономит вам ввод трех символов каждый раз, когда вы хотите вывести список файлов, что вы будете делать довольно часто. Этот псевдоним фактически создает новую команду: ll.
Но для меня второе преимущество более значимо. Опции командной строки действительно могут быть трудными для запоминания, особенно поскольку они не всегда последовательны между программами. Поэтому, когда я нахожу опцию, которую хотел бы установить по умолчанию, я просто обновляю псевдоним для этой команды, и мне никогда не придется запоминать детали:
alias ls='ls -GF'
Это дает мне два прекрасных улучшения для ls: цветной вывод и символы, которые идентифицируют разные типы файлов, такие как директории или символические ссылки. Здесь нет новой команды, так что я просто продолжаю использовать ls, как всегда, это всего лишь слегка улучшенная версия.
4. Всё о цепочке команд
Возможно, вы уже знаете, как выполнить команду, но насколько хорошо вы разбираетесь в выполнении нескольких команд одновременно?
Наиболее распространенной формой, вероятно, является конвейер, потому что он очень полезен для повседневных задач. Конвейер выполняет две команды одновременно, передавая вывод одной в качестве ввода для другой:
ls | wc -l
Эта командная строка выводит количество файлов в текущем каталоге. Конвейер использует текст в Linux в качестве основного средства обмена данными, что значительно увеличивает полезность простых команд, которые выполняют одну задачу хорошо. Но есть и другие способы выполнения нескольких команд, такие как точка с запятой:
sleep 5; echo done
Это выполнит команду sleep, затем команду echo, так что вы увидите паузу, а затем вывод от echo. Сравните это с:
sleep 5 | echo done
Поскольку конвейер выполняет команды одновременно, вы сразу увидите вывод от echo, а затем паузу. Команда echo игнорирует любой ввод, отправленный ей, что не имеет большого значения, поскольку sleep не производит вывод.
Вы даже можете использовать логические операторы для выполнения команды в зависимости от успеха другой:
sleep 5 && echo that worked
&& означает «выполнять команды только в том случае, если предыдущая завершилась успешно», и это особенно полезно во время компиляции программного обеспечения, как в этом очень распространенном шаблоне:
make && make install
Здесь команда make создает программу из исходного кода, в то время как make install копирует финальную программу в известное место. Нет смысла пытаться установить ее, если компиляция не удалась, поэтому эта командная строка обрабатывает как успех, так и неудачу.
5. Как команды могут выполняться в фоновом режиме и как управлять ними
Есть что-то в том, чтобы выполнять несколько команд, некоторые из которых в фоновом режиме, что является еще одной сложной концепцией для понимания. Я думаю, это связано с тем, что командная строка кажется сосредоточенной на одной строке за раз, одной команде за раз. Но это заблуждение, которое нужно развеять на ранних этапах вашего пути в Linux.
Конечно, большинство распространенных команд — ls, mkdir, cat — имеют смысл запускать в переднем плане: они выполняются быстро, и вам обычно нужны их результаты сразу. Но как только вам нужно будет скомпилировать программу или запустить долгосрочную программу, вы начнете задумываться о контроле задач — даже не зная о таком термине.
Понятие задачи — это еще более запутанная терминология, которая почти, но не совсем, является синонимом программы, команды или процесса. Задача может быть одним процессом, но она также может быть группой процессов, то есть чем угодно, что вы запускаете из одной командной строки.
С управлением заданиями вы можете начать выполнение чего-то, а затем переместить это в фоновый режим, пока работаете над чем-то другим. Вы можете подумать об этом как о минимизации окна в графическом интерфейсе. Более того, вы можете приостановить задание, перезапустить его, вернуть в передний план или полностью завершить.
Чтобы приостановить выполняемую в данный момент задачу, просто нажмите Ctrl + Z:
$ du -skh / ^Z zsh: suspended du -skh /
Обратите внимание, что оболочка — zsh в данном случае — сообщает, что задача была приостановлена, что означает, что она приостанавливается. Вы можете возобновить задачу в фоновом режиме или вернуть её на передний план, но сначала вам понадобится её идентификатор. Чтобы получить его, используйте команду jobs:
jobs
Вы увидите список всех работ, которые еще не завершены, вместе с их статусом:
Каждой задаче назначен номер, который вы можете использовать для ее вывода на передний план, используя команду fg:
$ fg %5
Вы также можете запустить команду в фоновом режиме, добавив амперсанд в конец:
du -skh / &
6. Как работает PATH и почему он так полезен
Большинство уроков, которые я усвоил о Linux, сводятся к тому, что «это проще, чем вы думаете», даже когда сначала кажется обратное. PATH является ярким примером.
Если вы пришли из мира Windows, вы могли бы подумать, что установка — это сложный процесс, включающий в себя специфические пути, жесткие имена файлов и аккуратно скопированные библиотечные файлы. В Linux это на самом деле не так. Большую часть времени вы можете запустить исполняемую программу, просто введя путь к ней:
./my-local-program /usr/bin/htop
Это нормально, но это не очень удобно, поэтому есть ярлык. Переменная окружения PATH хранит набор каталогов, которые ваша оболочка будет искать, когда вы пытаетесь выполнить команду, которая не включает никаких компонентов пути, например.
htop
В этом случае, если ваш PATH выглядит примерно как "/usr/local/bin:/usr/bin:/bin,", ваша оболочка будет искать следующие программы:
- /usr/local/bin/htop
- /usr/bin/htop
- /bin/htop
Это удобно, но та же система также позволяет устанавливать пользовательские версии программного обеспечения. Порядок директорий в вашем PATH имеет значение, поэтому первой используемой будет та программа, которая присутствует. Это означает, что вы можете иметь стандартную версию в /bin и установленную пользователем версию в /usr/bin, при этом последняя будет иметь приоритет, как и следовало ожидать.
7. Как использовать скрытые файлы в моем домашнем каталоге
Терминал Linux полон случаев, когда вы можете настраивать вещи по своему усмотрению, от псевдонимов до вашего PATH и далее. Еще один пример — это Спецификация базового каталога XDG, что является длинным способом указания на набор известных файлов и каталогов в вашем домашнем (пользовательском) каталоге.
Спецификация полезна, потому что она позволяет хранить файлы, специфичные для пользователя, стандартным образом, так что другие программы могут на них полагаться. До появления спецификации различные файлы — такие как конфигурации, данные и даже программы — как правило, создавали беспорядок в вашем домашнем каталоге, потенциально вызывая конфликты и всевозможные проблемы.
Используя XDG, их можно собирать в скрытых местах. Система Linux, согласно которой файлы, начинающиеся с точки, считаются скрытыми, позволяет это, и это еще один аспект операционной системы, который действительно полезно понять с самого начала.






Добавить комментарий