Есть ли любой путь к make-файлу A, имеет точно то же разрешение файла, как файл B без указывает разрешение как 777. Например, обычно я ls
файл B и проверка его установка разрешения. Затем 'chmod??? fileA'. Однако я ищу команду как
chmod --argument_to_copy_file_permission fileA fileB
Советуйте.
Править: Между прочим, есть ли любая команда для наблюдения разрешения файла в режиме цифры (как 777), спасибо.
Это работает в Linux; я не уверен, является ли программами или опциями POSIX.
chmod `stat -c '%a' fileB` fileA
На MAC OSX, неотступно следующие работы то же, но опции использования та работа.:)
chmod `stat -f '%Op' fileB` fileA
(Это - верхний регистр "o", не нуль.)
Снова, я не знаю, является ли это POSIX. Я знаю, что это не будет работать над Linux;-f опция означает что-то полностью различное там.
Так или иначе обе команды работают путем взятия вывода stat
команда на fileB, конкретно восьмерично отформатированные режимы файла и использование, что как режим для установки на fileA. Это означает материал, промежуточный, одинарные левые кавычки дадут Вам режимы файла.
chmod --reference=fileA fileB
должен сделать это согласно странице справочника.
Это - довольно короткий сценарий жемчуга:
my ($dev, $ino, $mode, @junk) = stat "fileA";
$mode &= 07777; # mode includes type information in higher bits
printf "%o\n", $mode;
chmod $mode, "fileB";
То, чтобы заставлять это взять аргументы и опции, оставленные как осуществление для читателя...
$ chmod ugo=rwxrwxrwx filename
Таким образом, можно просто ввести что ls(1)
отчеты или запись простой сценарий, чтобы сделать это.
Это будет работать над всеми версиями Unix включая Linux и Mac.
Я немного дольше, чем сценарий жемчуга:
chmod $(ls -l file.whose.permissions.you.want.to.copy | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}' | awk '{print $1}')