Я подозреваю, что Ваш сценарий и Ваша оболочка отличаются. Возможно, Вы имеете #!/bin/sh
наверху Вашего сценария как интерпретатор, но Вы используете bash
как Ваша персональная оболочка. Можно узнать то, что окружает Вас выполненный в терминале путем выполнения echo $SHELL
.
Более легкий способ сделать это, которое должно работать через большинство оболочек, должно было бы использовать перенаправление канала вместо оператора чтения файла, который Вы даете. Символ '-' является стандартной номенклатурой для чтения STDIN и может часто использоваться в качестве замены для имени файла в списке аргументов:
cat file2 | sort | diff file1 -
Или избегать бесполезного использования кошки:
sort < file2 | diff file1 -
NTFS имеет Windows ACEs. Unix использует "биты режима" на каждом файле.
На NTFS каждый файл может иметь владельца, и нуль или больше записей управления доступом Windows (ТУЗЫ). ACE состоит из принципала (пользователи, и группы являются принципалами), ряд операций (Чтение, Запись, Выполнитесь, и т.д.), и позволены ли те операции или отклонены. Файлы могут иметь много ТУЗОВ. Другие объекты в Windows кроме файлов могут иметь ТУЗЫ также, такие как ключи реестра, объекты принтера и другие вещи. Все ТУЗЫ приняты во внимание, когда операция файла происходит. Отклоните имеет приоритет, позволяют.
Наследование поддержки Windows ACEs, где можно установить ACE для каталога и иметь его автоматически, распространяет для понижения каталогов уровня.
Файлы в Unix имеют пользователя владения (владелец) и группа владения (группа владельца). Существует три фиксированных "принципала", которые являются владельцем, членами группы владения и всех остальных (иначе мир). Для каждого принципала существует три "бита", которые покрывают чтение, пишут и выполняют способности. (они имеют различные значения для каталогов, чем файлы, видят это). Эти биты определяют, кто может выполнить что операции. Это называют режимом файла и встраивают в файл (нет никаких отдельных ТУЗОВ).
Большую часть времени Вы обеспокоены "мировыми" полномочиями, т.е. устанавливающий все три бита на 0 для "мира" не означает никого, кто не владелец, или владелец группы может сделать что-либо с файлом. Полномочия Unix только работают над файловой системой, но так как большинство объектов появляется как файлы, можно использовать полномочия ограничить доступ к дискам, принтерам, и т.д. Полномочия Unix более просты, но более "крупны". Полномочия Unix не поддерживают наследование и не будут влиять на более низкие каталоги уровня, за исключением выполняют разрешение для каталогов (я думаю), который заставляет недавно созданные файлы принимать полномочия каталога (но не влияет на в настоящее время создаваемые файлы).
Традиционно файлы Unix имеют единственного владельца и единственную группу владельца. Существуют расширения Linux, которые добавляют ТУЗЫ к файлам точно так же к Windows.
Преимущество Unix состоит только в том, который более простая система обычно легче понять и защитить и ускориться, так как файловая система не должна выбирать ТУЗЫ в дополнение к inodes когда вводные файлы.
Одна вещь это очень отличается, состоит в том, что "исполняемый файл" является разрешением в соответствии с Linux/Unix, не на основе имени или расширения файла.
Это - преимущество перед Windows в этом на Linux, можно удостовериться, что что-то не становится выполняемым путем удаления исполняемых полномочий. Никакие волшебные расширения не имеют значения вообще. Это - вероятно, одна причина, почему традиционные вирусы файла не добрались точно нигде на Unix и Linux.
acl
илиfacl
или что-то подобное, с этими двумя названными программамиsetfacl
иgetfacl
изменить или получить настройки списка управления доступом. – Shadur 22.05.2011, 12:48