установка значения по умолчанию umask и user:group на каталоге

Существует нет mv команда в интерактивном режиме sftp. Использовать rename вместо этого.

Для изучения, какие команды доступны проверьте страницу справочника man sftp или введите help в sftp.

4
08.03.2014, 16:31
1 ответ

Отличие в области и синтаксически очень тонко:

$ ./updater

эквивалент

$ /bin/bash ./updater

Он запускает скрипт (если он помечен как исполняемый и на файловой системе смонтирован с опцией exec - последняя форма работает, даже если одно из этих условий не выполнено). Это означает, что он порождает новый экземпляр оболочки и подает содержимое сценария. Таким образом, любые псевдонимы, определенные в нем, ограничиваются длительностью интерпретирующей оболочки, которая находится только до конца сценария.

$ . updater
$ . ./updater
$ source updater
$ source ./updater

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

Вот почему иногда вы видите файлы shell init ( ~/.bashrc в случае Баша), которые выглядят так:

#!/bin/bash
for n in ~/etc/bash/*; do
    . $n
done

, где ~/etc/bash может выглядеть как:

~/etc/bash/
|-- bash.10.env
|-- bash.20.aliases
`-- bash.30.func

(названия вполне себе понятны). При добавлении некоторых файлов в такой каталог init необходимо только . ~/.bashrc . Для чего можно иметь псевдоним, конечно. Это также может быть расширено - например, с помощью специализированной инициализации в зависимости от имени хоста (или фазы Луны с помощью pom из bsg-игр).

Одно большое предостережение для этих настроек: убедитесь, что файлы init «повторно входят» в том смысле, что не имеет значения, сколько раз Вы отправляете их в одну оболочку - например, переменные, которые Вы хотите сохранить, должны быть определены условно:

VAR=${VAR:-"value"}

вместо безусловного:

VAR="value"
-121--58021-

Как насчет perl?

perl -pe 's/^(.+?)(?=;)/$1 . " "x(41-length($1))/e' file
    LDX LEVEL
    LDA INITD015,X                       ; INITIAL ACTIVE SPRITES
    STA $D015
    STA SAVED015
    LDA INITXPOS,X                       ; INITIAL HERO X COORDINATE
    STA XPOS
    LDA INITYPOS,X                       ; INITIAL HERO Y COORDINATE
    STA YPOS
    LDA INITXPOSMUM,X                    ; INITIAL MUMMY X COORDINATE
    STA XPOSMUM
    LDA LEVEL
    BNE NOTLOADENDELEMENTS
    LDA FLAGLOSELIFE
    BNE NOTLOADENDELEMENTS
;    LDX #<BIGELEMENTSFILE               ; LOW BYTE
;    LDY #>BIGELEMENTSFILE               ; HI BYTE
;    JSR LOADFILE_EXOMIZER

awk

awk '
    (p=index(substr($0,2), ";")) > 0 {
        printf "%-40s%s\n", substr($0,1,p), substr($0,p)
        next
    }
    {print}
' file
-121--167125-

Option 1: Разрешения файлов внутри каталога не имеют значения, блокировки на уровне каталога обычно достаточно, поэтому достаточно chmod 2750/path-to-dir .

Вариант 2: Использовать только ACL ( chmod 2750/path-to-dir не требуется, но сделать вещи приятнее для людей, не привыкших к ACL).

setfacl -R -b -d -m o::--- -m u::rwX -m g::rX  .

обратите внимание, что можно установить g:: rwX для достижения 770/660

2
27.01.2020, 21:00

Теги

Похожие вопросы