Как использовать подстановочные знаки оболочки с sudo?

Другое решение без подстановки :

grep theName | cut -d, -f 3 | xargs curl > result.txt
14
03.04.2017, 23:02
1 ответ

В

sudo mv folder1/* .

ваша оболочка (то есть работающая как вы, а не root) расширяется (ну, пытается расшириться), что папка1/* глоб.

Это приводит к тому, что в sudo mv передается ряд аргументов. Однако здесь у вас (в отличие от root) нет доступа для чтения к этому каталогу, поэтому glob не соответствует ни одному файлу. Ваша оболочка является одной из тех сломанных (IMO) оболочек, таких как bash или sh, где, когда glob не совпадает, он передается как есть.

Таким образом, вместо того, чтобы оболочка возвращала ошибку о том, что она не нашла ни одного файла, соответствующего этому шаблону, она передала строку folder1/* буквально в качестве аргумента для sudo mv. А mv жалуется, что не может найти файл с именем folder1/* (в данном случае, к счастью, безобидный).

Здесь вы хотите, чтобы этот глобус был расширен корнем, поэтому вам нужно запустить оболочку как root, чтобы расширить этот глобус:

sudo sh -c 'mv folder1/* .'
30
27.01.2020, 19:50

Теги

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