Xây dựng câu trả lời của @ Oli, điều này cũng sẽ cho phép (các) lệnh chạy song song, sử dụng xargs
. Chỉ cần thêm video này vào tập tin .bashrc
của bạn:
function adball()
{
adb devices | egrep '\t(device|emulator)' | cut -f 1 | xargs -t -J% -n1 -P5 \
adb -s % "[email protected]"
}
và áp dụng nó bằng cách mở một terminal vỏ mới, . ~/.bashrc
, hoặc source ~/.bashrc
.
- Nếu bạn chỉ muốn chạy trên thiết bị (hoặc chỉ trên trình mô phỏng), bạn có thể thay đổi
(device|emulator)
grep bằng cách xóa một trong những bạn không muốn. Lệnh này như được viết ở trên sẽ chạy trên tất cả các thiết bị và trình mô phỏng đi kèm.
- đối số
-J%
chỉ định rằng bạn muốn xargs thay thế sự xuất hiện đầu tiên của %
trong tiện ích với giá trị từ phía bên trái của đường ống (stdin).
LƯU Ý: điều này là dành cho BSD (Darwin/Mac OS X) xargs
. Đối với GNU/Linux xargs
, tùy chọn là -I%
.
-t
sẽ khiến xargs in lệnh mà lệnh sắp chạy ngay trước khi chạy.
-n1
nghĩa xargs chỉ nên sử dụng tối đa 1
lập luận trong mỗi lời gọi của lệnh (như trái ngược với một số tiện ích mà có thể mất nhiều đối số, như rm
ví dụ).
-P5
cho phép tối đa 5
quy trình song song để chạy đồng thời. Thay vào đó, nếu bạn muốn chạy các lệnh một cách tuần tự, chỉ cần xóa toàn bộ đối số -P5
. Điều này cũng cho phép bạn có hai biến thể của lệnh (ví dụ: adball
và adbseq
) - một biến chạy song song, lệnh khác theo tuần tự.
Để chứng minh rằng nó là song song, bạn có thể chạy một lệnh shell trong đó bao gồm một giấc ngủ ở trong đó, ví dụ:
$ adball shell "getprop ro.serialno ; date ; sleep 1 ; date ; getprop ro.serialno"
Bạn có thể sử dụng để chạy bất kỳ lệnh adb
bạn muốn (có, thậm chí adball logcat
sẽ hoạt động! nhưng có vẻ hơi lạ vì cả hai bản ghi sẽ được truyền trực tiếp tới bảng điều khiển của bạn song song, vì vậy bạn sẽ không thể phân biệt thiết bị nào có dòng nhật ký cụ thể đến).
Lợi ích của phương pháp này so với phương pháp &
@ dtmilano là rằng xargs
sẽ tiếp tục chặn vỏ miễn là ít nhất một trong các quá trình song song vẫn chạy: có nghĩa là bạn có thể thoát ra khỏi tất cả các lệnh của chỉ cần sử dụng ^C
, giống như bạn đã từng làm. Với phương pháp tiếp cận của dtmilano, nếu bạn chạy adb+ logcat
, thì cả hai quy trình logcat sẽ được tạo nền và do đó bạn sẽ phải tự tay giết quy trình logcat bằng cách sử dụng ps
và kill
hoặc pkill
. Sử dụng xarg làm cho nó trông và cảm thấy giống như một dòng lệnh chặn thường xuyên, và nếu bạn chỉ có một thiết bị, thì nó sẽ hoạt động chính xác như adb
.
Hoạt động tuyệt vời! Cảm ơn! Điều duy nhất còn thiếu bây giờ là làm điều đó song song :) – Heinrisch
'adb -s $ device $ @ &' sẽ làm song song –
@Oli Cảm ơn rất nhiều ... đã tiết kiệm thời gian của tôi (y) –