Вы случайно изменились /bin/readlink
быть busybox, а не GNU coreutils версия.
Это вызовет БОЛЬШУЮ поломку. Необходимо восстановить GNU coreutils.
Попробовать
# aptitude reinstall coreutils
Так как Вы выполняете это на другом уровне оболочки, он расширен, прежде чем он будет выполнен в подоболочке. Самый легкий способ зафиксировать это состоит в том, чтобы выйти из любых специальных символов в имени файла:
adb shell find /storage/sdcard0/Sound\ Recordings/ | tail -1 | while IFS= read -r file ; do
adb pull "$(printf %q "$file")" ~/Desktop/
done
Это - решение:
adb pull "/storage/sdcard0/Sound Recordings/$(
adb shell ls -1t '/storage/sdcard0/Sound Recordings' |
sed q |
tr -d '\r'
)" .
Вы сталкиваетесь с проблемами потому что adb
возвратите некоторые возвраты каретки как Windows \r
sed q
просто забавный способ отобразить первое вхождение как head -n1
remote object '/storage/sdcard0/Sound$'Recordings/20120831T070055.wav\r'' does not exist
. Так или иначе это форматирует имя файла очень странным способом. – Naftuli Kay 03.09.2012, 18:07$file
потребности, которые будут заключены в кавычки в команде printf. Кроме того, изменениеwhile read file
кому:while IFS= read -r file
считать целую строку. Или лучше, просто сделайте:file=$(adb shell find /blah | tail -1); adb pull "$(printf %q "$file")"
. – dubiousjim 03.10.2012, 17:19