Поначалу интерфейс командной строки может быть ошеломляющим: это пустой экран и подсказка. Когда вы печатаете, текст появляется на экране. Но прежде чем вы сможете извлечь из этого какую-либо пользу, вам нужно знать, что печатать. Давайте рассмотрим команды, которые помогут добиться цели, когда вы только начинаете работать с командной строкой.
Рабочий каталог
Прежде чем мы начнем какую-либо значимую работу, нам сначала нужно знать, где мы находимся. Команды, которые вы запускаете, оцениваются в папке — рабочем каталоге. Есть несколько команд, которые помогут вам проверить текущий контекст и перейти в более удобное место:
pwd
— показывает полный путь к вашему рабочему каталогу:
cd <folder>
— переключает рабочий каталог на<folder>
:
Еще несколько примеров с cd
:
cd ..
-перемещается в родительскую папку текущегоcd -
— возвращает в папку предпросмотраcd ~
-переход в домашний каталог
Список файлов
Итак, теперь, когда мы знаем, в какой папке мы находимся, давайте теперь посмотрим, что у нас внутри. Команда для отображения списка файлов ls
:
Как видите, и файлы, и каталоги показаны вместе, и не совсем понятно, что к чему. Я обычно запускаю эту команду с двумя параметрами:
-a
- показать все файлы, даже скрытые-l
- чтобы показать информацию в длинном формате
В выводе вы можете увидеть:
.
и..
— псевдонимы самой папки и ее родительской папки.git
-скрытая папка для хранения файлов, используемых репозиторием Git- каждая строка начинается с
-
илиd
. Первый означает файлы; второй означает каталоги.
Управление файлами и папками
Чтобы закончить с основами, нам просто нужно несколько команд для изменения файлов и каталогов. Команды для этого:
touch <file-name>
-создает пустой файлmkdir <directory-name>
-создает пустую папкуrm <file-name>
-удаляет указанный файлrm -d <directory-name>
-удаляет указанную папку
Прочтите дружественное руководство
man
— это команда, которая показывает вам руководство для других команд. Все команды, которые мы упоминали до сих пор, имеют множество опций. Вы можете узнать о них больше прямо из терминала, используя man
. Вы запускаете man <command name>
:
Возвращаемое значение
echo
— это простая программа, которая возвращает свои аргументы на стандартный вывод. Вы можете использовать его для записи значения в файл:
echo Test > test.txt
Показать содержимое файлов
cat
инструмент, предназначенный для cat объединения нескольких файлов. Он часто используется для выбора содержимого только одного файла, чтобы передать его на стандартный ввод другой команды с помощью оператора канала. Пример:
cat file-1.txt file-2.txt
Подсчитать содержимое файла
В контексте CLI wc
означает количество слов. Это позволяет вам проверить длину вывода других файлов:
Вывод здесь означает, что в указанном файле у нас есть:
- 29 строк
- 116 слов
- 542 символа
Посмотреть часть файла
head
и tail
— это утилиты для чтения нескольких строк с начала или с конца файлов соответственно. По умолчанию оба показывают 10 строк. Вы можете увидеть их в действии:
Проверка всего файла
less
— это команда, которая разбивает файл или его ввод на страницы, чтобы они помещались на экране. Я рассмотрел основные навигационные ярлыки в моей недавней статье:
Вы можете использовать less
для просмотра вывода любой другой команды — просто соединитесь с каналом:
Если вас смущает терминология, я объясню стандартный ввод, вывод и каналы здесь.
Поиск содержимого файла
grep
— отличный инструмент поиска, поддерживающий регулярные выражения. Его сила заключается в гибкости: указав один из его многочисленных параметров, вы можете настроить его поведение в соответствии с вашими потребностями. По умолчанию он ожидает появления значений на стандартном вводе — не самый распространенный вариант использования. Поэтому вы, скорее всего, захотите запустить его как фильтр внутри конвейера команд.
Типичное использование в качестве трубного фильтра выглядит следующим образом:
В этом конвейере:
cat *txt
— объединяет все файлы в текущей папке, заканчивающиеся на txt, и возвращает их в стандартный выводgrep 1
— возвращает только те строки, в которых есть1
.
Обратный поиск
Часто проще описать то, чего вы не хотите иметь, чем то, чего вы хотите. С помощью grep
вы можете легко отфильтровать некоторые строки, добавив к нему параметр -v
. Например:
Примечание! Вы можете комбинировать множество команд с оператором канала:
cat *txt | grep -v 1 | grep file- Content of file-2.txt
Поиск по файлам
Grep также позволяет выполнять поиск в файлах — вам просто нужно добавить -r
(из рекурсивного поиска в подкаталогах):
В выводе вы можете увидеть:
./file
— путь к файлуLorem ipsum
— совпадающая строка
Только имена файлов
Если вас интересует только то, какие файлы имеют соответствующие значения, вы можете добавить в команду параметр -l
:
Эта опция становится особенно полезной, когда вы комбинируете ее со следующей командой:
Вызов команд на основе вывода других команд
xargs
берет строки из стандартного ввода и добавляет их в качестве параметров для другой команды. Одним из распространенных применений является поиск всех файлов, содержащих некоторое значение, и выполнение над ними команды, например удаление их:
grep -rl Lorem | xargs rm
Выходных данных команды нет, но давайте посмотрим, какие файлы доступны до и после запуска команды:
ls long-file.txt
На данный момент файлов нет, но позже в этой статье мы увидим инструмент, который поможет нам отслеживать и восстанавливать файлы.
Как вы можете видеть во втором запуске ls -R
(рекурсивный список каталога и каждого подкаталога):
file
исчез из верхнего каталога, иanother-file.txt
пропал из вложенной папки.
Редактирование файлов сценариев
sed
— редактор потоков. Это позволяет изменять значения в канале:
echo 'hello world' | sed 's/world/you/' hello you
В нашем примере параметр s/world/you/
обозначает следующее:
s
-означает заменуworld
-регулярное выражение для соответствия заменяемому значениюyou
-вместо этого будет использоваться новое значение
Редактирование файлов на диске
Более практичным вариантом использования 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 file
— возвращает список всех файлов, содержащихfile
.xargs
— превращает их во входные параметры дляsed
.sed -i -e
илиsed -i '' -e
— переключает редактор на работу непосредственно с файлами.s/file/File/g
— заменяет строчную букву «файл» на прописную «файл»./g
в конце означает, что изменение должно быть глобальным. Он должен обновлять каждый экземпляр, найденный в файле, а не только первый экземпляр в каждой строке.
Отслеживание изменений в файлах
Git — это система контроля версий, повсеместно распространенная в нашей отрасли. Если вы намерены стать разработчиком, вам в конечном итоге нужно будет этому научиться. Я уже много писал о Git, но здесь мы сосредоточимся на командах Git, которые хорошо интегрируются с другими инструментами CLI, которые мы здесь рассмотрели.
git grep
Эта команда вдохновлена grep
. Он позволяет выполнять поиск по файлам, отслеживаемым репозиторием. Когда вы отслеживаете свои файлы с помощью Git, вы можете использовать git grep
вместо grep -r
. Основное преимущество заключается в том, что он автоматически игнорирует файлы, для которых вы установили Git для игнорирования, что часто бывает с node_modules
.
Подобно оригинальному grep
, вы можете использовать опцию -l
, чтобы получить только имена файлов:
$ git grep -l File file-a file-b file-c
git ls-файлы
Команда для вывода списка всех файлов, отслеживаемых репозиторием. Вы можете комбинировать его с grep
, чтобы найти все файлы, соответствующие некоторому шаблону, а затем использовать xargs
, чтобы выполнить какую-либо операцию со всеми ними.
Текстовый редактор
vim
— это текстовый редактор, который является чем-то вроде занудного клише, и мой любимый редактор. Я переключился на него после того, как устал от старого компьютера, на котором с трудом запускался Eclipse и другие большие интегрированные среды разработки (IDE).
Vim быстр, гибок и предлагает отличные сочетания клавиш. Более того: сочетания клавиш — единственный способ использовать его, потому что он не поддерживает мышь. Кривая обучения немного крутая — поначалу может быть сложно даже закрыть ее. В долгосрочной перспективе изучение Vim может стать хорошей инвестицией. Что делает его особенно ценным, так это то, что команды редактора в Vim очень близки к командам, которые используются sed
и шаблонами поиска в grep
. То, что вы узнаете в одном из этих инструментов, вы можете сразу же применить и в других инструментах.
Утилиты буфера обмена
Иногда вам нужно получить вывод программы командной строки и просто вставить его в одно из приложений в вашем графическом интерфейсе. Все операционные системы содержат некоторые утилиты, которые позволяют вам сделать именно это:
pbcopy
-утилита, доступная на macOSxclip
-утилита, которую можно было установить на Ubuntu
cat file-1.txt | pbcopy
И теперь я могу вставить содержимое файла в браузер.
Управление сеансами терминала
tmux
— мультиплексор терминала — программа, позволяющая запускать несколько сеансов внутри одного окна эмулятора терминала. Это позволяет вам использовать разные «окна» для разных целей. Например, у меня обычно:
- один сеанс для запуска команд Git,
- другой с vim, где я редактирую код, и
- как минимум один сеанс для запуска сервера разработки
Хотите узнать больше?
Командная строка — отличный набор инструментов, который поначалу часто вызывает затруднения. В этом блоге я иногда пытаюсь исследовать такие темы в удобной для начинающих форме, чтобы помочь новым разработчикам изучить эти инструменты, чтобы они могли работать более эффективно. Если вы заинтересованы в получении обновлений о моем новом контенте, связанном с CLI, зарегистрируйтесь здесь.
Первоначально опубликовано на https://how-to.dev.
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord.
Повысьте узнаваемость и признание вашего технического стартапа с помощью Circuit.