struct stat { /* デバイス*/ ino_t st_ino; /* ノード*/ nlink_t st_nlink; /* ユーザー ID */ gid_t st_gid;グループID */ dev_t st_rdev; /* デバイスタイプ */ off_t st_off; /* ファイル内のバイト数*/ unsigned long st_blksize; /* ブロック サイズ*/ unsigned long st_blocks; /* 最終アクセス時刻*/ time_t st_mtime; / time_t st_ctime; /* 最終変更時刻 (属性を参照) */};特定のファイルの属性を表示する必要がある場合は、これらの属性について 1 つずつ学習してみましょう。
ステータスコマンドを発行するだけで、上記の構造に従って情報がリストされます。加えて、
lsこのコマンドは、次のような特定のパラメータを指定した後に、ファイルの関連属性を表示することもできます。
-lパラメータ。
ファイルタイプは上記に対応します
st_modeファイルの種類には、通常のファイル、シンボリック リンク (ハード リンク、ソフト リンク)、パイプ ファイル、デバイス ファイル (シンボリック デバイス、ブロック デバイス)、ソケット ファイルなどがあります。ファイルの種類が異なれば、機能や役割も異なります。
$ ls -ltotal 12drwxr-xr-x 2 ルート root 4096 2007-12-07 20:08 directory_fileprw-r--r-- 1 root root 0 2007-12-07 20:18 fifo_pipebrw-r--r-- 1ルート ルート 3、1 2007-12-07 21:44 hda1_block_dev_filecrw-r--r-- 1 ルート root 1、3 2007-12-07 21:43 null_char_dev_file-rw-r--r-- 2 ルート root 506 2007-12-07 21:55 Regular_file-rw -r--r-- 2 ルート ルート 506 2007-12-07 21:55 Regular_file_hard_linklrwxrwxrwx 1 root root 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ stat directory_file/ ファイル: `directory_file/' サイズ: 4096 ブロック: 8 IO ブロック: 4096 directoryDevice: 301h/769d Inode: 521521 Links: 2Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2007-12-07 20:08:18.000000000 +0800Modify: 2007- 2007 年 12 月20:08:18.000000000 +0800Change: 2007-12-07 20:08:18.000000000 +0800$ stat null_char_dev_file ファイル: `null_char_dev_file' サイズ: 0 ブロック: 0 IO ブロック: 4096 文字の特殊ファイルデバイス: 301h/769d i ノード: 521240 リンク: 1 デバイス タイプ: 1,3アクセス: (0644/crw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)アクセス: 2007-12-07 21 :43:38.000000000 +0800変更: 2007-12-07 21:43:38.000000000 +0800変更: 2007-12-07 21:43:38.000000000 +0800
説明: 合格しました
lsコマンド結果の各行の最初の文字が互いに異なっていることがわかります。これは、異なるファイルのタイプを反映しているだけです。
dディレクトリを表し、
-通常のファイル (またはハードリンク) を表します。
私シンボリックリンクを表し、
pパイプライン ファイルを表します。
bそして
cそれぞれブロックデバイスとキャラクターデバイスを表します(さらに
s急行
ソケット書類)。存在する
ステータスコマンドの実行結果では、上記の操作からわかるように、2 行目の最後に次の記述があります。
ディレクトリファイルはディレクトリです、
ステータスコマンドの結果で使用されます
ディレクトリを表し、そして
null_char_dev_file使用します
キャラクタースペシャルファイル説明します。
通常は、ディレクトリ、通常のファイル、およびシンボリック リンクのみが使用され、他の種類のファイルが使用されることはほとんどありません。ただし、組み込み開発やプロセス通信などを行う場合には、これらのファイルにも独自の用途があります。 (先入れ先出し)。以下は、それらの違いを反映するための簡単な操作です (具体的な原理については、次のセクション「シェル プログラミング パラダイム ファイル システム」で紹介します。興味がある場合は、事前にオンラインでデバイス ファイルの役割を確認することもできます) 、ブロック デバイスとキャラクター デバイスの違い、関連するデバイス ドライバーをドライバーに記述する方法など)。
通常のファイルの場合: 文字のコレクションであるため、読み取り、書き込みなどが可能です。
$ echo hello, world > Regular_file$ cat Regular_filehello, world
ディレクトリ内に新しいファイルを作成できるため、ディレクトリはフォルダーとも呼ばれます。ディレクトリ ファイルの構造は、実際にはその下に各ファイルの名前が格納されます。
$ cd ディレクトリファイル$ touch ファイル1 ファイル2 ファイル3
名前付きパイプの場合、この操作はさらに興味深いものになります。読み取りたい場合は、コンテンツが存在しない限りブロックされます。書き込みたい場合は、誰かが読み取りに来ない限りブロックされます。プロセス通信でよく使用されます。 2つの端子を開くことができます
ターミナル1そして
ターミナル2、試してみてください:
Terminal1$ cat fifo_pipe #最初はここでブロックされ、次の書き込みアクションが発生するまでテスト文字列は出力されません Terminal2$ echo test > fifo_pipe
ブロックデバイス、キャラクタデバイス、デバイスファイルについては、
/dev/hda1そして
/dev/null、USB フラッシュ ドライブを使用したことがある場合、または簡単なスクリプトを作成したことがある場合は、以前にこの方法を使用したことがあるはずです:-)
$ mount hda1_block_dev_file /mnt #ハードディスクの最初のパーティションを /mnt にマウントします (マウントの原理については次のセクションで説明します) $ echo somefewfef > /dev/null #/dev/null はブラックホールのようなものです。が欠けています 中に入るとすべてが消えます
最後の 2 つのファイルは、
通常のファイルファイルのハードリンクとソフトリンク、読み書きする場合は内容は同じですが、削除すると無関係になります。ハードリンクとソフトリンクの違いは何ですか?前者はオリジナルのファイルと言えますが、後者はそのようなファイルを持っているだけです。
i ノード、ただし実際のストレージスペースがないため、使用することをお勧めします
ステータスコマンドを使用して、それらの違いを確認します。
ブロック、
i ノード同等なので、使用することも検討できます
差分サイズを比較してください。
$ ls Regular_file*ls Regular_file* -l-rw-r--r-- 2 ルート root 204800 2007-12-07 22:30 Regular_file-rw-r--r-- 2 ルート root 204800 2007-12-07 22 :30 Regular_file_hard_linklrwxrwxrwx 1 ルート ルート 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_file$ rm Regular_file # 元のファイルを削除 $ cat Regular_file_hard_link # ハードリンクはまだ存在し、その中にコンテンツがまだあります fefe$ cat Regular_file_soft_linkcat: Regular_file_soft_link: そのようなファイルまたはディレクトリはありません
ソフト リンク ファイル自体は存在しますが、コンテンツ自体は保存されていないため、何も読み取ることができません。これがソフト リンクとハード リンクの違いです。
ハード リンクはファイル システムを越えることができませんが、ソフト リンクは可能であることに注意してください。さらに、ディレクトリへのハード リンクを作成することはできません。
ファイルの種類は Linux のファイル システム レベルから上記の種類に分類されますが、一般的なテキスト ファイル、実行ファイルなど、通常のファイルも (ファイル内容の「データ構造」に応じて) 分割できます。
エルフ書類、
オッド書類、
jpg画像フォーマット、
スワップパーティションファイル、
エルフファイルの動作原理に興味がある場合は、参考文献を読むことをお勧めします。
エルフファイルの関連部分。この部分は組み込み Linux エンジニアにとって重要です。
さまざまな種類の通常のファイルには独自の操作ツールがありますが、これらのツールについては最初に説明し、詳細については後で説明します。
OD: ファイルの内容を 8 進数またはその他の形式で「エクスポート」します。
文字列:ファイル内の文字(印刷可能な文字)を読み取ります。
gcc、
gdb、
リーデルフ,objdump
待って:エルフ
ファイル分析および処理ツール (gcc
コンパイラ、gdb
デバッガ、リーデルフ
ELF ファイルを分析し、objdump`逆コンパイルツール)
非常に重要なコマンドをもう 1 つ追加します。
ファイル, このコマンドは、さまざまな種類のファイルのプロパティを表示するために使用されます。そして
ステータスコマンドと比較して、通常のファイルをさらに識別できます。
ステータス表示されるコマンド
通常のファイル。なぜなら
通常のファイルさまざまな異なる構造が存在する可能性があるため、オペレーティング システムのサポートにより異なる解釈が行われ、異なるアクションが実行されます。 Linux では、ユーザーがファイルの種類を簡単に識別できるように特定のサフィックスがファイルに追加されますが、Linux オペレーティング システムは、ファイルのサフィックスではなくファイル ヘッダーに基づいてさまざまな種類のファイルを識別するため、ファイルの解釈がさらに困難になります。対応するファイルにエラーが発生しやすい。以下は簡単な紹介です
ファイルコマンドの使用法。
$ file ././: directory$ file /etc/profile/etc/profile: ASCII 英語テキスト$ file /lib/libc-2.5.so/lib/libc-2.5.so: ELF 32 ビット LSB 共有オブジェクト、Intel 80386、バージョン 1 (SYSV)、ストリップされていない$ ファイル /bin/test/bin/test: ELF 32 ビット LSB 実行可能ファイル、Intel 80386、バージョン1 (SYSV)、動的にリンク (共有ライブラリを使用)、ストリップ$ ファイル /dev/hda/dev/hda: ブロック特殊 (3/0)$ ファイル /dev/console/dev/console: 文字特殊 (5/1) $ cp /etc/profile .$ tar zcf profile.tar.gz profile$ file profile.tar.gzprofile.tar.gz: Unix からの gzip 圧縮データ、最終更新日: 1 月 4 日火曜日18:53:53 2000$ mkfifo fifo_test$ ファイル fifo_testfifo_test: fifo (名前付きパイプ)
使い方をもっと見る
ファイルコマンドマニュアルについて
ファイルコマンドの実装原理については、以下を参照してください。
魔法マニュアル(見てください)
/etc/ファイル/マジックファイル、ファイルとは何かを理解する
マジックナンバー待って)。
マルチユーザー システムである Linux は、複数のユーザーが同じシステムを使用するのに非常に便利です。たとえば、システム上のファイルについては、所有者によって異なるユーザーを区別して、異なるファイルに操作権限を割り当てます。ユーザーは複数のグループに所属できるため、管理を容易にするために、ファイル所有者にはファイルが属するユーザーとファイルが属するユーザー グループが含まれます。まず、Linux でのユーザーとグループの管理について簡単に紹介します。
Linux には、ユーザーの作成など、ユーザーとグループを管理するための一連のコマンドが用意されています。
ユーザー追加そして
グループ追加、ユーザーを削除するために使用されます
ユーザーデルそして
グループデル、加えて、
パスワードこのコマンドは、ユーザーのパスワードを変更するために使用されます。もちろん、Linux も 2 つの対応する構成を提供します。
/etc/パスワードそして
/etc/グループさらに、一部のシステムでは、構成ファイルにパスワードを個別に追加することもあります。
/etc/shadow真ん中。詳細な使用方法については、以下の情報を参照してください。ここでは、ファイルとユーザーの関係についてのみ紹介します。
$ chown ユーザー名:グループ名 ファイル名
ディレクトリ内のすべてのファイルの所有者を再帰的に変更したい場合は、次のように追加できます。
-Rオプション。
このセクションの冒頭に挙げたファイル構造から、ユーザー名のみが存在することがわかります。
IDそしてグループ
ID情報ですが、
ls -l結果にはユーザー名とグループ名の情報が表示されます。まずは見てみましょう
-n結果:
$ ls -n 正規ファイル-rw-r--r-- 1 0 0 115 2007-12-07 23:45 正規ファイル$ ls -l 正規ファイル-rw-r--r-- 1 ルート ルート 115 2007-12-07 23:45 通常ファイル
ご覧のように、
ls -n表示されるユーザー
IDそしてグループ
ID、そして
ls -l彼らの名前が表示されます。前述の 2 つの構成ファイルを思い出してください。
/etc/パスワードそして
/etc/グループファイル?それぞれユーザーを保存します
IDおよびユーザー名、グループ
IDグループ名との対応関係があるので考えやすい
ls -l実装時にコマンドがファイル構造をどのように通過するか
IDInformation は、対応する名前情報を検索します。正しくありたいなら
ls -lコマンドの実装をより深く理解するには、次を使用できます。
跡トレースして、両方の構成ファイルを読み取るかどうかを確認します。
$ strace -f -o strace.log ls -l Regular_file$ cat strace.log | egrep passwd|group|shadow2989 open(/etc/passwd, O_RDONLY) = 32989 open(/etc/group, O_RDONLY) = 3
例証します:
跡システムコールとシグナルをトレースするために使用できます。として
gdb他の強力なツールと同様に、システムに基づいています
ptraceシステムコールの実装。
実際、所有者と権限を別々に導入するのは良くありません。この 2 つの組み合わせによってのみマルチユーザー システムが可能になるからです。そうしないと、特定のファイルに対する異なるユーザーの操作を分離することが不可能になるため、ファイル操作は権限については以下で紹介します。
から
ls -lコマンド結果の最初の列の最後の 9 文字に、次のような情報が表示されます。
rwxr-xr-x、ファイル構造に対応します
st_mode一部(
st_modeファイル タイプ情報とファイル許可情報の 2 つの部分が含まれます)。このタイプの情報は 3 つの部分に分けることができます。
wx、
rx、
rx、ファイルが属するファイルに対するユーザー、グループ、およびその他のグループの操作権限にそれぞれ対応する。
wxそれらのいずれかが、読み取り可能、書き込み可能、および実行可能であることを意味します。
-そのような許可がないことを示します。同様に、次のように 8 進数で表すことができます。
rwxr-xr-xこれは 2 進数の 111101101 として表現でき、対応する 8 進数は 755 です。このため、ファイルの操作権限を変更する方法は数多くありますが、それらはすべて次の方法で実行できます。
chmod変更するコマンド。
たとえば、次のように置きます
通常のファイルすべてのユーザーが読み取り、書き込み、実行できるようにファイルのアクセス許可を変更します。つまり、
rwxrwxrwx、111111111 と表すこともでき、8 進数に変換すると 777 になります。この権限は 2 つの方法で変更できます。
$ chmod a+rwx 正規ファイル
または
$ chmod 777 正規ファイル
例証します:
ある使用するユーザーを指します。ユーザーに読み取り、書き込み、および実行権限のみを付与したい場合は、次のように指定できます。
あると置き換えます
あなた;そして
+逆に、特定の権限を削除したい場合は、権限を追加するだけです。
-、そして
wx読み取り可能、書き込み可能、実行可能に対応します。使い方をもっと見る
chmodコマンドヘルプ。
実際、これらの権限に加えて、セキュリティに関連する権限が他に 2 つあります。
setuid/setgid読み取り専用制御など。
ファイル(プログラムまたはコマンド)が設定されている場合
setuid/setgid権限を付与すると、ユーザーは次のことができるようになります
根したがって、これによりセキュリティ上のリスクが生じる可能性があります。ファイルの読み取り専用アクセス許可が設定されている場合、ユーザーはファイルに対して読み取り可能なアクセス許可のみを持つことになり、次のような状況が回避されます。
rm -rfこの「忌まわしい」作戦はある種の祝福をもたらす。
デフォルトでは、システムは一般ユーザーによる実行を許可しません。
パスワードコマンド、パス
setuid/setgid、一般ユーザーに実行権限を与えることができます。
$ ls -l /usr/bin/passwd-rwx--x--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ su #root ユーザーに切り替えて「Sticky bit」を追加します$ chmod +s /usr/bin/passwd$ ls -l /usr/bin/passwd-rws--s--x 1 root root 36092 2007-06-19 14:59 /usr/bin/passwd$ exit$ passwd #一般ユーザーはこのコマンドを実行することでパスワードを変更できます。
例証します:
セットアップそしてsetgidBit を使用すると、一般ユーザーは次のことを行うことができます。根ユーザーのロールは実行のみです根アカウントによってのみ実行できるプログラムまたはコマンド。
これにより、管理上はある程度の利便性が得られますが、例えば上記の操作では、一般ユーザーが自分のアカウントを変更できるようになります。
根ユーザーごとにこの作業を行うアカウント。について
setuid/setgidより詳細な説明については、最後のおすすめ情報を参照してください。
読み取り専用権限の例: さまざまな誤操作 (たとえば、
:``rm -rf)
$ chattr +i Regular_file$ lsattr Regular_file----i-------- Regular_file$ rm Regular_file #不変ビットを追加した後は、ファイルに対して「破壊的な」アクティビティを実行することはできません rm: 書き込み保護を削除します。通常のファイル `正規ファイル' ですか? yrm: `正規ファイル' を削除できません: 操作は許可されていません$ chattr -i Regular_file #通常の操作を実行したい場合は、このビットを削除できます$ rm Regular_file
例証します:
チャットファイルに特別なアクセス許可を設定するために使用できます。詳細な使用法については、を参照してください。
チャットヘルプ。
通常のファイルの場合、ファイルのサイズはファイルの内容のサイズになります。特殊なファイルでは、ディレクトリ構造に整理されたさまざまなファイル情報が格納されるため、ディレクトリのサイズは必然的に固定されます。ファイル名の長さで割ったサイズに上限があります。デバイス ファイルの「ファイル サイズ」は、デバイスのメジャー デバイス番号とマイナー デバイス番号に対応し、有名なパイプ ファイルのサイズは、その特殊な読み取りおよび書き込みプロパティにより常に 0 になります。ハード リンク (ディレクトリ ファイルはハード リンクを作成できません) は基本的に元のファイルの完全なコピーであるため、そのサイズは元のファイルのサイズになります。ソフトリンクは単なる
i ノード、元のファイルへのポインタが格納されるため、そのサイズは元のファイル名のバイト数のみになります。次に、デモンストレーションを通じて記憶力を高めます。
元のファイルとリンクされたファイルのファイル サイズの例:
$ echo -n abcde > Regular_file #正規ファイルに 5 バイトを書き込みます $ ls -l 正規ファイル*-rw-r--r-- 2 root root 5 2007-12-08 15:28 Regular_file-rw-r--r -- 2 ルート ルート 5 2007-12-08 15:28 Regular_file_hard_filerwxrwxrwx 1 ルート root 12 2007-12-07 20:15 Regular_file_soft_link -> Regular_filerwxrwxrwx 1 ルート root 22 2007-12-08 15:21 Regular_file_soft_link_link -> Regular_file_soft_link$ i= Regular_file$ j= Regular_file_soft_link$ echo ${#i} ${# j} #ソフト リンクは、リンクが指す元のファイルのファイル名のバイト数を正確に保存します 12 22デバイス番号に対応するファイル サイズ: メジャー デバイス番号とマイナー デバイス番号
$ ls -l hda1_block_dev_filebrw-r--r-- 1 ルート root 3, 1 2007-12-07 21:44 hda1_block_dev_file$ ls -l null_char_dev_filecrw-r--r-- 1 ルート root 1, 3 2007-12-07 21:43 null_char_dev_file
補足:メイン
(メジャー)、回(マイナー) デバイス番号にはさまざまな機能があります。デバイス ファイルが開かれると、カーネルはメジャー デバイス番号 (
メジャー番号) カーネル内のメジャー デバイス番号で登録されているドライバーを検索します (次のようにすることができます)。
猫/proc/デバイス登録されているドライバー番号とメジャーデバイス番号)、およびマイナーデバイス番号(
マイナー番号) は、カーネルを通じてドライバー自体に渡されます (「The Linux Primer」の第 10 章を参照)。したがって、カーネルの場合は、メジャー デバイス番号を通じてデバイスを識別するために対応するドライバーを見つけることができ、ドライバーの場合は、デバイスのさまざまな部分 (たとえば、パーティションを介して異なる部分に分割されたハードウェア)部分が表示されます
hda1、
hda2、
hda3など)、さまざまな要件(たとえば、
/dev/ランダムそして
/dev/urandom待って)。
ディレクトリファイルのサイズですが、なぜこのようになっていますか?以下のディレクトリ構造のサイズを見てください。ディレクトリ ファイルのブロックには、ディレクトリ内のすべてのファイル名のエントリが格納されます。
$ ls -ld ディレクトリファイル/drwxr-xr-x 2 root root 4096 2007-12-07 23:14 ディレクトリファイル/
ディレクトリの構造は次のとおりです。
struct dirent { long d_ino; off_t d_off; unsigned short d_name[NAME_MAX+1];ファイルの時間属性は、ファイルに対するユーザーの操作情報を記録することができ、管理者がファイルのバージョン情報を確認するなどシステム管理の参考になります。したがって、文書を読むときは、次の使用をお勧めします。
猫編集ツールは使用せず、読み取りツールを待ちます
ヴィム変更操作を行わなくても、save コマンドを実行すると、ファイルのタイムスタンプ情報が変更されるため、読み取りに進みます。
ファイル名はファイル構造には保存されませんが、ファイルが配置されているディレクトリ構造に保存されます。したがって、ファイル名はディレクトリの同じレベル内で一意である必要があります。
ファイルの場合、一般的な操作には、作成、削除、変更、読み取り、書き込みなどが含まれます。さまざまな操作に対応する「舞台裏のアクション」については、次の章「シェル プログラミング パラダイム ファイル システム操作」で詳しく分析します。
ソケットFile は C 言語で作成できる特殊なファイルです。ここでは紹介しません (コマンドで直接作成できるかは不明です)。
$ touch Regular_file #通常のファイルを作成します $ mkdir directory_file #より多くのファイルを含めることができるディレクトリ ファイルを作成します $ ln Regular_file Regular_file_hard_link #ハード リンク、元のファイルの完全なコピー $ ln -s Regular_file Regular_file_soft_link #ファイル ポインタと同様元のファイルを指す $ mkfifo fifo_pipe # または mknod fifo_pipe p を通じて作成された場合、FIFO は先入れ先出し特性を満たします $ mknod hda1_block_dev_file b 3 1 #ブロックデバイス $ mknod null_char_dev_file c 1 3 #キャラクターデバイス
ファイルを作成すると、実際にはファイル システムにノードが追加されます (
inode) を使用すると、ノード情報がファイル システムのノード テーブルに保存されます。よりわかりやすく言うと、木に新しい葉(ファイル)や枝(ディレクトリ ファイル、葉が生えている種類)が生えることを意味します。木
コマンドまたはls` コマンドは視覚的に表示されます。日常使用の観点から見ると、ファイル システムは非常に似ていて覚えやすいため、逆ツリーとして見ることができます。
$ツリーの現在のディレクトリ
または
$ ls 現在のディレクトリ
ファイルを削除したときの最も直接的な印象は、そのファイルが存在しなくなったことです。これは次の方法でも実現できます。
lsまたは
木このコマンドは、木の枝が切り落とされるか、葉が摘まれるかのように表示されます。実際、これらのファイルは削除後すぐに消えるわけではなく、削除対象としてマークされるだけです。したがって、削除後に対応するディスク領域を「カバーする」ための関連するディスク書き込み操作がない場合は、原則として復元できます。このような作業は面倒な場合が多いので、バックアップ作業を行うなど、重要なデータを削除する前によく考えてください。)対応する方法については、以降の情報を参照してください。
ファイルを削除するための具体的なコマンドは次のとおりです。
rm、空のディレクトリを削除したい場合は、次のように使用できます。
rmdir注文。例えば:
$ rm 通常ファイル$ rmdir ディレクトリファイル$ rm -r 空でないディレクトリファイル
rm非常に重要なパラメータが 2 つあります。1 つは
-f、このコマンドは非常に「野蛮」であり、おそらく多くの Linux ユーザーに苦痛をもたらします。もう 1 つは次のとおりです。
-私, このコマンドは非常に「優しい」コマンドなので、イライラしてしまうユーザーも多いのではないでしょうか。どちらを使用するかはあなたの「気分」によって異なります。適切なバックアップ作業を行っているか、壊滅的な結果を回避するためにいくつかの効果的な措置を講じている場合は、より安心してこれらのタスクを実行できます。
ファイルのコピーは通常、ファイルの内容の「一時的な」コピーを指します。このセクションの冒頭の説明から、ファイルのハード リンクとソフト リンクも、ある意味では「ファイルのコピー」であり、前者はファイルの内容を同期的にコピーし、後者はファイルの内容を同期的に「コピー」することを理解する必要があります。読み取りと書き込みの場合、「ファイルの内容。例えば:
使用
CPファイルを通常どおりコピーするコマンド (ディレクトリのコピーには次のコマンドが必要です)
-rオプション)
$ cp 正規ファイル 正規ファイルコピー$ cp -r ディレクトリファイル ディレクトリファイルコピー
ハードリンクの作成 (
リンクそして
コピー違いは、後者は同期的に更新されるが、前者は同期的に更新されないことです。コピー後、この 2 つは無関係になります。
$ ln Regular_file Regular_file_hard_link
ソフトリンクの作成
$ ln -s 正規ファイル 正規ファイルソフトリンク
ファイル名を変更すると、実際にはファイル名識別子のみが変更されます。通過できる
MVファイル名を変更する (つまり、名前を変更する) コマンド。
$ mv 正規ファイルの正規ファイルの新規名
ファイルの編集とは、実際にはファイルの内容を操作することであり、通常のテキストファイルの編集に相当し、主にファイル内容の読み取り、書き込み、追加、削除などが行われます。これらのタスクは通常、コマンドライン エディタなどの特殊なエディタを介して実行されます。
ヴィム、
emacsおよびグラフィカルインターフェイス
編集、編集待って。特定のファイルの場合は、画像処理ソフトウェアなどの特別な編集および処理ツールが存在します。
ギンプ、文書編集ソフト
オープンオフィス待って。これらのツールには通常、専用のチュートリアルがあります。
以下に、Linux でのリダイレクトによる一般的なファイル編集操作を簡単に紹介します。
ファイルを作成して書き込みます
ABCDE
$ echo abcde > new_regulator_file
上記のファイルに別の行を追加します
ABCDE
$ echo abcde >> new_regulator_file
ファイルを一行ずつ読み取る
$ LINE の読み取り中; $LINE 完了 < test.sh
ヒント: リダイレクトを含む文字列変数をコマンドとして実行する場合は、次を使用します。
評価コマンドを実行しない場合、リダイレクトは解釈できません。例えば、
$ redirect=echo abcde >test_redirect_file$ $redirect #ここで > はリダイレクトとして解釈されるのではなく > 文字として出力されます abcde >test_redirect_file$ eval $redirect #これは > リダイレクトとして解釈されます$ cat test_redirect_fileabcde
ファイルの圧縮と解凍は、ある意味でファイル コンテンツの送信を容易にするために行われますが、カーネルやファイル システム イメージ ファイルなどの特定の用途がある場合もあります (関連知識の詳細については、後続の資料を参照してください)。
ここでは、一般的な圧縮および解凍方法をいくつか紹介します。
タール
$ tar -cf file.tar file #圧縮 $ tar -xf file.tar #解凍
ガズ
$ gzip -9 ファイル $ Gunzip ファイル
tar.gz
$ tar -zcf ファイル.tar.gz ファイル$ tar -zxf ファイル.tar.gz
BZ2
$ bzip2 ファイル$ bunzip2 ファイル
tar.bz2
$ tar -jcf ファイル.tar.bz2 ファイル$ tar -jxf ファイル.tar.bz2
上記のデモンストレーションから、それは非常に明らかであるはずです
タール、
bzip2、bunzip2、
gzip、ガンジップ
指揮官の役割でしょうか?まだ明確でない場合は、さらに作業を進めて上記のコマンドのいくつかを比較し、マニュアルを確認してください。男タール「...」
ファイル検索とは、特定のディレクトリ階層内のファイル システム内で特定の属性を持つファイルの場所を見つけることを指します。この場所をネットワーク全体に拡張すると、次のように表すことができます。
URLローカルアドレスの場合、アドレスは次のように表現できます。
ファイル://+ローカルパス。 Linux システムのローカル パスは次で始まります。
/たとえば、各ユーザーのホーム ディレクトリは次のように表すことができます。
ファイル:///ホーム/。以下では、ローカル ファイル検索のいくつかの方法のみを紹介します。
探すこのコマンドは、ユーザーの要求に基づいて、必要なファイルが見つかるまで、指定されたディレクトリ階層内のすべてのファイルを検索します。そして
更新済みb+検索「高速」検索戦略を提供します。
更新されましたbローカル ファイル データベースを更新および生成しながら、
見つけるこのデータベースをファイル名で検索すると、対応するファイルがすぐに見つかります。前者は、さまざまなファイル属性による検索をサポートし、インターフェイス (
-実行オプション) は、検索されたファイルを処理するために使用されます。したがって、「単一コマンド」スクリプトのファンにとっては非常に便利ですが、ファイル名に基づく検索の場合は、
更新済みb+検索この方法により、検索効率が大幅に向上します。以下に、これら 2 つの方法について簡単に説明します。
探す基本的なコマンドの使用法のデモンストレーション
$ find ./ -name *.c -o -name *.h #すべての C 言語ファイルを検索します。 -o is または $ find ./ ( -name *.c -o -name *.h ) - exec mv '{}' ./c_files/ ;# 見つかったファイルを c_files に移動します。この使い方は非常に興味深いです。上記の使い方が可能です
xargsコマンド置換
$ find ./ -name *.c -o -name *.h コマンドを修正する必要があります。
すべてのファイル名の接尾辞を大文字に変更します。
$ find ./ -name *.c -o -name *.h | xargs -i ./toupper.sh '{}' ./c_files/タッパー.shこれは、小文字を大文字に変換するために実装する必要がある処理ファイルです。具体的な実装は次のとおりです。
$ cat toupper.sh#!/bin/bash# {} は現在の行に展開され、このスクリプトの最初の引数になりますFROM=$1BASENAME=${FROM##*/}BASE=${BASENAME%.* }SUFFIX=${BASENAME##*.}TOSUFFIX=$(echo $SUFFIX | tr '[az]' '[AZ]')TO=$2/$BASE.$TOSUFFIXCOM=mv $FROM $TOecho $COMeval $COM更新済みb+検索基本的な使い方のデモンストレーション
$ updatedb #ライブラリを更新 $locate find*.gz #検索文字列を含むすべての gz 圧縮パッケージを検索
実際、上記の 2 つのコマンドに加えて、Linux にはコマンド検索ツールもあります。
どれのそして
どこですか、前者は特定のコマンドのフルパスを返すために使用され、後者は特定のコマンド、ソースファイル、
man ファイルへのパス。たとえば、次のように検索します。find`コマンドへの絶対パス:
$ where find/usr/bin/find$ where is findfind: /usr/bin/find /usr/X11R6/bin/find /usr/bin/X11/find /usr/X11/bin/find /usr/man/man1/ find.1.gz /usr/share/man/man1/find.1.gz /usr/X11/man/man1/find.1.gz
ファイルの内容に基づいてファイルを検索する場合は、
探すそして
更新済みb+検索同様に
どれの、
どこですか私たちにできることは何もありません。代わりに
grep、
セドコマンドを待ちます。前者が追加されます
-r将来的には、このパラメーターを使用して、指定されたディレクトリ内のファイル内で指定されたファイルの内容を検索し、
-私パラメータを渡した後、ファイルの内容を置き換えることができます。それらの基本的な使用法は前の章で詳しく紹介されているため、ここでは繰り返しません。
これらのコマンドはファイル操作にとって非常に意味があることを強調しておく価値があります。ファイル システムの構造をある程度抽象化し、ファイル システム全体の操作を単一のファイルの操作に単純化します。単一のファイルがテキスト部分のみを考慮する場合、最終的には前の文字列操作に変換されます。前のセクションで説明した内容。ファイルの組織構造とファイル間の関係をより明確に理解するために、次のセクションではファイル システムについて詳しく説明します。
ファイルI/OからLinux仮想ファイルシステムを見る
Linuxファイルシステムの分析
「Linux Core」第 9 章 ファイルシステム
Linux デバイス ドライバー、第 3 版
ヒント: Linux I/O リダイレクトに関するいくつかのヒント
Intel プラットフォーム上の Linux での ELF ファイルのダイナミック リンクのロード、解析、分析例:
パート1、
パート2
シェルスクリプトデバッグ技術
ELFファイル形式とプログラムロード実行処理の概要
Linux での C 言語プログラミング - ファイル操作
LinuxにおけるC言語プログラミングのファイル操作部分
ファイルシステム階層の標準
Linuxシステムで削除されたExt3ファイルを回復する方法を学びます
mc を使用して削除されたファイルを回復する
Linux ext3 の誤った削除と回復の原則
Linux の圧縮/解凍方法の完全なリスト
すべてはバイトです
ファイルとファイル システムの重要性を考慮して、ファイル、ファイル システム、プログラム、プロセスの 3 つのサブセクションに分けて紹介します。 「ファイル」セクションでは、主にファイルの基本的な属性と通常の操作について説明します。「ファイル システム」セクションでは、Linux ファイル システムのさまざまな部分 (Linux ファイル システムの構造など) について詳しく説明します。特定のファイル システムの一般的な構造、基礎となるドライバーの動作原理など)、「プログラムとプロセス」セクションでは、実行可能ファイルの関連コンテンツ(さまざまなプログラム タイプ、ロードおよび実行プロセス、異なるプログラム間の相互作用など)について具体的に説明します。プロセス[コマンドパイプと名前のないパイプ、シグナル通信]、プロセスの制御など)
さらに、ファイルの読み取り、書き込み、実行、削除、変更、コピー、圧縮/解凍などの従来のファイル操作をすべて考慮して、ディレクトリ サイズの意味を明確に議論する必要があります。
午後に上海から戻ってきたばかりですが、コンテストの結果は「悪い」でしたが、重要なのは決勝戦を通じて多くの欠点を発見し、システム開発におけるデザインの重要な役割を発見したことです。そして、上海は美しい街であり、SJTUも美しい大学であることを発見しました。私が戻ったとき、私は競争のために2週間見逃していたこのブログを整理し始めました。
12月15日、ファイル検索パーツを追加します