Исправить пробел в пути от команды find

В моей системе установлены Android -Studio, инструменты Android -и несколько других пакетов, связанных с Android. Переменная ANDROID_HOMEвообще не установлена. Это наводит меня на мысль, что вы где-то вручную установили его. Загляните в такие места, как .profile, .bashrcи друзья. Если вам не повезло, вы можете попробовать что-то вродеgrep -r 'ANDROID_HOME' ~/(это не лучший шаблон для использования из-за его неэффективности ). Есть лучшие способы сделать это.

Команда adb, которую вы видите, представляет собой просто сервер adb, который был разветвлен и, таким образом, работает в фоновом режиме, он прослушивает TCP-соединения на порту 5037. Скорее всего, это просто что-то, что вы забыли завершить. Можно просто запустить pkill adb, чтобы завершить этот процесс.

Учитывая все вышесказанное, я думаю, что ваши пакеты, связанные с Android, полностью удалены . вы можете проверить, какие пакеты Android установлены, используя pacman -Qs android. Если вы уверены, что действительно хотите удалить все следы Android из вашей системы, попробуйте запустить что-то вродеsudo pacman -Rn $(pacman -Qsq android)

0
04.12.2018, 06:44
3 ответа

Во-первых, find может что-то делать со своими результатами; посмотрите на флаг -exec {}. Вы можете сделать что-то вроде:

find /Volumes/DATA/ -name "*.app" -depth 1 2> /dev/null -exec cp '{}' /Volumes/VMWare/img/ \;

Обратите внимание на одинарные кавычки вокруг заполнителя файла "{}".

Вы также можете использовать канал с xargs.

2
28.01.2020, 02:16

Используйте -print0с findдля нулевого завершения имен файлов и передайте этот вывод в xargsс -0, чтобы указать xargs, что имена файлов из стандартного ввода заканчиваются нулем. И используйте -Iдля замены строк в начальных аргументах.

find /Volumes/DATA/ -name '*.app' -maxdepth 1 -print0 | xargs -0 -I fn cp fn /Volumes/VMWare/img/

1
28.01.2020, 02:16

Я запускаю i3 на Ubuntu 18.04. Вот как я это решаю:

* * * * * XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send Hey "this is dog!"

-121 ---203765 ​​-

В zsh, `...`, как и современная форма $(...), разбивается на символы $IFS, которые по умолчанию включают SPC, TAB, NL и NUL.

Из них только NUL не может встречаться в пути к файлу, поэтому вам потребуется:

IFS=$'\0'
cp $(find /Volumes/DATA/ -name "*.app" -depth 1 -print0 2> /dev/null) /Volumes/VMWare/img/

Или, вместо использования неявного разделения слов, выполненного $(...)с использованием глобального параметра, используйте явный оператор разделения:

cp ${(0)"$(find /Volumes/DATA/ -name "*.app" -depth 1 -print0 2> /dev/null)"} /Volumes/VMWare/img/

Но в любом случае использование findздесь не имеет никакой пользы по сравнению с:

cp /Volumes/DATA/*.app(D) /Volumes/VMWare/img/

(здесь используется квалификатор Dglob, поэтому он также включает скрытые файлы, как это делает find, хотя, вероятно, вы все равно захотите их пропустить ).

2
28.01.2020, 02:16

Теги

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