Shell命令-install

本文详细介绍了Linux中的`install`命令,用于安装或升级软件和备份数据。该命令允许设置文件权限和所有者,并且常用于程序的makefile。其基本语法和选项包括`-d`创建目录、`-m`设定权限模式、`-o`和`-g`设定所有者和组等。通过示例展示了如何使用`install`进行文件复制和目录创建。了解这些选项有助于更有效地管理Linux系统中的文件和软件。

install

安装或升级软件或备份数据

补充说明

install命令 的作用是安装或升级软件或备份数据,它的使用权限是所有用户。install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点。但 是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。

语法

install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...

在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在 的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也 是必须的。

选项

--backup[=CONTROL]:为每个已存在的目的地文件进行备份。
-b:类似 --backup,但不接受任何参数。
-c:(此选项不作处理)。
-d,--directory:所有参数都作为目录处理,而且会创建指定目录的所有主目录。
-D:创建<目的地>前的所有主目录,然后将<来源>复制至 <目的地>;在第一种使用格式中有用。
-g,--group=组:自行设定所属组,而不是进程目前的所属组。
-m,--mode=模式:自行设定权限模式 (像chmod),而不是rwxr-xr-x。
-o,--owner=所有者:自行设定所有者 (只适用于超级用户)。
-p,--preserve-timestamps:以<来源>文件的访问/修改时间作为相应的目的地文件的时间属性。
-s,--strip:用strip命令删除symbol table,只适用于第一及第二种使用格式。
-S,--suffix=后缀:自行指定备份文件的<后缀>。
-v,--verbose:处理每个文件/目录时印出名称。
--help:显示此帮助信息并离开。
--version:显示版本信息并离开。

实例

install -d [option] DIRECTORY [DIRECTORY...]

支持多个,类似mkdir -p支持递归。例如:install -d a/b/c e/f结果和mkdir -p a/b/c e/f一样。

install [option] SOURCE DEST

复制SOURCE文件(测试不能是目录)到DEST file(文件):

install a/e c
结果类似:
cp a/e c    #注意c必须是文件。

有用选项-D

install -D x a/b/c
效果类似:
mkdir -p a/b && cp x a/b/c
install [option] SOURCE [SOURCE...] DIRECTORY

复制多个SOURCE文件到目的目录:

install a/* d

其中d是目录。

<think>好的,用户想通过adb命令区分手机上已安装的full应用和instant应用。首先,我需要回忆一下adb的相关命令,特别是pm工具的使用。根据之前的引用内容,用户提到过pm list packages的用法,比如通过-f参数显示安装路径,或者-U显示UID。但用户现在需要的是区分安装类型,即full和instant应用。 记得在Android中,Instant Apps是一种无需安装即可使用的应用,它们的安装方式与传统应用不同。可能需要查找pm list packages的参数中是否有相关的选项。根据引用3中的内容,dumpsys package命令有详细的选项,比如--checkin或者具体的包信息。但用户的问题是关于pm list packages的参数,可能需要查看是否有类似--install-type的参数。 不过用户提到“替代--install-type参数的正确用法”,这说明可能在尝试使用--install-type时遇到了问题,比如参数不被支持或报错。需要确认Android版本是否支持该参数,或者是否存在其他替代方法。 查阅相关资料,发现从Android 8.0(API 26)开始,引入了Instant Apps,pm list packages支持--install-type参数,其取值包括full、instant等。例如,adb shell pm list packages --install-type instant可以列出所有instant应用。但不同设备或系统版本可能支持情况不同,如果用户遇到报错,可能是设备不支持该参数。 如果设备不支持--install-type,替代方法可能是通过dumpsys package命令来获取安装类型信息。比如,使用dumpsys package <package.name>来查看每个应用的详细信息,其中可能包含installType字段。但这样需要遍历所有应用,逐个检查,比较麻烦。 另外,用户提供的引用中没有直接提到--install-type参数,但引用3中的dumpsys package命令可能有更详细的信息。例如,使用adb shell dumpsys package packages | grep installType来筛选出安装类型。或者结合其他参数过滤输出。 总结可能的解决方案:首先尝试使用--install-type参数,确认设备是否支持;若报错,则使用dumpsys package命令提取相关信息,通过grep或findstr过滤installType字段。此外,检查adb版本和设备的Android版本是否支持所需参数,并确保命令格式正确,例如参数的位置和拼写是否正确。</think>要区分full安装和instant安装的APP,可通过以下两种方法实现: ### 方法一:直接使用`--install-type`参数(Android 8.0+) 在支持该参数的设备上执行: ```bash adb shell pm list packages --install-type full # 列出所有完整安装应用 adb shell pm list packages --install-type instant # 列出所有Instant应用 ``` 若报错**Unknown option: --install-type**,说明设备系统版本或厂商定制ROM不支持此参数[^1]。 --- ### 方法二:通过`dumpsys package`筛选(通用方案) 1. 获取所有应用包名及安装类型 ```bash adb shell dumpsys package packages | grep -E "Package \[|installType=" ``` 输出示例: ``` Package [com.example.fullapp] installType=full Package [com.example.instantapp] installType=instant ``` 2. 仅提取Instant应用包名 ```bash adb shell dumpsys package packages | grep "installType=instant" -A 1 | grep "Package \[" | cut -d'[' -f2 | cut -d']' -f1 ``` --- ### 常见报错解决方案 1. **参数位置错误** ✅ 正确格式:`pm list packages --install-type <type>` ❌ 错误格式:`pm --install-type <type> list packages` 2. **Android版本兼容性** `--install-type`仅适用于Android 8.0及以上原生系统,部分国产ROM需通过`dumpsys`方案实现[^3] 3. **Shell环境限制** 部分设备需进入`adb shell`后分步执行: ```bash adb shell pm list packages --install-type instant ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值