Основные команды, которые помогут вам начать работу с терминалом

Основные команды, которые помогут вам начать работу с терминалом

16 февраля 2023 г.

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

Рабочий каталог

Прежде чем мы начнем какую-либо значимую работу, нам нужно сначала узнать, где мы находимся. Запускаемые вами команды оцениваются в папке — рабочем каталоге. Есть несколько команд, которые помогут вам проверить текущий контекст и перейти в более удобное место:

  • pwd – показывает полный путь к вашему рабочему каталогу:

Image description

  • cd <folder> — переключает рабочий каталог на <folder>:

Image description

Еще несколько примеров с cd:

  • cd .. — перемещает в родительскую папку текущей.
  • cd – – возвращает в папку предварительного просмотра.
  • cd ~ — переход в домашний каталог

Image description

Список файлов

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

Image description

Как видите, и файлы, и каталоги показаны вместе, и не совсем понятно, что к чему. Обычно я запускаю эту команду с двумя параметрами:

  • -a — показать все файлы, скрытые
  • -l — отображать информацию в длинном формате.

Image description

В результате вы увидите:

  • . & .. — псевдонимы самой папки и ее родительской папки
  • .git – скрытая папка для хранения файлов, используемых репозиторием Git.
  • каждая строка начинается с - или d. Первый означает файлы; второй означает каталоги.

Управление файлами и папками

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

  • touch <file-name> — создает пустой файл
  • mkdir <имя-каталога> — создает пустую папку
  • rm <file-name> — удаляет указанный файл
  • rm -d <имя-каталога> — удаляет указанную папку

Image description

Прочитайте понятное руководство

man — это команда, которая показывает вам руководство для других команд. Все команды, которые мы упоминали до сих пор, имеют множество опций. Вы можете узнать о них больше прямо из терминала, используя man. Вы запускаете man <command name>:

asciicast

Возвращаемое значение

echo — это простая программа, которая возвращает свои аргументы в стандартный вывод. Вы можете использовать его для записи значения в файл:

echo Test > test.txt

Отображать содержимое файлов

cat инструмент, предназначенный для объединения нескольких файлов,cat. Он часто используется для выбора содержимого только одного файла, чтобы передать его на стандартный ввод другой команды с помощью оператора канала. Пример:

cat file-1.txt file-2.txt

Image description

Подсчитать содержимое файла

В контексте CLI wc означает количество слов. Он позволяет проверить длину вывода других файлов:

Image description

Вывод здесь означает, что в указанном файле мы имеем:

  • 29 строк
  • 116 слов
  • 542 символа

Просмотреть часть файла

head и tail — это утилиты для чтения нескольких строк с начала или с конца файлов соответственно. По умолчанию оба показывают 10 строк. Вы можете увидеть их в действии:

Image description

Проверка всего файла

less — это команда, которая разбивает файл или его входные данные на страницы, чтобы они помещались на экране. Я рассмотрел основные быстрые клавиши навигации в моей недавней статье:< /p>

asciicast

Вы можете использовать less для просмотра вывода любой другой команды — просто соединитесь с помощью конвейера:

asciicast

Если вас смущает терминология, я объясню стандартный ввод, вывод и конвейеры здесь.

Поиск содержимого файла

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

Типичное использование в качестве фильтра канала выглядит следующим образом:

Image description

В этом конвейере:

  • cat *txt – объединяет все файлы в текущей папке, имена которых заканчиваются на txt, и возвращает их в виде стандартного вывода.
  • grep 1 — возвращает только те строки, в которых есть 1
  • .

Обратный поиск

Часто проще описать, чего вы не хотите, чем чего вы хотите. С помощью grep вы можете легко использовать его для фильтрации некоторых строк, добавив к нему параметр -v. Например:

Image description

Внимание! Вы можете комбинировать многие команды с оператором канала:

cat *txt | grep -v 1 | grep file-
Content of file-2.txt

Поиск в файлах

Grep также позволяет выполнять поиск в файлах — вам просто нужно добавить -r (для рекурсивного поиска в подкаталогах):

Image description

В результате вы увидите:

  • ./file — путь к файлу
  • Lorem ipsum — соответствующая строка

Только имена файлов

Если вас интересует только то, какие файлы имеют соответствующие значения, вы можете добавить к своей команде параметр -l:

Image description

Эта опция становится особенно полезной, когда вы комбинируете ее со следующей командой/

Вызов команд на основе вывода других команд

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

grep -rl Lorem | xargs rm

Вывод команды отсутствует, но давайте посмотрим, какие файлы доступны до и после выполнения команды:

ls
long-file.txt

На данный момент файлов нет, но позже в этой статье мы увидим инструмент, который поможет нам отслеживать и восстанавливать файлы.

Image description

Как вы можете видеть во втором запуске ls -R (рекурсивный список каталога и каждого подкаталога):

  • файл исчез из верхнего каталога и
  • another-file.txt исчез из вложенной папки.

Сценарии редактирования файлов

sed — это потоковый редактор. Это позволяет изменять значения в канале:

echo 'hello world' | sed 's/world/you/'
hello you

В нашем примере параметр s/world/you/ обозначает следующее:

  • s — означает замену
  • world – регулярное выражение для соответствия заменяемому значению
  • вы — вместо этого будет использоваться новое значение

Редактирование файлов на диске

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

# at Linux
grep -lr file | xargs sed -i -e 's/file/File/g'

# at macOS
grep -lr file | xargs sed -i '' -e 's/file/File/g'

В нашей команде:

  • grep -lr файл — возвращает список всех файлов, содержащих файл.
  • xargs — превращает их во входные параметры для sed.
  • sed -i -e или sed -i '' -e — переключает редактор для работы непосредственно с файлами.
  • s/file/File/g — заменяет строчную букву «файл» на прописную «файл». /g в конце означает, что изменение должно быть глобальным. Он должен обновлять каждый экземпляр, найденный в файле, а не только первый экземпляр в каждой строке.

Отслеживание изменений в файлах

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

git grep

Эта команда основана на grep. Он позволяет выполнять поиск по файлам, отслеживаемым репозиторием. Когда вы отслеживаете свои файлы с помощью Git, вы можете использовать git grep вместо grep -r. Основное преимущество заключается в том, что он автоматически игнорирует файлы, которые вы настроили Git на игнорирование, что часто бывает с node_modules.

Image description

Подобно исходному grep, вы можете использовать параметр -l, чтобы получить только имена файлов:

$ git grep -l File
file-a
file-b
file-c

git ls-файлы

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

Image description

Текстовый редактор

vim — это текстовый редактор, который является чем-то вроде занудного клише, и мой любимый редактор. Я переключился на него после того, как устал от старого компьютера, на котором с трудом запускалась Eclipse и другие большие интегрированные среды разработки (IDE).

Vim быстрый, гибкий и предлагает отличные сочетания клавиш. Более того: сочетания клавиш — единственный способ использовать его, потому что он не поддерживает мышь. Кривая обучения немного крутая — поначалу может быть сложно даже закрыть ее. В долгосрочной перспективе изучение Vim может стать хорошей инвестицией. Что делает его особенно ценным, так это то, что команды редактора в Vim очень близки к командам, используемым sed и шаблонам поиска в greps. То, что вы узнаете в одном из этих инструментов, вы сможете сразу применить и в других.

Утилиты буфера обмена

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

  • pbcopy — утилита, доступная в macOS.
  • xclip — утилита, которую можно установить в Ubuntu
  • .

cat файл-1.txt | копировать

Теперь я могу вставить содержимое файла в браузер.

Управление сеансами терминала

tmux — это мультиплексор терминала — программа, позволяющая запускать несколько сеансов в одном окне эмулятора терминала. Это позволяет вам использовать разные «окна» для разных целей. Например, у меня обычно:

  • один сеанс для выполнения команд Git,
  • другой с vim, где я редактирую код, и
  • хотя бы один сеанс для запуска сервера разработки

asciicast

Хотите узнать больше?

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


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE