Пустой мусор в Ubuntu

Поскольку здесь-документ обозначен < (без кавычек), содержимое здесь-документа подлежит расширению \$`. Следовательно, $newUrl в here-документе расширяется до своего значения в локальной оболочке.

Чтобы вместо этого передать $newUrl в удаленный shell и заставить его расширить переменную, вы можете защитить $ от расширения: \$newUrl вместо $newUrl, или использовать литерал here-документа: <<'EOF' вместо ``<

Вы расширяете переменную newUrl в строку, которая будет интерпретирована оболочкой. Это означает, что значение переменной будет интерпретировано как фрагмент сценария оболочки, а не как строка. Если значение содержит специальные символы командного интерпретатора, это приведет к хаосу. (Какие символы являются проблемными, зависит от того, какое решение вы используете.)

Вместо того чтобы использовать много уровней цитирования и расширения, передайте URL в качестве входных данных команде, запущенной от имени root. Тогда вам не о чем будет беспокоиться. У этого есть дополнительное преимущество: он работает, даже если sudo не настроен на прием -E, что встречается довольно часто. Вы можете использовать sudo sh -c 'cat >>/path/to/file', или лучше, чтобы избежать возможных проблем с цитированием файла, sudo tee -a /path/to/file.

sshpass -p "password" ssh -t -t my-box <<'EOF'
  newUrl="this is a url"
  printf '%s\n' "$newUrl" | sudo tee -a /path/to/file
EOF
0
08.11.2018, 20:33
1 ответ

Каталог ~/.local/share/Trashсодержит 2 подкаталога -, filesи info. Когда вы перемещаете что-то в корзину с помощью графического интерфейса, он фактически перемещает это в подкаталог файлов -и может поместить некоторую метаинформацию -в подкаталог info -. Итак, если вы хотите удалить элементы в Корзине из командной строки, вам действительно нужно сделать

rm -rf ~/.local/share/Trash/*/*
1
28.01.2020, 02:41

Теги

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