Каким бы ни был этот сценарий, он использует значение $DISPLAY
, чтобы определить, работает ли он в среде X11 или нет (, работает ли сценарий, например, в среде X11. окружение рабочего стола, $DISPLAY
будет установлено ). Его вообще не волнует реальная стоимость.
Если он работает в X11, он устанавливает DIALOG
в Xdialog
, что предположительно является программой X11 для отображения диалоговых окон.
Если он не работает в X11 (, например, на безголовой машине или в сеансе SSH -), он устанавливает DIALOG
в dialog
, что предположительно является проклятием (или, по крайней мере, текстовая -программа на основе )для отображения диалоговых окон.
Позже сценарий может использовать $DIALOG
для отображения диалогового окна, подходящего для пользователя.
Я думаю, что при использовании опции --html
вxmllint
игнорируются некоторые другие опции, такие как --format
и --output
. (Пробовал сlibxml2
v2.9.4, поставляемой с macOS High Sierra, и с v2.9.10 от Homebrew .)
Вместо этого, чтобы записать вывод xmllint
в файл, вы можете перенаправить его стандартный поток вывода, используя оператор перенаправления>
("больше -чем" ).
xmllint --html input.html > output.html
xmllint --html --xpath "//p" http://example.com > output.html 2>/dev/null
Опции/аргументы:
--html
— анализировать ввод как HTML. --xpath "//p"
— Запрос XPath, выбирающий все теги <p>
из ввода. http://example.com
— входной файл, в данном случае загруженный напрямую с указанного URL. > output.html
— перенаправить стандартный поток вывода (stdout )в указанный файл. 2>/dev/null
— необязательный :подавлять стандартный поток ошибок (stderr )с терминала, перенаправляя его на нулевое устройство(/dev/null
). (См. этот ответ для хорошей шпаргалки по перенаправлению вывода/ошибки.)
Обратите внимание, что xmllint
не поддерживает HTTPS в настоящее время (, как указано в этом вопросе). Вместо этого вы можете использовать другую утилиту, такую какcurl
или wget
, чтобы сначала загрузить файл, а затем направить его на стандартный ввод xmllint
с помощью|
(«трубы»/«вертикальной полосы» ). оператор управления и-
("дефис/минус" )для xmllint
файлового аргумента.
curl --silent "https://example.com" | xmllint --html --xpath "//p" - > output.html 2>/dev/null
Опции/аргументы:
--silent
или -s
— подавлять curl
сообщения о прогрессе/ошибках (, которые в противном случае могли бы быть обработаны синтаксическим анализатором xmllint
). "https://example.com"
— входной файл, который curl
загрузит (по HTTPS, в данном случае )и передаст xmllint
. (Используйте кавычки, если URL-адрес содержит &
или другие специальные символы.)|
— направить стандартный вывод предыдущей команды(curl
)на стандартный ввод следующей команды(xmllint
).--html
— анализировать ввод xmllint
как HTML. --xpath "//p"
— Запрос XPath, выбирающий все теги <p>
из ввода. -
— xmllint
получает ввод из стандартного потока ввода (stdin )(, то есть из вывода curl
), а не из файла или URL-адреса. > output.html
— перенаправить стандартный поток вывода xmllint
's (stdout )в указанный файл. 2>/dev/null
— необязательный :подавлять xmllint
стандартный поток ошибок (stderr )с терминала, перенаправляя его на нулевое устройство(/dev/null
). (См. этот ответ для хорошего списка операторов управления/перенаправления.)