Это нормально. Файл после >
не открыто процессом, работающим под sudo
, но оболочкой, которая не является. Попробуйте это вместо этого:
printf "foo" | sudo tee /etc/file
Это не удар, это - находка; хотя Вы найдете, что большинство утилит будет следовать за тем же принципом:
Когда Вы работаете find $SYMLINK
, find
видит объект, который не является каталогом, таким образом, он не пересекает его. Если Вы хотите рассматривать символьную ссылку на каталог, как будто случалось так, что каталог, добавляют a /
в конце (несколько поврежденных систем или команд могут потребовать "$SYMLINK/."
):
find "$SYMLINK/" -name file.c
Для find
, можно также использовать -H
опция, которая говорит этому рассматривать любую символьную ссылку на командной строке, как будто Вы указали цель:
find -H "$SYMLINK" -name file.c
Это не bash
, это find
. Следующие символьные ссылки в рекурсивном обходе каталога часто приводят к бесконечным циклам (рассмотрите общий прием ln -s foo .
обеспечить путь совместимости). POSIX find
включает -follow
предикат для переопределения этого; возможно, более полезно в этом случае, GNU находит, обеспечивает -H
следовать только за символьными ссылками, непосредственно указанными как параметры, продолжая стараться не разворачивать символьные ссылки, найденные во время обхода. Вы могли использовать их с псевдонимом:
alias find='find -H'
-follow
и -H
, это - противоположное: -H
POSIX, -follow
GNU (и другой) расширение.
– Gilles 'SO- stop being evil'
03.06.2011, 19:26
-follow
предшествует POSIX.
– geekosaur
03.06.2011, 19:28