读过这一页,我决定尝试一下AFT,所以我安装了它sudo pacman -S android-file-transfer
,通过USB将设备(OnePlus 3T)连接到电脑,将其设置为“传输文件模式”,然后打开AFT。到目前为止一切顺利,我看到了设备内的所有文件夹,我可以选择文件并下载它们。我没有尝试过上传,但我认为一切都好。
只是我更喜欢在终端中浏览设备,这样我就可以利用正则表达式将内容从设备移出/移至设备。
我发现了以下内容
$ ll /dev/disk/by-id
...
usb-OnePlus_Device_Driver_5abf662b-0:0 -> ../../sr0
...
但当我尝试时
$ mkdir mount_here
$ sudo mount /dev/sr0 mount_here
我只看到这个
$ ll mount_here
total 18466
dr-xr-xr-x 1 root root 2048 Sep 7 2016 ./
drwx------ 1 enrico enrico 912 Jun 17 15:34 ../
-r-xr-xr-x 1 root root 6538856 Mar 3 2015 'AndroidFileTransfer(OSX).dmg'*
-r-xr-xr-x 1 root root 12320875 Sep 5 2016 OnePlus_USB_Drivers_Setup.exe*
-r-xr-xr-x 1 root root 45056 Jun 3 2015 OnePlus_setup.exe*
-r-xr-xr-x 1 root root 794 Jun 30 2015 adb_config_Linux_OSX.sh*
-r-xr-xr-x 1 root root 97 Jun 3 2015 autorun.inf*
答案1
用于adb
在 CLI 中连接到您的设备。
先决条件
Settings > Developer options > USB Debugging
在您的手机上启用。
安装驱动程序。
$ cd mount_here
$ ./adb_config_Linux_OSX.sh
用法
检查 adb 是否找到您的设备:
$ adb devices
List of devices attached
bada5535 device
现在您可以使用以下方式浏览您的设备:
$ adb shell
OnePlus7TPro:/ $ cd storage/self/primary
OnePlus7TPro:/storage/self/primary $ ls
Alarms Android DCIM Documents Download Movies Music Notifications Pictures Podcasts Ringtones
移动文件:
$ adb pull <path>
$ adb push <source-path> <target-path>
故障排除
如果您看到此消息:
$ adb devices
List of devices attached
bada5535 no permissions; see [http://developer.android.com/tools/device.html]
尝试以 root 身份启动 adb 服务器:
$ adb kill-server
$ sudo adb start-server
答案2
如果您的要求是
在终端中浏览设备,以便我可以利用正则表达式将内容从设备移入/移至设备。
在 arch 上,我发现 AUR 中的 smple-mptfs (https://aur.archlinux.org/packages/simple-mtpfs/)确实有效。这提供了一个命令 simple-mtpfs 及其手册页。如果读起来太多了,这里有一个由用户 teckk 在 arch wiki 的新手角发布的不言自明的脚本(https://bbs.archlinux.org/viewtopic.php?pid=1729381#p1729381)
#! /usr/bin/env bash
#Script for simple-mtpfs
PS3=$'\nSelect an option.: '
#mount directory
dir="$HOME/phone"
while :; do
clear
options="Quit List_Device Mount Umount"
select opt in $options; do
case $opt in
Quit) clear; exit
;;
List_Device) simple-mtpfs --list-devices
;;
Mount) simple-mtpfs "$dir" -o enable-move; echo "Mounted to "$dir""
;;
Umount) fusermount -u "$dir"; echo "Unmounted"
;;
esac
done
done
请注意,libmtp 是 simple-mtpfs 的先决条件,并且在运行脚本之前,上述脚本的挂载点(默认为 $HOME/phone)必须存在。
更详细地说明:这是我在终端中输入的完整命令集(从我用来存放 AUR 包的目录开始),从“无”到满足上述要求:
sudo pacman -S libtmtp
git clone https://aur.archlinux.org/simple-mtpfs.git
cd simple-mtpfs
makepkg -si
#when prompted to confirm install of package simple-mtpfs, type "Y"
#create script droidfile with above text and make it executable
#to mount the phone at $HOME/phone
mkdir $HOME/phone
( echo 3 ; echo 1) | droidfile
此时,我可以使用 ls 等 coreutils 以及 $HOME/phone 上的任何文件管理器。请注意,如果没有 simple-mtpfs 的“enable-move”选项,您将无法使用 mv。如果您确实启用它,速度可能会非常慢。
卸载,只需
(echo 4; echo 1) | droidfile