権限の記号表記を使用する
数値表記は簡潔ですが、記号表記は特に単一の権限を変更したい場合に、より直感的です。記号表記では、ユーザー、グループ、その他のユーザーを表す文字と、権限を追加または削除する演算子を使用します。
まず、いくつかの内容を持つ新しいスクリプトファイルを作成しましょう。
cd ~/project
echo '#!/bin/bash\necho "Hello, World"' > script.sh
このコマンドは 2 つのことを行います。
script.sh
という名前の新しいファイルを作成します。.sh
拡張子はシェルスクリプトに一般的に使用されます。シェルスクリプトは、一連のコマンドが順番に実行される実行可能ファイルです。
- このファイルに 2 行を書き込みます。
#!/bin/bash
(シバンと呼ばれます)は、これが bash スクリプトであることをシステムに伝えます。シバン行は、スクリプトを実行するために使用するインタープリターを指定します。この場合、/bin/bash
は Bash インタープリターのパスです。
echo "Hello, World"
は、スクリプトが実行されたときに「Hello, World」を出力するコマンドです。echo
コマンドは、その後に続くテキストを表示するだけです。
\n
は改行文字で、ファイル内のコマンドが別々の行になるようにします。
では、初期の権限を確認しましょう。
ls -l script.sh
次のような表示がされるはずです。
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
ご覧のように、最初はスクリプトは所有者とグループに読み取りと書き込みの権限があり、その他のユーザーには読み取り権限のみがあります。プログラムとして実行するには実行権限が必要ですが、まだ持っていません。
スクリプトを実行してみましょう。
./script.sh
スクリプトにまだ実行権限がないため、「Permission denied」(権限が拒否されました)というエラーが表示されるはずです。./
の部分は、シェルに現在のディレクトリにあるスクリプトを実行するよう指示します。
では、記号表記を使用して所有者に実行権限を追加しましょう。
chmod u+x script.sh
このコマンドでは、
u
はユーザー(所有者)を指します。他のオプションとしては、グループの場合は g
、その他のユーザーの場合は o
、すべて(ユーザー、グループ、その他のユーザー)の場合は a
があります。
+x
は実行権限を追加します。+
記号は権限を追加し、-
記号は権限を削除します。
したがって、u+x
は「所有者に実行権限を追加する」ことを意味します。
変更を確認しましょう。
ls -l script.sh
これで次のように表示されるはずです。
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
所有者は現在 rwx
(読み取り、書き込み、実行)の権限を持っています。
では、スクリプトをもう一度実行してみましょう。
./script.sh
今度は、「Hello, World」という出力が表示されるはずです。
この例は、スクリプトに実行権限を追加する必要がある理由と、これらの権限を追加する前後の違いを明確に示しています。記号表記を使用すると、数値表記全体を再計算することなく、特定の権限を簡単に変更できます。