< from > to
не работает, потому что там нет команды; нет процесса. Оболочка открывает / создает файлы и упорядочивает перенаправления (это означает, что дескрипторы файлов, ссылающиеся на эти файлы, устанавливаются как 0 и 1: стандартный ввод и стандартный вывод). Но там нечего делать, чтобы выполнить цикл для чтения со стандартного ввода и записи на стандартный вывод.
zsh
выполняет эту работу, заменяя настраиваемую пользователем команду в этом случае "нулевой команды". Команда не отображается в командной строке, но все еще там. Для него создан процесс, и он работает точно так же. NULLCMD
по умолчанию cat
, поэтому <от> до
на самом деле означает cat
в zsh
, если NULLCMD
не установлен в другое значение; это команда "неявной кошки".
«Бесполезное использование cat» происходит, когда cat
используется в качестве посредника для чтения из файла и передачи данных другому процессу, чей файловый дескриптор может быть просто связан с исходным файлом.
Если cat
можно удалить из ситуации, так что оставшиеся команды все еще могут выполнять ту же задачу, это бесполезно. Если он несъемный, значит, он не бесполезен.
# useless, removable:
$ cat archive.tar | tar tf - # --> tar tf archive.tar
# not removable (in POSIX shell):
$ cat > file
abc
[Ctrl-D]
# likewise:
STRING=$(cat file)
кот
, который заменяется , это не одно и то же.Например, вместо cat> file
мы можем использовать vi file
для создания файла. Это не считается удалением cat
, при этом оставшееся количество используется для выполнения той же задачи.
Если cat
является командой only в конвейере, то, конечно, ее нельзя удалить; никакая перестановка того, что осталось, не сделает аналогичную работу.
Некоторые сценаристы оболочки используют cat
, потому что они думают, что это позволяет им переместить входной операнд ближе к левой стороне командной строки. Однако перенаправления могут быть в любом месте командной строки:
# If you're so inclined:
# move source archive operand to the left without cat:
$ < archive.tar tar xf - > listing
Если вы знаете, как передать файлы при запуске передачи с вашего локального компьютера, просто откройте другое окно и сделайте это.
Я должен отметить, что использование FTP для передачи файлов небезопасно. FTP также плохо работает с маршрутизаторами NAT.
Если вам нужно инициировать передачу с удаленной стороны, создайте обратный TCP-туннель с помощью SSH и используйте его для подключения к локальному компьютеру и передачи файлов.