“chmod + x ”做什么以及如何使用它?

我想写一个“批处理文件”(shell脚本)的Ubuntu模拟。 但我不知道如何使用chmod +x filename命令来使脚本运行。 我也不知道在哪里使用它。

在终端窗口中键入man chmodCtrl + Alt + T ),您将获得以下输出:


名称: chmod – 更改文件模式位

概要

 chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 

描述

 This manual page documents the GNU version of chmod. chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number repre‐ senting the bit pattern for the new mode bits. The format of a symbolic mode is [ugoa...][[+-=][perms...]...], where perms is either zero or more letters from the set rwxXst, or a single letter from the set ugo. Multiple symbolic modes can be given, sepa‐ rated by commas. A combination of the letters ugoa controls which users' access to the file will be changed: the user who owns it (u), other users in the file's group (g), other users not in the file's group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected. The operator + causes the selected file mode bits to be added to the existing file mode bits of each file; - causes them to be removed; and = causes them to be added and causes unmentioned bits to be removed except that a directory's unmentioned set user and group ID bits are not affected. The letters rwxXst select file mode bits for the affected users: read (r), write (w), execute (or search for directories) (x), execute/search only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), restricted dele‐ tion flag or sticky bit (t). Instead of one or more of these letters, you can specify exactly one of the letters ugo: the permissions granted to the user who owns the file (u), the permissions granted to other users who are members of the file's group (g), and the permissions granted to users that are in neither of the two preceding categories (o). A numeric mode is from one to four octal digits (0-7), derived by adding up the bits with values 4, 2, and 1. Omitted digits are assumed to be leading zeros. The first digit selects the set user ID (4) and set group ID (2) and restricted deletion or sticky (1) attributes. The sec‐ ond digit selects permissions for the user who owns the file: read (4), write (2), and execute (1); the third selects permissions for other users in the file's group, with the same values; and the fourth for other users not in the file's group, with the same values. chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions. This is not a problem since the permissions of symbolic links are never used. However, for each sym‐ bolic link listed on the command line, chmod changes the permissions of the pointed-to file. In contrast, chmod ignores symbolic links encoun‐ tered during recursive directory traversals. 

SETUID和SETGID BITS

 chmod clears the set-group-ID bit of a regular file if the file's group ID does not match the user's effective group ID or one of the user's supplementary group IDs, unless the user has appropriate privileges. Additional restrictions may cause the set-user-ID and set-group-ID bits of MODE or RFILE to be ignored. This behavior depends on the policy and functionality of the underlying chmod system call. When in doubt, check the underlying system behavior. 

OPTIONS

 Change the mode of each FILE to MODE. -c, --changes like verbose but report only when a change is made --no-preserve-root do not treat `/' specially (the default) --preserve-root fail to operate recursively on `/' -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'. 

简而言之

文件上的chmod +x (您的脚本)仅表示您将使其可执行。 右键单击您的脚本并选择属性 – > 权限 – > 允许执行文件作为程序 ,给您留下与终端中命令完全相同的结果。

如果要更改权限的文件位于系统目录中,则可能需要是root ,如下所示:(使用sudo命令时要小心)

 sudo chmod +x /usr/share/testfolder/aFile 

另外还不清楚,你想在这里存档什么。 请编辑您的问题,并提供有关实际问题的更多详细信息!

您还可以参考此问题,以获取更多信息: chmod u + x’与’chmod + x

首先,您的脚本必须声明要使用的解释器。 您可以在文件的第一行执行此操作。 如果它是一个shell脚本,它应该是#!/bin/sh#!/bin/bash

所以这是一个编写用户名的脚本:echo-whoami.sh

#!/bin/sh echo $(whoami)

要使其可执行,请使用chmod +x echo-whoami.sh 。 然后你可以使用./echo-whoami.sh运行它。

批处理文件shell脚本是两个术语,在Linux下实际上是相同的。 但是, 脚本这个术语的使用频率更高

最简单的shell脚本文件只包含在命令行中键入的命令(即Bash命令解释程序)。 从理论上讲,你甚至可以用你喜欢的任何语言替换解释器(并有一个解释器)。 更明确一点,建议你从第一行开始

#!/bin/sh (如果您不希望遗留系统具有最大的可移植性)

要么

#!/bin/bash (如果你想要一些额外的function,你今天可能不在乎)

在此行之后输入您的命令,每行一个。 除了这些问题的范围之外还有很多额外的结构,请参阅man bash或http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf (适用于初学者)或http:/ /www.tldp.org/LDP/abs/abs-guide.pdf (更高级的问题)。

要实际运行脚本,有两个要求:首先,解释器进程需要读取文件 ,然后检查它是否标记为可执行文件 。 为方便起见,能够写入脚本也很有用(因此您可以进行更改或修复)。

进一步假设您希望团队成员和其他人也能够运行(并查看)您的脚本,但您不希望他们操纵它,组合

  • 执行所有权限( a+x+x ,作为默认值),
  • 读取所有权利( a+r+r ,再次作为默认值),
  • 只为你写权限( u=w

通常是您的文件权限的合理值。 您可以键入连接的单个操作,用逗号分隔。

虽然这种“动作语言”非常吸引人(注意+=运算符的不同,这会导致在更改它们之前根据权限设置产生不同的结果),但是输入它们很繁琐。

由于所有操作都会创建内部应用的位掩码,因此您也可以直接键入位掩码(请参阅man chmod了解详细信息)。

对于一个shellcript chmod 755, myscript.sh在至少95%的情况下最有意义。