在 Adb 中格式化文本 Shell
Formatting text in Adb Shell
我在 windows 上做了一些 adb shell
的事情,但卡在了某个点上。这就是我在做什么..
我正在 phone 上打印所有已安装的应用程序并获取它们的确切路径。
zeroltetmo:/ # pm list packages -f
package:/system/app/FilterProvider/FilterProvider.apk=com.samsung.android.provider.filterprovider
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/app/YouTube/Youtube.apk=com.google.android.youtube
package:/system/app/vsimservice/vsimservice.apk=com.sec.vsimservice
package:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper
package:/system/framework/framework-res.apk=android
package:/system/framework/samsung-framework-res/samsung-framework-res.apk=com.samsung.android.framework.res
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp
package:/data/app/ru.meefik.busybox-2/base.apk=ru.meefik.busybox
package:/data/app/com.google.android.play.games-1/base.apk=com.google.android.play.games
但是,
我希望它只打印 system/app
目录,但只打印 folder
名称而不是完整路径。我正在做的是将它传送到 grep
并使用这种模式来获得结果。
zeroltetmo:/ # pm list packages -f | grep -o "system/app.*\/"
system/app/FilterProvider/
system/app/RootPA/
system/app/YouTube/
system/app/ClipboardSaveService/
system/app/TetheringAutomation/
system/app/GoogleExtShared/
system/app/WfdBroker/
system/app/vsimservice/
system/app/USBSettings/
system/app/EasyOneHand3/
但问题是这个 / 在文件夹名称的末尾,我坚持使用。
您可以像这样用 sed
过滤尾部斜线:
pm list packages -f | grep -o "system/app.*/" | sed 's,/$,,'
sed
命令的解释:
s
代表substitution
,
将命令名称与其参数分开 - 当我们想要替换 /
时,使用不同的 /
更容易
/$
- 要替换的字符串。在这种情况下,它表示行尾的斜杠
用于替换 /$
的字符串为空,因为我们要将其删除。
我在 windows 上做了一些 adb shell
的事情,但卡在了某个点上。这就是我在做什么..
我正在 phone 上打印所有已安装的应用程序并获取它们的确切路径。
zeroltetmo:/ # pm list packages -f
package:/system/app/FilterProvider/FilterProvider.apk=com.samsung.android.provider.filterprovider
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/app/YouTube/Youtube.apk=com.google.android.youtube
package:/system/app/vsimservice/vsimservice.apk=com.sec.vsimservice
package:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropper
package:/system/framework/framework-res.apk=android
package:/system/framework/samsung-framework-res/samsung-framework-res.apk=com.samsung.android.framework.res
package:/data/app/com.whatsapp-1/base.apk=com.whatsapp
package:/data/app/ru.meefik.busybox-2/base.apk=ru.meefik.busybox
package:/data/app/com.google.android.play.games-1/base.apk=com.google.android.play.games
但是,
我希望它只打印 system/app
目录,但只打印 folder
名称而不是完整路径。我正在做的是将它传送到 grep
并使用这种模式来获得结果。
zeroltetmo:/ # pm list packages -f | grep -o "system/app.*\/"
system/app/FilterProvider/
system/app/RootPA/
system/app/YouTube/
system/app/ClipboardSaveService/
system/app/TetheringAutomation/
system/app/GoogleExtShared/
system/app/WfdBroker/
system/app/vsimservice/
system/app/USBSettings/
system/app/EasyOneHand3/
但问题是这个 / 在文件夹名称的末尾,我坚持使用。
您可以像这样用 sed
过滤尾部斜线:
pm list packages -f | grep -o "system/app.*/" | sed 's,/$,,'
sed
命令的解释:
s
代表substitution
,
将命令名称与其参数分开 - 当我们想要替换 /
/
更容易
/$
- 要替换的字符串。在这种情况下,它表示行尾的斜杠
用于替换 /$
的字符串为空,因为我们要将其删除。