Linuxには7つのファイル形式があります。 (参照 -https://en.wikipedia.org/wiki/Unix_file_types)
- 一般ファイル
- 目次
- ブロック(バッファ)ファイル
- 文字(バッファされていない)ファイル
- パイプ(名前付きパイプ、先入れ先出し)ファイル
- ファイルまたはディレクトリへのシンボリックリンク
- ソケットファイル
(*シンボリックリンクタイプの場合、7種類すべて接続可能です。)
基本的な方法では、一般ファイルそしてファイルへのシンボリックリンクプログラムで入手して呼び出すことができます。
. regular_file_script.sh
regular_file_program
. symlink_to_regular_file_script.sh
symlink_to_regular_file_program
私が知る限り、目次そしてディレクトリへのシンボリックリンクソーススクリプトとして使用したり、プログラムとして呼び出すことはできません。
最近私は私が使用できることを発見しました。パイプラインファイルソーススクリプトとして。パイプファイルを作成し、ここにスクリプトを作成してから、他の端末からインポートできます。例は次のとおりです。
ターミナルAから:
$ mkfifo /tmp/pipe_script.sh ; echo 'echo i am a pipe_script' > /tmp/pipe_script.sh
ターミナルBから:
$ cat /tmp/test.sh
#!/bin/sh
echo sourcing a pipe script
. /tmp/pipe_script.sh
echo complete
$ /tmp/test.sh
sourcing a pipe script
i am a pipe_script
complete
しかし、私はパイプラインファイルプログラムで直接呼び出すことはできません。権限をに設定してもエラーが755
発生します。Permission denied
たとえば、
ターミナルAから:
$ mkfifo --mode 755 /tmp/pipe_program ; echo 'echo i am the pipe_program' > /tmp/pipe_program
ターミナルBから:
$ cat /tmp/test.sh
#!/bin/sh
# echo sourcing a pipe script
# . /tmp/pipe_script.sh
echo call a pipe program
/tmp/pipe_program
echo complete
$ /tmp/test.sh
call a pipe program
/tmp/test.sh: line 6: /tmp/pipe_program: Permission denied
complete
なぜ名前付きパイプファイルを取得できますが、プログラムで呼び出すことはできませんか?
全体として、この7つのタイプのうち、スクリプトで取得することができ、またはプログラムで呼び出すことができるLinuxファイルの種類は何ですか?
ベストアンサー1
source
BASHが読める限り、何でも編集できます。デバイスファイルも編集できます(権限が正しい場合)。
「プログラム」はまったく異なる質問であり、通常のファイル以外にその名前を聞いたことがありません。
アプリケーションを実行するためにシンボリックリンクはほとんど使用されません。一般的なLinuxシステムには多数のアプリケーションへのハードリンクが含まれていますが、シンボリックリンクは通常共有ライブラリ用に予約されています。ハードリンクは通常のファイルと変わらず、権限を含むすべてを共有します。