如何使文件在Linux终端中可执行?
Linux 命令行新手,想知道如何使 bash 脚本或其他文件可执行?以下是具体操作方法。
POSIX 兼容文件系统(Ext4、Btrfs、XFS、JFS 等)中的每个文件都分配有“模式位”。
要使文件在 Linux 中可执行,需要启用可执行模式位。
要设置可执行模式位,请使用 chmod 命令,如下所示:
chmod u+x <file>
这样,您就可以从终端执行该文件:
./file
这就是我的快速总结。让我们更详细地看看事情。
使文件在 Linux 中可执行
有多种方法可以使文件在 Linux 中可执行。最常见的方法涉及以不同的方式使用 chmod 命令。
要检查是否可以执行文件,请在 ls
命令中使用 -l
标志。
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
在第一列中,-rw-r--r--
表示所有者可以读写,组中的用户只能读取,其他人只能读取该文件。
请注意权限符号中缺少 x
。这意味着 lhb.txt
不可执行。
我强烈建议您阅读有关 Linux 文件权限的内容并温习基础知识,以更好地理解这些命令。
方法 1:使文件对每个人都可执行
第一种方法,也是最直接的方法,是使用以下命令使文件可执行:
chmod +x <file>
x
标志用于设置或取消设置文件的可执行权限。在x
之前使用+
符号意味着我们要将其设置为可执行文件。
这将使文件对所有者、组和其他所有人可执行。系统上的任何人也都能够执行它。
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
正如您现在所看到的,每个人、所有者、组和其他人都设置了可执行的 x
位。这意味着现在每个人都可以执行该文件。
方法 2:使文件仅对特定用户或组可执行
如果您不想让每个人都能够执行文件,则应该在添加/删除文件权限之前指定类。
可用的课程有:
u
:所有者/用户的权限g
:组的权限o
:其他人的权限a
:所有人的权限
当您指定一个类时,语法与您在第一个方法中看到的语法非常相似。
chmod <class>+x <file>
这意味着,如果我想让文件以只有文件所有者才能执行而其他人无法执行的方式执行,那么我应该使用以下命令:
chmod u+x <file>
这是一个例子:
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod u+x lhb.txt
$ ls -l lhb.txt
-rwxr--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
同样,为了使其对拥有该文件的组中的每个人都可执行,我应该使用以下命令:
chmod g+x <file>
这是一个例子:
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod g+x lhb.txt
$ ls -l lhb.txt
-rw-r-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
当您指定 a
类时,几乎就像您没有指定任何类一样。我们来看一下。
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod +x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 644 lhb.txt #reset permissions
$ chmod a+x lhb.txt
$ ls -l lhb.txt
-rwxr-xr-x 1 pratham staff 0 Mar 10 20:49 lhb.txt
这些命令可能看起来不同,但它们具有相同的结果。
方法 3:使用八进制数
如果您遵循第一种方法,则只需通过执行 +x
来启用文件的可执行标志,使其任何人都可以执行它。
但是,有时您可能不希望每个人都执行一个文件,也许它应该需要一些权限。在这种情况下,您可以指定完整的权限集。
这通常是通过提供八进制值或符号值来启用文件权限来完成的。
这使您可以更精细地控制标志的设置方式。以下是通过 chmod 命令使用八进制值的语法:
chmod <octal> <file>
如果您不擅长数字,可以使用在线 chmod 计算器,它可以帮助您生成正确的八进制值,从而避免使用错误的值并弄乱文件权限。
比如说,我想让文件仅对所有者和组可执行,我需要首先知道其当前权限,然后使用 [chmod-calculator] 将可执行位添加到它的顶部。
让我们看看如何做到这一点。
$ ls -l lhb.txt
-rw-r--r-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
$ chmod 754 lhb.txt
$ ls -l lhb.txt
-rwxr-xr-- 1 pratham staff 0 Mar 10 20:49 lhb.txt
如您所见,只有所有者和组才能执行该文件。
结论
本文介绍如何在 Linux 系统中创建可执行文件。它主要关注使用 chmod 命令的不同方法。如果您想了解更多信息,我们有一些有关如何使用 chmod 命令的示例。