Имя /dev/stderr
действительно допустимо при перенаправлении в канал. Что может быть невозможно, так это открыть конечную цель /dev/stderr
напрямую. Просто посмотрите:
$ (echo Testing testing > /dev/stderr) |& cat
Testing testing
Канал, созданный |
или |&
, обычно является анонимным каналом ; отображаемое имя не соответствует объекту в файловой системе . Для иллюстрации вы можете попробовать что-то простое, например:
$ ls -la /dev/fd/ |& cat
total 0
dr-x------ 2 alexp alexp 0 Jul 6 18:23.
dr-xr-xr-x 9 alexp alexp 0 Jul 6 18:23..
lrwx------ 1 alexp alexp 64 Jul 6 18:23 0 -> /dev/pts/4
l-wx------ 1 alexp alexp 64 Jul 6 18:23 1 -> pipe:[1058859]
l-wx------ 1 alexp alexp 64 Jul 6 18:23 2 -> pipe:[1058859]
lr-x------ 1 alexp alexp 64 Jul 6 18:23 3 -> /proc/4335/fd
Очень необычно пытаться открыть (конечную )цель /dev/stderr
; имя /dev/stderr
предоставлено для того, чтобы избежать хлопот с выяснением фактической цели.
networksetup -renamenetworkservice "usbmodem" "new-name"
делает свою работу. Он переименовывает первую из двух служб. Если это было не так, вы можете переименовать снова.