Командная строка сильно облегчает нам жизнь, позволяя легко автоматизировать несколько рутинных задач и повысить плавность хода всего процесса. Вместо того, чтобы постоянно кликать повсюду в графическом интерфейсе, мы можем запустить пару команд и считать дело сделанным.
Оболочка Unix — это интерпретатор командной строки или, проще говоря, ее интерфейс, применяемый в системах Unix и ей аналогичных. Оболочка одновременно является интерактивным командным и скриптовым языком, применяемым операционной системой для контроля ее функционирования при помощи скриптов.
Любая операционная система, основанная на Linux или Mac имеет командную строку по умолчанию. Обычно она называется “терминал”. Командная строка позволяет нам легко перемещать и переименовывать файлы, сортировать данные и осуществлять навигацию.
Ниже приведены 11 трюков командной строки, способных облегчить вам жизнь.
1. grep
$ grep "some string" file
Команда grep ищет заданные шаблоны в каждом файле и те, которые отделены знаками новой строки, затем печатает все строки, совпадающие с этими шаблонами.
Добавление опции -i
позволяет искать без учета регистра. В этом случае совпадениями будут зачтены такие слова, как “REACT”, “REact” и “react”.
$ grep -i "REact" file
Используя значение -c
(count), мы можем найти число строк, совпадающих с заданным шаблоном/строковым типом.
$ grep -c "react" index.js
Также отмечу, что варианты исполнения команды egrep
и fgrep
означают то же самое, что и grep -E
и grep -F
, соответственно. Это устаревшие варианты, применяемые для обратной совместимости.
Вы можете использовать grep
для гораздо большего числа задач. Подробная инструкция по применению доступна здесь.
2. ls
$ ls
Команда ls
перечисляет все файлы и директории, расположенные по текущему указанному пути. Если путем выступает имя файла, ls
отображает информацию об этом файле согласно запрошенным данным. Если же путем выступает директория, команда ls
отображает информацию о файлах и поддиректориях, которые в ней содержатся.
Вы, должно быть, заметили, что имена файлов отображены серым цветом, а каталоги голубым. Это помогает нам легче их различать.
3. pwd
$ pwd
Команда pwd
используется для вывода полного системного пути текущей рабочей директории. По умолчанию эта команда игнорирует символические ссылки, хотя полный физический адрес директории может быть отображен при выборе соответствующей опции.
4. cat
$ cat somefile.js
Команда cat
имеет три возможных функции по отношению к текстовым файлам:
- Их отображение.
- Объединение копий.
- Создание новых.
Наиболее распространенное применение cat —это чтение содержимого файла. Она в этом отношении является наиболее удобной.
В нижеприведенном примере стандартный вывод cat перенаправлен к file2 посредством перенаправляющего оператора (он представлен в виде угловой скобки справа от команды):
$ cat somefile > somefile2
5. echo
$ echo "some text"
Команда echo
применяется в Linux для отображения строки текста/строкового типа, которая выступает в качестве аргумента. echo
является встроенной командой, чаще всего применяемой в оболочных скриптах и пакетных файлах для вывода системного текста на экран или в файл.
6. touch
$ touch somefile
Команда touch
применяется для создания пустого файла. Например, ее можно использовать в случаях, когда у пользователя на момент создания файла нет данных для хранения в нем.
Обратите внимание на то, как touch применяется для создания файла, в то время как cat используется для заглядывания внутрь этого файла. Поскольку вновь созданный файл index2.js
пуст, cat ничего не отображает.
Вот основные отличия между cat и touch:
cat
применяется для создания файлов с содержимым.touch
создает пустые файлы. Помните. что файл, созданный командой touch, пустой. Эта функция полезна в случаях, когда изначально нет данных для размещения в файле.
7. mkdir
$ mkdir some-directory
mkdir создает новую пустую директорию в текущем местоположении. Вместо того, чтобы с этой целью кликать повсюду в текстовом редакторе или графическом интерфейсе, просто используйте эту команду:
Обратите внимание, что мы можем заглянуть внутрь этой директории через команду ls
.
7.1 rm
$ rm someFile
Rm применяетсядля удаления и на все 100% справляется со своей задачей, проще говоря — окончательно удаляет файл.
По умолчанию эта команда не удаляет директории. Однако это возможно, если добавить значение -rf
.
$ rm -rf some-directory
Имейте в виду, что в этом случае удаляется директория целиком, включая все ее содержимое.
7.2 rmdir
$ rmdir some-directory
Команда rmdir
удаляет каталог только в случае, когда в нем нет содержимого.
8. tail
$ tail somefile
Команда tail
(хвост) считывает файл и выводит его последнюю часть (тот самый “хвост”).
Эта команда может быть очень полезна при рассмотрении отчетов о сбоях или предшествующей истории логов.
Ниже приведен пример ее применения при работе с логами файлов.
# tail /var/log/messages
Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2
9. wget
$ wget someurl
GNU Wget — бесплатная программа для извлечения файлов с применением HTTP, HTTPS, FTP и FTPS (наиболее широко распространенных протоколов интернет связи). Этот инструмент командной строки не интерактивный, поэтому его можно легко вызван из скриптов, задач CRON, терминалов без поддержки X-Windows и т.п.
GNU Wget имеет множество инструментов, позволяющих легко извлекать крупные файлы или зеркалить целые web/FTP сайты.
Например:
- Может возобновлять отмененные загрузки посредством REST и RANGE.
- Может использовать шаблоны имен файлов и рекурсивно зеркалить директории.
- Поддерживает работу с NLS файлами сообщений для различных языков.
- При необходимости может преобразовывать абсолютные ссылки загруженных документов в относительные, после чего эти документы могут ссылаться локально один на другой.
- Запускается на большинстве операционных систем семейств UNIX и Microsoft Windows.
- Поддерживает HTTPS прокси.
- Поддерживает HTTP куки.
- Поддерживает постоянные HTTP соединения.
- Может работать в автоматическом либо фоновом режиме.
- Использует временные метки локальных файлов для определения необходимости повторной загрузки при зеркалировании.
- GNU Wget распространяется под лицензией GNU General Public.
Дополнительную информацию можно получить в официальной документации этого продукта.
10. find
$ find path -name filename
Команда find
позволяет быстро найти файл или директорию. Это очень удобно при работе с большими проектами, содержащими сотни таких элементов.
Поиск файлов конкретного типа
Команда find
также позволяет находить файлы одного типа в одной директории (включая поддиректории). Например, следующая команда будет искать все .js
файлы в текущей рабочей директории.
$ find . -name "*.js"
11. mv
$ mv somefile /to/some/other/path
Команда mv
перемещает файлы и директории с места на место. Она поддерживает возможность их перемещения как по одному, так и группами.
Заключение
Благодарю за чтение и надеюсь, что вы нашли много нового для себя.
Оставайтесь любопытными и жаждущими знаний!
Читайте также:
- Терминал: 3 команды для продуктивности
- Вероятность в Python: перестановки и сочетания
- Приключения Java-разработчика, решившегося изучать Go
Перевод статьи Indrek Lasn Here Are 11 Console Commands Every Developer Should Know