LINUX.ORG.RU

chmod через pipe или перенаправление

 , , ,


0

1

Господа, приветствую! Гугл не помог. Необходимо создать пустой файл и присвоить ему бит исполняемости. Не нашел способа сделать это напрямую, без создания промежуточных переменных. Т. е. понятно, что можно так:

NEW_FILE="$1"
I="${NEW_FILE:-$(echo 1-$RANDOM.sh)}"
touch "$I"
chmod 777 "$I"
Понимаю что нерабочие схемы, идею хочется пояснить. Что-то ВРОДЕ:
touch "${NEW_FILE:-$(echo 1-$RANDOM.sh)}" | chmod 777
или
chmod 777 < $(touch "${NEW_FILE:-$(echo 1-$RANDOM.sh)}")
т.е непонятно, можно ли подложить агрумент с именем файла chmod'у. Буду благодарен за любую помощь.

Необходимо создать пустой файл и присвоить ему бит исполняемости.

touch empty.txt && chmod +x empty.txt

cloun1901
()
Ответ на: комментарий от Pashtet

будьте добры пример на моем коде

не буду. добрых тут вообще немного.

что-то у меня не получается передать с помощью xargs

ты покажи, как ты пытаешься, а мы посмотрим, что может быть не так. когда всё делают за тебя – это в другой раздел форума.

sogadis982
()
Последнее исправление: sogadis982 (всего исправлений: 1)
Ответ на: комментарий от sogadis982

т.е. не можете. Здесь не экзамен. И вы не экзаменатор. Я попросил помочь, кто сможет. Кинуть наобум xargs не трудно, а показать что владеете предложенным инструментом, и он годится для решения - сложнее. Тут как раз помогают, умные люди. И не тычат незнакомым, которые обращаются вежливо.

Pashtet
() автор топика
Ответ на: комментарий от Pashtet

не понимаю, с чего ты решил, что я рвусь

показать что владеете предложенным инструментом, и он годится для решения

тебе дали инструмент, если у тебя не хватает мозгов им воспользоваться – ты всегда можешь спросить в Job и получить решение целиком

sogadis982
()

Из твоего описания не понятно зачем тебе $1.
И еще непонятно зачем тебе нужно именно одной командой. Чем не подходит вариант с промежуточной переменной.
И еще хотелось бы знать как дальше будет использоваться этот файл. Потому как задача странная.

Но скорее всего тебе нужно смотреть в эту сторону:

$ chmod +x "$(mktemp XXXXX.sh)"

Но код вверху глупый, так как не запоминает имени файла, так что дальше его никак не использовать.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 5)
Ответ на: комментарий от Kroz

Спасибо. chmod +x «$(mktemp XXXXX.sh)» это я знаю. $1 нужен. если аргумент скрипту передается, то создается файл с именем пременной, а если не передается, то рандомный. На счет «Но код вверху глупый, так как не запоминает имени файла, так что дальше его никак не использовать.» - та часть что с промежуточной переменной, рабочий и все запоминает, а который предложен как иллюстрация смысла вопроса, так он не рабочий, я так и написал. Подумал может кто другой способ подскажет.

Pashtet
() автор топика
Ответ на: комментарий от Pashtet

Ты не ответил на главный вопрос: почему так важно «сделать это напрямую, без создания промежуточных переменных»?

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

Важно, потому, что как с переменными я знаю. Спасибо тебе тоже. Ответ мне дали.

Pashtet
() автор топика

На эту же тему:

$ touch somefile.txt && chmod -v a+x $_
mode of ‘somefile.txt’ changed from 0664 (rw-rw-r--) to 0775 (rwxrwxr-x)

$_ The underscore variable is set at shell startup and contains the absolute file name of the shell or script being executed as passed in the argument list. Subsequently, it expands to the last argument to the previous command, after expansion. It is also set to the full pathname of each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file.

NDfan
()
Ответ на: комментарий от Kroz

Потому что это админ/девопс на курсах переквалификации и он патологически не умеет читать маны, а вы его только что вытянули. У меня такой тимлид, например.

anonymous
()
Ответ на: комментарий от anonymous

Ход ваших мыслей понятен, но к счастью Вы ошибаетесь. Моя работа никак не связана с написанием кода. Я не хотел выглядеть где-то на стороне умнее за чужой счет. Пишу некоторые скрипты для себя, автоматизация некоторых процессов на домашнем компе. Зачем Вы флудите, тоже ясно. Не ясно зачем Вы на этом форуме читаете и пишете, т.к. сюда обращаются за помощью, а не за Вашим недержанием.

Pashtet
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.