Из сообщений об ошибках Вы используете (t) csh. Это помогло бы упомянуть это в Вашем вопросе, тем более, что Вы показываете $
как Ваша подсказка, и это - традиционно подсказка Bourne, не подсказка csh.
type
встроенное в оболочке стиля Границы. Это не существует в csh. Когда Вы работаете type git
, это говорит Вам что type
команда не найдена.
Много оболочек хранят информацию о местоположении команд в пути поиска в кэше. Я не знаю, кажется ли какая-либо версия csh кэшей отрицательные поиски, но, что Ваш делает. Выполните команду rehash
обновить кэш. При запуске нового экземпляра оболочки он имеет новый кэш и так не помнит это git
не присутствовал ранее.
Перенаправления в ракушках в стиле Bourne / POSIX , такие как Bash , Dash, ksh и т. Д.
, обработанные в том порядке, по которому они появляются, слева направо
> x
открывается и усеченные файл x
, и устанавливает дескриптор файла, который пишет в x
в качестве стандартного вывода. Ваша команда:
cat file1 > file2 > file3
будет:
File2
File3
CAT File1
Конечный результат заключается в том, что стандартные выходные точки в File3
в то время CAT
. Как File2
и
и File3
имеют стершение их текущего содержимого, и File3
получает выход CAT
(содержимое file1
) написано в него.
Если вы хотите разделить выход на несколько потоков, записанных в отдельные файлы, вы можете использовать TEE
:
cat file1 | tee file2 > file3
Другие оболочки (, особенно ZSH
) Иначе, и ваша команда будет иметь результат, который вы, вероятно, ожидали: как file2
, и file3
будет иметь содержимое file1
.
Обратите внимание, что здесь не нужно
; <
Входное перенаправление сделало бы рабочую силу.
Когда вы перенаправляете FD несколько раз, все перенаправления выполняются, а последние палочки:
$ strace -f -e open bash -c 'cat file1 > file2 > file3'
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
...
[pid 20508] open("file2", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
[pid 20508] open("file3", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
...
[pid 20508] open("file1", O_RDONLY) = 3
так, File2
был открыт и усечен, а затем File3
был открыт.