По мере использования WP-CLI, вы поймете, что неболшие знания командной строки могут значительно ускорить рабочий процесс. Поэтому давайте поговорим о некоторых вспомогательных утилитах командной строки.
Смотрите также:
- Примеры использования WP-CLI.
- Композер пакет - коллекция функций и классов для командной строки: https://github.com/wp-cli/php-cli-tools
- Linux Команды (Shell Bash, Unix, SSH, PuTTY)
- Что такое /dev/null и как его использовать в Bash
Оглавление
- Поиск в истории bash
- Объединение команд WP-CLI
- Короткие макросы для общих команд (превдонимы, алиасы)
- Сохранение вывода команды
Поиск в истории bash
Знаете ли вы, что каждая команда, которую вы выполняете в командной оболочке, сохраняется в истории? Поиск в истории с помощью CTRL + R
:
$ wp core download --version=nightly --force bck-i-search: wp
Когда появится 'bck-i-search', ваши клавиши будут искать команды, сохраненные в истории bash. Нажмите Enter, чтобы запустить текущий выбор.
Или другой способ поиска по истории - поиск по выводам команды history, например:
$ history | grep wp
Любая из команд, найденных в этом списке, может быть повторно выполнена по номеру bang-number, поэтому, например, если в выводе указано, что нужная вам команда - #218
, вы просто выполните !218
.
Объединение команд WP-CLI
Во многих случаях возможность передать результаты выполнения одной команды другой может оказаться крайне полезным. Cуществует два распространенных подхода к комбинированию команд.
Подстановка команды передает вывод одной команды другой команде, без какого-либо преобразования вывода.
Например, команда wp post list
перечисляет посты, используем это. В примере ниже команда перечисляет идентификаторы страниц в виде значений, разделенных пробелами.
$ wp post list --post_type='page' --format=ids 1164 1186
Комбинация wp post list
с wp post delete
позволяет легко удалить все сообщения. В этом примере $()
позволяет нам передавать идентификаторы страниц, разделенные пробелами, в wp post delete
.
$ wp post delete $(wp post list --post_type='page' --format=ids) Success: Trashed post 1164. Success: Trashed post 1186.
Если вам нужно больше гибкости, есть утилита (команда) xargs - она позволяет передавать вывод одной команды в другую команду, выполняя при этом незначительные преобразования вывода первой команды.
Например, вы хотите назначить все возможности редактора роли автора. Однако, wp cap list
перечисляет возможности, разделенные новыми строками, а wp cap add
принимает только возможности, разделенные пробелами. xargs
по умолчанию делает из списка разделенного новой строкой, список разделенный пробелами. Обратите внимание на оператор pipe |
, который передает результаты wp cap list
в xargs
. Без |
вы увидите ошибку WP-CLI.
$ wp cap list 'editor' | xargs wp cap add 'author' Success: Added 24 capabilities to 'author' role.
wp user generate
только генерирует пользователей; он не выполняет дополнительных операций. В этом примере wp user generate
передает идентификаторы пользователей в xargs
, который разбивает разделенные пробелами идентификаторы на список и вызывает wp user meta add
для каждого.
$ wp user generate --count=5 --format=ids | xargs -0 -d ' ' -I % wp user meta add % foo bar Success: Added custom field. Success: Added custom field. Success: Added custom field. Success: Added custom field. Success: Added custom field.
Короткие макросы для общих команд (превдонимы, алиасы)
Если вы часто выполняете одни и те же команды, вы можете определить для них алиасы для более удобного доступа.
Запустите все три команды проверки состояния с помощью одной команды check-all
. В этом примере команда alias
создает псевдоним check-all
для текущего сеанса оболочки. Вы можете созранить такой алиас в ~/.bashrc
или ~/.zshrc
, чтобы всегда иметь его под рукой.
$ alias check-all='wp core check-update && wp plugin list --update=available && wp theme list --update=available' $ check-all +-----------------+-------------+-----------------------------------------------------------+ | version | update_type | package_url | +-----------------+-------------+-----------------------------------------------------------+ | 4.7-beta4-39322 | minor | https://wordpress.org/nightly-builds/wordpress-latest.zip | +-----------------+-------------+-----------------------------------------------------------+ +-------------------------+----------+-----------+--------------+ | name | status | update | version | +-------------------------+----------+-----------+--------------+ | akismet | inactive | available | 3.1.8 | | co-authors-plus | inactive | available | 3.1.1 | | wp-redis | inactive | available | 0.2.2 | | rest-api | active | available | 2.0-beta13.1 | | wp-api-oauth1 | inactive | available | 0.2 | +-------------------------+----------+-----------+--------------+ +----------------------+----------+-----------+---------+ | name | status | update | version | +----------------------+----------+-----------+---------+ | p2 | inactive | available | 1.4.2 | +----------------------+----------+-----------+---------+
Сохранение вывода команды
Команды WP-CLI отправляют вывод как в STDOUT (вывод), так и в STDERR (ошибки), в зависимости от характера сообщения. Вы можете не заметить разницу между ними, потому что WP-CLI отображает их оба в вашей консольной оболочке. Однако, если вы хотите сохранить вывод в файл, это различие имеет значение.
Простое использование >
приведет к записи STDOUT из команды в файл import.log
.
$ wp import wordpress.wxr --authors=create > import.log
Инструкция 2>&1
перенаправляет STDERR в STDOUT. После чего вы также можете записать STDOUT в файл.
$ wp import wordpress.wxr --authors=create > import.log 2>&1
Когда вы сохраняете вывод в файл, вы не увидите вывод в текущем сеансе оболочки. Однако вы можете открыть второй сеанс оболочки и выполнить команду tail -f <file>
, чтобы увидеть вывод по мере его добавления в файл.
В качестве альтернативы, чтобы не открывать две консоли, вы можете использовать команду tee, который пишет как в стандартный вывод, так и в файлы. Вам нужно только передать вывод команде и указать имя файла.
$ wp import wordpress.wxr --authors=create | tee import.log
Это выведет вывод на текущий экран оболочки, а также запишет его в файл журнала.
Обратите внимание, что если файл уже существует, он будет перезаписан. Если вы хотите добавить вывод в файл, используйте опцию -a
(--append).
$ wp import wordpress.wxr --authors=create | tee -a import.log
--
Источник: https://make.wordpress.org/cli/handbook/references/shell-friends/