install 是适用于专业用户的 Linux 和 macOS 中灵活的文件复制命令。阅读本文以了解如何使用更智能的安装命令。
- 如何在 Linux 中复制和重命名文件
- 使用命令行界面在 Linux 中搜索文件和目录
- 使用 SCP 在 Linux 系统之间移动文件
等等,这不是安装软件的命令吗?
install命令是最容易导致对Linux命令误解的命令。它实际上并不安装任何软件。如果在 Ubuntu 发行版或其他基于 Debian 的发行版中从命令行安装软件包,请使用 apt-get 命令。在其他 Linux 发行版上,您可以使用 Linux 包管理工具,例如 Fedora 上的 dnf 或 openSUSE 上的 zypper。
那么安装命令是干什么用的?
简而言之,安装命令结合了来自cp(复制)、chown(更改所有者)、chmod(模式更改)、mkdir(创建目录)和strip(删除图标)的元素)。它允许您在单个操作中使用上述所有命令中的功能。
安装命令可以:
- 复制 cp 之类的文件。
- 选择是否覆盖现有文件。
- 如果 mkdir 命令不可用,则创建目标目录。
- 为文件分配用户权限,就像 chmod 命令一样。
- 将文件的所有权设置为 chown 命令。
- 从可执行文件中删除不必要的东西,就像 strip 命令一样。
虽然上面的功能都有,但是install命令没有太多选择。
什么时候使用安装命令?
安装命令虽然有用但并不总是使用但仅在某些情况下使用。它主要用于软件开发。假设您正在编写一个新实用程序并需要检查开发环境。为此,您需要将新的程序文件复制到测试目录中。
因为开发是一个重复的活动,你可以多次执行这一系列动作。 install 命令将为您执行所有这些任务。最后,当您的新实用程序准备好部署时,您可以使用 install 命令以正确的权限将其复制到其最终工作位置。
例如
例如,我们正在创建一个名为 ana 的新实用程序。它包括一个二进制可执行文件和数据库。经过测试,必须复制到/usr/local/bin,供Linux系统上的用户使用。您需要将本示例中的文件名、目录路径替换为您使用的文件名和文件夹。
在准备好广泛分发之前,将在名为 ~/test/ana 的文件夹中检查此实用程序。极客团队成员将拥有阅读和执行的权利。其他用户只有执行权。 install 命令使用数字表示来授予与 chmod 命令相同的权限。我们将确立以下权利:
- 所有者:读、写和执行。
- 小组:阅读和表演。
- 其他用户:仅执行。
如何使用安装命令
这里的工作目录是~/work.我们将编写、编译程序并创建一个名为 ana 的二进制文件和一个与 ana 一起工作的名为 Words.db 的数据库文件。
ls-l ana Words.db
编写的 ana 实用程序将在命令行中反转短语顺序。
这里我们用饼干这个词做实验,结果效果很好。现在我们将这两个文件复制到 ~/test/ana 目录下,看看这个新实用程序在开发环境之外是否可以正常工作。要复制,请使用以下命令:
install-D-v ana Words.db-t ~/test/ana
命令行使用的选项有:
- D :根据需要创建一个目录,包括父文件夹。
- v :在创建时列出每个文件夹,并在完成时列出每个文件。
- t:目标文件夹。
我们可以看到install命令创建~/test目录然后创建~/test/ana目录。文件复制到目标目录后会一一列出。
列出~/test/ana中的文件,确认复制正确。
ls-l </pre>
下一步是在~/test/ana目录下使用ana实用程序检查一下。
太好了,小工具按预期工作。但是,分配给组的权限不正确。在这里,极客团队成员拥有阅读权和执行权;其他成员只会被处决。
我们可以通过以下命令非常简单地解决这两个问题。注意,您需要 root 访问权限才能使用 sudo、-o、-g 选项和其他选项运行此命令。需要时输入密码。
sudo install-b-S.bak-o dave-g geek-m 751 ana Words.db-t ~/test/ana
- -B 选项(备份)在文件被覆盖之前创建备份。
- -S(后缀)选项定义备份文件的后缀。如果没有提供后缀,将使用~(波浪号)选项。此处需要使用.bak 后缀进行安装。
- 我们将使用-o(所有者)选项将文件的所有者设置为 dave。
- -g(组)选项需要组名,即文件的所有者组。这里使用的组称为 geek。
- -m(模式)选项使用标准 chmod 数字语法设置文件模式。
我们不再需要使用-D 选项(创建目录),因为我们已经有了测试目录并且也省略了-v 选项。使用以下命令列出 ~/test/ana 目录下的文件:
ls-l </pre>
这确认我们的所有要求都已得到满足。
- 文件已复制到测试文件夹。
- 权限设置正确。
- dave 是文件的所有者。
- geek 组是两个文件的所有者组。
- 已从名为 ana.bak 和 Words.db.bak 的每个文件创建备份。
如果您对实用程序进行了一些更改并重新编译,应将更改的文件从 ~/work 目录复制到 ~/test/ana 目录中。我们可以使用-c 选项(比较)来做到这一点。如果源文件和目标文件相同,则无法复制源文件。
sudo install-C-b-S.bak-o dave-g geek-m 751 ana Words.db-t ~/test/ana
列出目标目录中的文件告诉我们ana文件大小发生了变化,比ana.bak文件大,时间戳也发生了变化。这些更改是由于此处复制的文件的新版本所致。
ls-l </pre>
Words.db 文件上的文件大小和时间戳不会改变,因为它没有被复制。在一个有很多-c o 的项目上ption 文件可以节省大量时间,并且不会弄乱硬盘,因为它只复制更改的文件。
我们再次检查 ana 实用程序。是时候使用 install 命令将文件复制到/usr/local/bin 以便这台 Linux 计算机上的所有用户都可以使用新的实用程序了。由于我们有/usr/local/bin目录,我们将不再创建这个目录。我们可以在最后一条命令中使用修改后的版本。
我们将目标目录改为/usr/local/bin,删除-c选项,因为它没有复制目标目录中的文件进行比较。同样,我们不需要使用-b(备份)和-s(后缀)选项,因为不需要备份。
sudo install-o dave-g geek-m 751 ana Words.db-t/usr/local/bin
使用如下命令列出/usr/local/bin中的文件:
ls-l </pre>
请通过将此目录更改为主目录来执行最终测试,看看我们是否可以从这里调用新实用程序。
请注意,我们不需要以 ./ 开头的 ana 命令,这意味着它是从/usr/local/bin 目录运行的。 p>
如前所述,安装命令可以去除二进制文件中的符号表等不必要的东西,以减小文件大小。让我们这样做。请注意,以下命令不包含 Words.db 文件,因为 Words.db 是一个数据库文件,它不是可执行的二进制文件。要复制和缩小文件大小,我们使用以下命令,将-s 选项(缩小)与小写 s、选项-b(备份)和-S(后缀)与文本 S 大写。
sudo install-s-b-S.bak-o dave-g geek-m 751 ana-t/usr/local/bin
列出/usr/local/bin中的文件可以让我们比较ana文件的大小和之前的备份版本。 Ana 文件已减小到以前大小的近 60%。
ls-l/usr/local/bin
安装命令有很多作用,可以帮助你减少很多重复性的工作。
祝大家成功!
评论