Когда я curl
файл и канал это в файл или другую команду, я вижу вывод в своем терминале. Я не уверен, как это происходит, поскольку канал, как предполагается, берет весь вывод от завихрения, правильно?
Например:
$ curl http://www.archive.org/stream/Pi_to_100000000_places/pi.txt > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 129M 0 129M 0 0 22.5M 0 --:--:-- 0:00:05 --:--:-- 24.7M
Я использую завихрение как это:
curl http://www.archive.org/stream/Pi_to_100000000_places/pi.txt | some_other_command > some_file
Я не хочу передавать состояние по каналу к some_other_command, я просто задавался вопросом, как это смогло отобразить состояние. Однако показывая, как перенаправить оба потока, добавленные к ответу, не удаляйте это.
Существует два общедоступные потока вывода: стандартный вывод и стандартная погрешность. На практике, при выполнении в терминале, оба отправляют данные на терминал. >
только стандартный вывод перенаправлений и завихрение печатают данные прогресса к стандартной погрешности. Для подавления обоих используйте один из:
curl ... > /dev/null 2>&1
curl ... &> /dev/null # bash's combined redirection operator
curl -s ... # -s, --silent: Silent or quiet mode. Don't show progress meter or error messages.
Для отправки обоих в канал:
curl ... 2>&1 | ...
curl |& ... # bash's combined pipe
, Если Вы не используете |&
или &>
операторы, все потоки перенаправляются независимо.
Также см.:
Когда Вы будете использовать curl
для открытия URL, Вы получите два вывода:
curl
само. Завихрение должно использовать способ показать эти два, отдельно иначе обработка реального вывода (содержание URL) была бы трудна, и я закончу с ненужным содержанием (состояние завихрения).
, Таким образом, это использует stderr
для его состояния и stdout
для содержания.
Используя >
Вы перенаправляете содержание URL (stdout) к эти /dev/null
, необходимо на самом деле использовать: 2> /dev/null
вместо этого.
Также, если Вы хотите победить их обоих к следующей команде:
curl url |& command
, Если Вы только хотите содержание, которое будет передано по каналу для следующего управления, не видя состояния:
curl 2> /dev/null | command