Символы повторения коллапса

Самая очевидная оборотная сторона - когда Вы начинаете создавать файлы/каталоги в общем каталоге, ожидая, что другие пользователи получат доступ к ним.

Конечно, это - только вопрос не упущения установить корректный umask прежде, чем сделать материал, который должен быть совместно использован всеми пользователями.

Другой протест (не действительно оборотная сторона, после того как Вы знаете о нем) состоит в том, когда Вы начинаете делать материал sudo, такой как установка локальных программ, рубиновых драгоценных камней, яйца Python (не, ОС управляет пакетами, очевидно), создавая конфигурационные файлы, и так далее.

Вы попадете в беду для umask, наследован sudo сессией, поэтому только базируйтесь, сможет получить доступ к файлам/директорам, которые Вы создаете. sudo может быть настроен для автоматической установки umask путем, Вы хотите: этот вопрос покрыт на superuser.com.

3
13.04.2017, 15:36
4 ответа

Не ответ "только для Bash", но возможно полезный:

echo "$PWD///" | tr -s '/'
8
27.01.2020, 21:08
  • 1
    "Сжатие" (-s) опция к TR может использоваться на диапазоне символов, также: повторите "aabbcc" |, TR-s' [ac]' должен yeild "abbc" –  Bruce Ediger 15.04.2011, 23:35

Возможный в "чистом ударе", но только с extglob активный.

$ shopt -s extglob
$ A="////qsd/////sdfgfg//qsd//////"
$ echo ${A//\/+(\/)/\/}
/qsd/sdfgfg/qsd/
5
27.01.2020, 21:08
  • 1
    @Mat.. Замена должна быть / (нет \/) в моей системе...???? –  Peter.O 19.04.2011, 14:01
  • 2
    @fred.bear: обе работы здесь (колотят 4.1.9 (2)), –  Mat 19.04.2011, 14:04
  • 3
    @Mat.. версия 4.1.5 (1)... Это должно быть этим.спасибо. –  Peter.O 19.04.2011, 14:07

ОБНОВЛЕНИЕ: Циновка (+1) имеет верное представление..., мой ответ только работает на нечетные числа "/"

этому не нужен "extglob", который будет установлен.

var =" $PWD///"; var =" $ {var//\/\//}"; эхо "$var"

0
27.01.2020, 21:08

только Bash, используя переменную:

# code:
shopt -s extglob
A="$PWD//"; 
echo "Original: $A"; 
echo "Result:   ${A//+(\/)//}"

# output:
Original: /home/myhome/Projects/Bob/build//
Result:   /home/myhome/Projects/Bob/build/
  • // = поиск и замена, продолжайте поиск и замена

  • + (/) = соответствовать одному или нескольким из «/»

  • // = заменить, «/»

Для лучшего визуального примера скажем, что «z» нужно сжимать, чтобы лучше видеть это, не требуя отсечения косой и не иметь нашего поиска / замены с толку с инфраструктурой $ {var // Узор / строка}:

# code:
shopt -s extglob
A=zzz/zzz/zzzzz/zzzz/zzzz; 
echo $A; 
echo ${A//+(z)/z}

# output:
zzz/zzz/zzzzz/zzzz/zzzz
z/z/z/z/z
3
27.01.2020, 21:08

Теги

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