Как переключиться на пользователя root, но оставаться в том же каталоге

Как правило, у вас есть несколько способов достичь этого:

rm fileName_{100..100000}

будет расширяться оболочкой примерно в 100 000 имен файлов. Если basename длинный путь и число достаточно высокое, вы можете фактически превысить максимальную длину командной строки при таком подходе.

Цикл for

for i in $(seq 100 100000); do rm fileName_$i; done
[d3 ] не страдает от этой проблемы, но является относительно медленным способом удаления файлов, поскольку оболочка должна выполнить замену переменных и запуск rm около 100 000 раз.

Оба вышеописанных метода могут вызывать предупреждения, если некоторые файлов, скажем, filename_101.

Обычно решения, основанные на find, лучше, поскольку они работают только с файлами, которые на самом деле там (во время обнаружения). Однако есть некоторые тонкие отличия:

find . -name 'fileName_[100-100000]' -exec rm {} \;

все равно запустит программу rm около 100 000 раз, а при замене окончательного \; на + попытается свести к минимуму количество подпроцессов. Оба метода, вероятно, будут (много или немного) медленнее, чем использование -delete, которое вообще не использует внешние команды, но вместо этого вызывает системные вызовы.

Однако всегда проверяйте сначала, действительно ли шаблон соответствует файлам что вы хотите настроить таргетинг:

stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]' 
askubuntu/filename_1

Итак, в этом случае вы должны удалить файл, который хотите сохранить, и оставить файлы, которые должны были быть удалены.

1
задан 5 March 2017 в 15:12

1 ответ

Это очень просто. Просто введите

sudo su

вместо

sudo su - root

Это сохранит вас в той же папке, что и root.

6
ответ дан 23 May 2018 в 00:57
  • 1
    Это не так, я имею в виду, что он работает, но использование sudo su не имеет большого смысла. Это для sudo -s. Я никогда не понимал, почему так много уроков Ubuntu предлагают sudo su. – terdon♦ 4 March 2017 в 18:42
  • 2
    @terdon Я так и не понял, но, похоже, он распространен среди всех пользователей Linux. Возможно, аллитерация делает его более запоминающимся. – Barmar 5 March 2017 в 02:43
  • 3
    @Barmar лично, я видел это только в мире Ubuntu. Так как большинство Linux-систем имеют обычную учетную запись root по умолчанию, когда вам нужна оболочка, вы будете делать su (один, нет sudo). Поскольку, однако, Ubuntu отключает учетную запись root по умолчанию, sudo su пришел вполне естественно. это также , по-видимому, , случай в некоторых уголках мира UNIX, но в Linux я видел это только в Ubuntu. – terdon♦ 5 March 2017 в 03:40
  • 4
    @terdon Я видел это десятилетиями, я даже не знаю, какие дистрибутивы мы использовали. Мы используем Debian в моей текущей компании, и мои сотрудники используют его. – Barmar 5 March 2017 в 04:44

Другие вопросы по тегам:

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