Здесь можно задать несколько вопросов люди такие тупые, как я, но я не видел своей проблемы.
Только что установлен.
Выполняет все обновления.
откройте cmd и введите sudo curl -sSL https://install.pi-hole.net Я bash
sudo: curl: command not found
sudo apt install curl -sSL ...
E: Параметр командной строки 'S' не понят
remove
E: Параметр командной строки 'L'
Надеюсь, вы можете сказать, что я прочитал классную статью и забил себе голову.
Первая ошибка - вы помещаете I
перед bash
, а не |
(вертикальная черта). Вторая ошибка - вы неправильно выполнили команду установки. Это sudo apt install curl
без каких-либо параметров командной строки после.
Итак, для установки pi-hole это следующее:
sudo apt install curl
curl -sSL https://install.pi-hole.net | sudo bash
Я хочу еще немного объяснить, о чем говорит @Aenfa. Просто чтобы вы это поняли (исправить проблему - хорошо, но лучше понять, что вы сделали неправильно).
Начнем с установки curl:
Вы сделали следующее: sudo apt install curl -sSL ...
Что вам нужно сделать, это: sudo apt install curl
Почему? Поскольку -sSL
являются параметрами для curl. Таким образом, при использовании команды curl
вы выбираете включение / использование некоторых из имеющихся у нее параметров (например: -s
для молчания, -L
для нет индикатора выполнения и -S
, чтобы по-прежнему показывать ошибки, хотя используется -s
). Они называются флагами и используются постоянно. Вы можете увидеть доступные флаги (и общее использование) для команды, выполняющей man [[команда]]
. Итак, в этом случае man curl
.
При установке чего-либо (в данном случае curl
) вы просто выбираете то, что хотите установить, давая имя. Так, например, sudo apt install curl
. Или sudo apt install wget
. Или sudo apt install nano
. Ты понял. -sSL
является частью команды curl, и при установке curl вы не используете curl, поэтому эти флаги не применяются. Вы использовали apt
. А apt
не поддерживает флаги -s, -S и -L, поэтому он выдавал ошибки!
Теперь часть I
:
Это немного сложнее, поэтому я предлагаю вам поискать его. Поиск трубопроводов Linux объяснил
. Потому что это называется трубопровод.Вы неправильно поняли |
для I
. При подключении по конвейеру вы используете |
(сдвиг, а затем клавишу выше Enter на клавиатуре).
Так вот в чем проблема. Вы пытались выполнить соединение, но использовали I
вместо |
. Все нормально. Все мы ошибаемся!
Но что такое трубопровод?
[[команда 1]] | [[команда 2]] | [[команда 3]]
Я снова предлагаю поискать его, но вкратце, выходные данные одной команды будут входными данными для второй команды, а выходные данные второй команды будут входными данными для третьей команды.
Пример:
cas@Waveserver:~$ echo "this is a test"
this is a test
cas@Waveserver:~$ echo "this is a test" | sed "s/test/joke/"
this is a joke
cas@Waveserver:~$ echo "this is a test" | sed "s/test/joke/" | grep -o "joke"
joke
Вывод команды echo, конечно, прост. Это просто текст, который отображается эхом.
Теперь мы собираемся направить этот вывод в sed и заменить test
на шутку
. Таким образом, вывод echo становится вводом sed. Таким образом, он может заменить слово, потому что на его входе присутствует слово test
.
Теперь этот вывод будет передан команде grep. Это означает, что это шутка
будет вводом для grep (обратите внимание, что я использую, верно, флаг! Когда мы выполняем man grep
и прокручиваем вниз, мы видим что -o
означает - only-matching
или «Печатать только совпадающую часть строки вместо того, чтобы отмечать совпадающий текст красным»).Итак, grep ищет во входных данных шутку
, которая находит ее и будет выводить!
Итак, три команды были выполнены, но есть только один выход, потому что выходные данные 1-й и 2-й команд были (вместо вывода на терминал) перенаправлены на вход следующей команды в конвейере.
В вашем случае вы скручивали скрипт (используемый для установки pi-hole) и передавали его по конвейеру команде bash
, что в основном означает: «запустить скрипт». Итак:
[[получить сценарий]] | [[запустить его]]
Вы можете передать по конвейеру столько команд, сколько захотите. В нескольких сценариях, которые я написал, у меня есть 8 команд, которые передаются по конвейеру друг за другом, а в других случаях я просто передаю 1 или 2 команды!
Надеюсь, теперь вы это понимаете!
РЕДАКТИРОВАТЬ: Вот одна из тех длинных трубок, которые я нашел где-то внутри своих скриптов!
curl -s -L https://plex.tv/pms/downloads/5.json | jq -M | grep -PA 3 "Ubuntu. *? 64-бит" | хвост -n 1 | grep -Po "\" \ Khttp. *? (? = \ ")"
[[свернуть веб-страницу, содержащую информацию об обновлениях для медиасервера plex]] | [[красиво распечатать вывод json]] | [[возьмите строку и три строки ниже (- .. A 3) этой строки]] | [[из этого вывода показывать только нижнюю строку]] | [[возьмите URL-адрес внутри строки]]