我找到了一种使用com.tengu.sharetoclipboard的方法。您使用 F-Droid 安装它,然后使用以下参数am
重新启动它:adb
adb shell am start-activity \
-a android.intent.action.SEND \
-e android.intent.extra.TEXT <sh-escaped-text> \
-t 'text/plain' \
com.tengu.sharetoclipboard
<sh-escaped-text>
是android剪贴板的新内容。请注意,此文本必须进行转义,以免sh
在远程端对其进行特殊解释。实际上,这意味着用单引号将其括起来,并将所有单引号替换为'\''
. 例如,如果本地 shell 是鱼,这将正常工作:
adb shell am start-activity \
-a android.intent.action.SEND \
-e android.intent.extra.TEXT '\'I\'\\\'\'m pretty sure $HOME is set.\'' \
-t 'text/plain' \
com.tengu.sharetoclipboard
fish 解析后,参数为'I'\''m pretty sure $HOME is set.'
. sh 解析后,参数为I'm pretty sure $HOME is set.
.
这是一个简化此过程的python脚本:
#!/usr/bin/env python
import sys
import os
def shsafe(s):
return "'" + s.replace("'", "'\\''") + "'"
def exec_adb(text):
os.execvp('adb', [
'adb', 'shell', 'am', 'start-activity',
'-a', 'android.intent.action.SEND',
'-e', 'android.intent.extra.TEXT', shsafe(text),
'-t', 'text/plain',
'com.tengu.sharetoclipboard',
])
if sys.stdin.isatty():
if len(sys.argv) >= 2:
exec_adb(' '.join(sys.argv[1:]))
else:
sys.stderr.write(
'''Send something to the android clipboard over ADB. Requires
com.tengu.sharetoclipboard.
acb <text>
<some command> | acb
acb <some_text_file.txt''')
exit(1)
else:
exec_adb(sys.stdin.read())