はじめに
この実験 (Lab) では、RHEL 環境で基本的なコマンドラインツールを使用してファイルとディレクトリを管理する実践的な経験を積みます。pwd と ls で現在の場所を探索し、内容を一覧表示する方法、cd と touch でディレクトリを移動しファイルを作成する方法、そして mkdir、cp、mv、rm でファイルとディレクトリを効果的に整理する方法を学びます。
さらに、ln(ハードリンクとシンボリックリンクの両方)を使用してファイル間のリンクを作成する方法や、シェル展開 (shell expansions) を使用してファイルを効率的に選択する方法を発見し、コマンドラインでのファイル管理に必要な基本的なスキルを習得します。
pwd と ls で現在の場所を探索し、内容を一覧表示する
このステップでは、ファイルシステム内の現在の場所を探索し、pwd および ls コマンドを使用してその内容を一覧表示する方法を学びます。現在の作業ディレクトリを理解し、その内容を表示できることは、コマンドラインからファイルを参照および管理するための基本的なスキルです。
まず、pwd コマンドを使用して現在の作業ディレクトリを特定しましょう。pwd は "print working directory" の略で、ファイルシステム内の現在の場所のフルパス名を表示します。
pwd
以下のような出力が表示され、現在のディレクトリを示します。
/home/labex
次に、ls コマンドを使用して現在のディレクトリの内容を一覧表示します。ls は "list" の略で、指定されたディレクトリの内容、またはディレクトリが指定されていない場合は現在の作業ディレクトリの内容を一覧表示します。
ls
ホームディレクトリの内容が表示されるはずです。
project
ls コマンドには、ファイルやディレクトリに関する追加情報を表示するためのいくつかの便利なオプションがあります。
-lオプション(ロングリスト形式)は、パーミッション、ハードリンク数、所有者、グループ、サイズ、最終更新時刻など、各ファイルとディレクトリに関する詳細情報を提供します。ls -l以下のような出力が表示されるはずです。
total 0 drwxr-xr-x 2 labex labex 6 Aug 27 2024 project-aオプション(すべてのファイル)は、隠しファイルを含むすべてのファイルを一覧表示します。Linux では、ドット (.) で始まるファイル名は隠しファイルと見なされます。また、.は現在のディレクトリを指し、..は親ディレクトリを指します。ls -a隠し設定ファイルを含む、以下のような出力が表示されるはずです。
. .. .bash_history .bash_logout .bash_profile .bashrc .tmux.conf project-lと-aを組み合わせて-laとすると、隠しファイルを含むすべてのファイルのロングリストが表示されます。ls -laこれにより、隠しファイルを含むすべてのファイルとディレクトリの詳細情報が表示されます。
total 20 drwx------ 1 labex labex 72 Jun 4 03:12 . drwxr-xr-x 1 root root 19 Aug 27 2024 .. -rw------- 1 labex labex 31 Jun 4 03:13 .bash_history -rw-r--r-- 1 labex labex 18 Feb 15 2024 .bash_logout -rw-r--r-- 1 labex labex 141 Feb 15 2024 .bash_profile -rw-r--r-- 1 labex labex 877 Jun 4 03:12 .bashrc -rw-r--r-- 1 labex labex 68 Aug 27 2024 .tmux.conf drwxr-xr-x 2 labex labex 6 Aug 27 2024 project-Rオプション(再帰的)は、すべてのサブディレクトリの内容を再帰的に一覧表示します。これを実演するために、まずサブディレクトリを作成しましょう。mkdir mydir次に、
ls -Rを使用して再帰的な一覧表示を確認します。ls -Rmydirとprojectの両方のディレクトリが表示され、その後に内容が表示されるはずです。.: mydir project ./mydir: ./project:最後に、次のステップのために環境をクリーンアップするために
mydirディレクトリを削除しましょう。rmdir mydirこのコマンドは空のディレクトリに対してのみ機能します。
rmdirおよびrmについては、後のステップで詳しく説明します。

cd と touch でディレクトリを移動し、ファイルを作成する
このステップでは、cd コマンドを使用して現在の作業ディレクトリを変更する方法と、touch コマンドを使用して空のファイルを作成する方法を学びます。これらのコマンドは、ファイルを整理し、ファイルシステム内を効率的に移動するために不可欠です。
まず、現在の場所を確認し、ステップ 1 で表示された project ディレクトリに移動しましょう。
pwd
出力は /home/labex(あなたのホームディレクトリ)となるはずです。
次に、cd コマンドを使用して project ディレクトリに移動します。
cd project
新しい場所を確認します。
pwd
出力は /home/labex/project となるはずです。
ここで、現在の project ディレクトリ内に documents という名前の新しいディレクトリを作成します。これには、前のステップで少し触れた mkdir コマンドを使用します。
mkdir documents
documents ディレクトリが作成されたことを確認します。
ls
出力に documents が表示されるはずです。
次に、cd コマンドを使用して、シェルの現在の作業ディレクトリを新しく作成した documents ディレクトリに変更します。
cd documents
ディレクトリを変更した後、pwd を使用して新しい場所を確認するのが良い習慣です。
pwd
出力は /home/labex/project/documents となるはずです。
cd コマンドには、移動に便利なオプションがいくつかあります。
cd -: このコマンドは、以前いたディレクトリに移動します。試してみましょう。cd -/home/labex/projectに戻るはずです。pwdで確認してください。pwdここで、もう一度
cd -を使用して/home/labex/project/documentsに戻ります。cd -そして
pwdで確認します。pwdcd ..: このコマンドは、.(2 つのドット) という隠しディレクトリを使用して、親ディレクトリに 1 レベル上がります。親ディレクトリの正確な名前を知る必要はありません。cd ..これで
/home/labex/projectにいるはずです。pwdで確認してください。pwd..を連鎖させることで、複数のレベルを上がることができます。例えば、/home/labex/projectから/home/labexに移動するには次のようにします。cd ../場所を確認します。
pwd/home/labexにいるはずです。cd(引数なし): このコマンドは、常にホームディレクトリに移動します。labexユーザーの場合、これは/home/labexです。cd場所を確認します。
pwd/home/labexにいるはずです。
さて、いくつかのファイルを作成するために、~/project/documents ディレクトリに戻りましょう。
cd ~/project/documents
場所を確認します。
pwd
出力は /home/labex/project/documents となるはずです。
ここで touch コマンドを使用します。touch コマンドは、ファイルを変更せずに、ファイルのタイムスタンプを現在の日付と時刻に更新します。このコマンドは、空のファイルを作成するためにも非常に役立ちます。
~/project/documents ディレクトリに report.txt と notes.txt という名前の 2 つの空のファイルを作成しましょう。
touch report.txt notes.txt
ls -l を使用してファイルが作成されたことを確認します。
ls -l
新しく作成されたファイルを示す、以下のような出力が表示されるはずです。
total 0
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM report.txt
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM notes.txt
最後に、~/project/documents 内に drafts という名前の新しいディレクトリを作成し、その中にファイルを作成しましょう。
mkdir drafts
cd drafts
touch draft_v1.txt
ファイルの作成を確認します。
ls -l
draft_v1.txt が一覧表示されているはずです。
これで、単一の cd コマンドを使用して ~/project ディレクトリに戻りましょう。
cd ~/project
場所を確認します。
pwd
出力は /home/labex/project となるはずです。
mkdir、cp、mv、rm でファイルとディレクトリを整理する
このステップでは、mkdir(make directory)、cp(copy)、mv(move/rename)、rm(remove)コマンドを使用して、ファイルとディレクトリを効果的に整理する方法を学びます。これらのコマンドは、クリーンで構造化されたファイルシステムを維持するために不可欠です。
まず、~/project ディレクトリにいることを確認します。
cd ~/project
現在の場所を確認します。
pwd
出力は /home/labex/project となるはずです。
mkdir: ディレクトリの作成
単一のディレクトリを作成するために mkdir をすでに使用しました。ここでは、より高度な mkdir オプションを探求しましょう。
引数としてリストすることで、複数のディレクトリを一度に作成できます。
mkdir reports presentations
作成を確認します。
ls
documents、presentations、reports が一覧表示されるはずです。
mkdir コマンドの -p(parents)オプションは、要求された宛先の親ディレクトリが存在しない場合にそれらを作成するのに非常に役立ちます。これにより、存在しない親ディレクトリ内にサブディレクトリを作成しようとした場合のエラーを防ぐことができます。
ネストされたディレクトリ構造 projects/alpha/docs を作成しましょう。
mkdir -p projects/alpha/docs
次に、ls -R を使用して新しく作成されたネストされた構造を表示します。
ls -R projects
以下のように表示されるはずです。
projects:
alpha
projects/alpha:
docs
projects/alpha/docs:
cp: ファイルとディレクトリのコピー
cp コマンドはファイルとディレクトリをコピーします。ファイルをコピーする場合、現在のディレクトリまたは指定された別のディレクトリに重複を作成します。
documents ディレクトリから reports ディレクトリに report.txt をコピーしましょう。
cp documents/report.txt reports/
reports ディレクトリの内容を一覧表示してコピーを確認します。
ls reports
reports ディレクトリに report.txt が表示されるはずです。
ターゲットディレクトリに同じ名前のファイルが存在する場合、cp はデフォルトでそれを上書きします。
ディレクトリとその内容をコピーするには、-r(recursive)オプションを使用する必要があります。デフォルトでは、-r が指定されていない場合、cp はディレクトリを無視します。
documents ディレクトリ全体を projects/alpha/ にコピーしましょう。
cp -r documents projects/alpha/
再帰的なコピーを確認します。
ls -R projects/alpha/documents
documents ディレクトリの内容(notes.txt、drafts、drafts/draft_v1.txt を含む)が projects/alpha/documents 内に複製されているはずです。
projects/alpha/documents:
drafts notes.txt report.txt
projects/alpha/documents/drafts:
draft_v1.txt
mv: ファイルとディレクトリの移動と名前の変更
mv コマンドはファイルをある場所から別の場所に移動します。ファイルやディレクトリの名前を変更するためにも使用できます。ファイルの絶対パスをそのフルネームと考えると、ファイルを移動することは、ファイルを名前変更することと実質的に同じです。移動されたファイルのコンテンツは変更されません。
documents ディレクトリ内の notes.txt を meeting_notes.txt に名前変更しましょう。
mv documents/notes.txt documents/meeting_notes.txt
名前の変更を確認します。
ls documents
notes.txt の代わりに meeting_notes.txt が表示されるはずです。
次に、reports ディレクトリから documents/drafts に report.txt を移動しましょう。
mv reports/report.txt documents/drafts/
移動を確認します。
ls reports
reports ディレクトリは空になっているはずです。
ls documents/drafts
documents/drafts ディレクトリに draft_v1.txt と report.txt が表示されるはずです。
mv の -v オプションは、コマンド操作の詳細な出力を表示し、確認に役立ちます。
mv -v documents/meeting_notes.txt documents/final_notes.txt
以下のような出力が表示されます。
renamed 'documents/meeting_notes.txt' -> 'documents/final_notes.txt'
rm: ファイルとディレクトリの削除
rm コマンドはファイルを削除します。削除されたファイルは通常コマンドラインから回復できないため、rm には注意してください。
rm の練習のために一時ファイルを作成しましょう。
touch temp_file.txt
次に、temp_file.txt を削除します。
rm temp_file.txt
削除を確認します。
ls
temp_file.txt はもう一覧表示されないはずです。
デフォルトでは、rm はディレクトリを削除しません。正しいオプションなしで空でないディレクトリを削除しようとすると、エラーが発生します。
rm presentations
以下のようなエラーが表示されます。
rm: cannot remove 'presentations': Is a directory
ディレクトリとその内容を削除するには、-r(recursive)オプションを使用する必要があります。rm -r コマンドは、各サブディレクトリを個別に削除する前に、各サブディレクトリを再帰的に処理します。
presentations ディレクトリとその内容(現在は空ですが、ディレクトリには依然として -r が必要です)を削除しましょう。
rm -r presentations
削除を確認します。
ls
presentations はもう一覧表示されないはずです。
rm の -i オプションは、各ファイルを削除する前に確認を求める対話的なプロンプトを表示します。これは良い安全対策です。
さらにいくつか一時ファイルを作成し、それらを対話的に削除しましょう。
touch file1.txt file2.txt
rm -i file1.txt file2.txt
各ファイルに対してプロンプトが表示されます。
rm: remove regular empty file 'file1.txt'? y
rm: remove regular empty file 'file2.txt'? y
削除を確認するために、各プロンプトで y を入力して Enter キーを押します。
-f オプション(force)は、ユーザーに確認を求めずに強制的に削除します。-i と -f の両方を指定した場合、-f が優先されます。**-f は極めて慎重に使用してください。**
最後に、projects ディレクトリをクリーンアップしましょう。
rm -r projects
projects が削除されたことを確認します。
ls
rmdir: 空のディレクトリの削除
rmdir コマンドを使用して空のディレクトリを削除することもできます。ディレクトリが空でない場合、失敗します。
空のディレクトリを作成し、rmdir で削除してみましょう。
mkdir empty_dir
rmdir empty_dir
削除を確認します。
ls
empty_dir はもう一覧表示されないはずです。
rmdir で空でないディレクトリを削除しようとすると、失敗します。
mkdir test_dir
touch test_dir/test_file.txt
rmdir test_dir
以下のようなエラーが表示されます。
rmdir: failed to remove 'test_dir': Directory not empty
空でないディレクトリには rm -r を使用することを忘れないでください。
rm -r test_dir
ln(ハードリンクとシンボリックリンク)でファイル間のリンクを作成する
このステップでは、ln コマンドを使用してファイル間にリンクを作成する方法を学びます。Linux ファイルシステムは、ハードリンクとシンボリック(またはソフト)リンクの 2 種類のリンクをサポートしています。これらの違いを理解することは、効果的なファイル管理のために不可欠です。
まず、~/project ディレクトリにいることを確認します。
cd ~/project
現在の場所を確認します。
pwd
出力は /home/labex/project となるはずです。
作業用に、original_file.txt という名前の新しいファイルを作成し、いくつかのコンテンツを追加しましょう。
echo "This is the content of the original file." > original_file.txt
ファイルの内容を確認します。
cat original_file.txt
ハードリンク
ハードリンクは、基本的に既存のファイルに対する別名です。ストレージデバイス上の同じデータ(inode)を、元のファイルと同じように直接指します。ハードリンクが作成された後、新しいハードリンクとファイルの元の名前との違いを区別することはできません。どちらも同じデータにアクセスするための等しく有効な方法です。
ls -l コマンドを使用して、ファイルに複数のハードリンクがあるかどうかを確認できます。ls -l 出力の 2 番目の列は、ファイルへのハードリンクの数を示します。
当初、original_file.txt には 1 つのハードリンク(それ自体)があります。
ls -l original_file.txt
以下のような出力が表示され、数字の 1 が 1 つのハードリンクを示しているはずです。
-rw-rw-r--. 1 labex labex 35 Mar 7 HH:MM original_file.txt
ここで、ln コマンドを使用して original_file.txt へのハードリンクを hard_link.txt という名前で作成しましょう。
ln original_file.txt hard_link.txt
両方のファイルのハードリンク数を確認します。
ls -l original_file.txt hard_link.txt
両方のファイルでハードリンク数が 2 になっているはずです。これは、それらが同じデータを指していることを示しています。
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM hard_link.txt
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM original_file.txt
それらが同じデータを指していることを確認するために、ls -i オプションを使用して各ファイルの inode 番号を一覧表示できます。ファイルが同じファイルシステム上にあり、それらの inode 番号が同じ場合、それらのファイルは同じデータファイルの内容を指すハードリンクです。
ls -i original_file.txt hard_link.txt
inode 番号は同一であるはずです。
1234567 original_file.txt 1234567 hard_link.txt
一方のファイルのコンテンツを変更すると、それらは同じ基盤データであるため、もう一方のファイルにも変更が反映されます。
echo "Adding new line." >> hard_link.txt
cat original_file.txt
以下のように表示されます。
This is the content of the original file.
Adding new line.
元のファイルが削除された場合でも、少なくとももう 1 つのハードリンクが存在する限り、ファイルのコンテンツにアクセスできます。データは、最後のハードリンクが削除され、ファイルの内容がいずれのハードリンクからも参照されなくなった場合にのみ、ストレージから削除されます。
original_file.txt を削除しましょう。
rm original_file.txt
次に、hard_link.txt にアクセスしてみます。
cat hard_link.txt
コンテンツは引き続き表示されます。
This is the content of the original file.
Adding new line.
hard_link.txt のハードリンク数は 1 になっているはずです。
ls -l hard_link.txt
ハードリンクの制限事項:
- ハードリンクは通常のファイルにのみ使用できます。
lnコマンドを使用して、ディレクトリや特殊ファイルへのハードリンクを作成することはできません。 - ハードリンクは、両方のファイルが同じファイルシステム上にある場合にのみ使用できます。
dfコマンドを使用してファイルシステムを一覧表示できます。
シンボリックリンク
シンボリックリンク(「ソフトリンク」または「シンボリックリンク」とも呼ばれます)は、パスによって別のファイルまたはディレクトリを指す特別な種類のファイルです。Windows のショートカットに似ています。ハードリンクとは異なり、シンボリックリンクはデータ自体を直接指すのではなく、ターゲットファイルまたはディレクトリの名前を指します。
シンボリックリンク用の target_file.txt という名前の新しいファイルを作成しましょう。
echo "This is the target file for the symbolic link." > target_file.txt
次に、ln -s コマンドを使用して target_file.txt を指す sym_link.txt という名前のシンボリックリンクを作成します。
ln -s target_file.txt sym_link.txt
ls -l を使用してシンボリックリンクの詳細を確認します。
ls -l target_file.txt sym_link.txt
いくつかの違いに気づくでしょう。
sym_link.txtのロングリストの最初の文字はl(文字のl)であり、シンボリックリンクであることを示しています。- 出力は
sym_link.txt -> target_file.txtと表示され、それが何を指しているかを明確に示しています。 - シンボリックリンクのサイズは非常に小さく(ターゲットパスの長さのみ)、ターゲットファイルのサイズではありません。
sym_link.txtのハードリンク数は1です。
-rw-rw-r--. 1 labex labex 45 Mar 7 HH:MM target_file.txt
lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txt
sym_link.txt を通じて target_file.txt のコンテンツにアクセスできます。
cat sym_link.txt
以下のように表示されます。
This is the target file for the symbolic link.
シンボリックリンクの主な違いと動作:
クロスファイルシステムリンク: シンボリックリンクは、異なるファイルシステム上の 2 つのファイルをリンクできます。
ディレクトリへのリンク: シンボリックリンクは、通常のファイルだけでなく、ディレクトリを指すこともできます。
documentsディレクトリへのシンボリックリンクを作成しましょう。ln -s documents doc_shortcutこれで、
doc_shortcutにcdすることで、それがdocumentsディレクトリ自体であるかのように扱うことができます。cd doc_shortcut場所を確認します。
pwdはデフォルトでシンボリックリンクのパスを表示することに注意してください。pwd出力:
/home/labex/project/doc_shortcutpwdにシンボリックリンクが指しているディレクトリの実際のパスを表示させたい場合は、-Pオプションを使用します。pwd -P出力:
/home/labex/project/documentsこれで、
~/projectに戻ります。cd ~/project切れかけたシンボリックリンク: 元の通常のファイル(ターゲット)が削除されると、シンボリックリンクは存在し続けますが、存在しないファイルを指します。これは「切れかけたシンボリックリンク」と呼ばれます。
target_file.txtを削除しましょう。rm target_file.txt次に、
ls -lでsym_link.txtを確認します。ls -l sym_link.txtsym_link.txtはまだ存在しますが、そのターゲットtarget_file.txtは、壊れていることを示すために赤色または異なる色(ターミナルの設定による)で表示されていることに気づくでしょう。lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txt切れかけたシンボリックリンクを
catしようとすると失敗します。cat sym_link.txt出力:
cat: sym_link.txt: No such file or directory
最後に、このステップで作成したファイルとリンクをクリーンアップしましょう。
rm hard_link.txt sym_link.txt doc_shortcut
ls
前のステップから残っているのは documents と reports ディレクトリのみのはずです。
シェル展開でファイルを効率的に選択する
In this step, you will learn how to efficiently select files and directories using various shell expansion features, including pattern matching (globbing), tilde expansion, brace expansion, variable expansion, and command substitution. These features allow you to perform operations on multiple files with concise commands.
First, ensure you are in your ~/project directory.
cd ~/project
Verify your current location:
pwd
The output should be /home/labex/project.
To demonstrate shell expansions, let's create a set of files and directories.
mkdir data
cd data
touch file1.txt file2.log file_a.txt file_b.log report_2023.txt report_2024.log
touch image.jpg document.pdf archive.zip
mkdir dir1 dir2 dir3
cd ..
Now, list the contents of the data directory to see the files you've created:
ls data
You should see:
archive.zip dir1 dir2 dir3 document.pdf file1.txt file2.log file_a.txt file_b.log image.jpg report_2023.txt report_2024.log
Pattern Matching (Globbing)
Pattern matching, also known as globbing, allows you to select files based on patterns using special characters called metacharacters.
| Metacharacter | Matches | Example |
|---|---|---|
* |
Any string of zero or more characters. | *.txt matches all files ending with .txt. |
? |
Any single character. | file?.txt matches file1.txt, fileA.txt, etc. |
[abc...] |
Any one character in the enclosed class. | file[12].txt matches file1.txt or file2.txt. |
[!abc...] |
Any one character not in the enclosed class. | file[!1].txt matches fileA.txt but not file1.txt. |
[[:alpha:]] |
Any alphabetic character. | file[[:alpha:]].txt matches fileA.txt. |
[[:digit:]] |
Any single digit from 0 to 9. | file[[:digit:]].txt matches file1.txt. |
Let's try some examples within the data directory.
Using
*: List all files ending with.txt:ls data/*.txtOutput:
data/file1.txt data/file_a.txt data/report_2023.txtList all files containing
filein their name:ls data/*file*Output:
data/file1.txt data/file2.log data/file_a.txt data/file_b.logUsing
?: List files that have exactly one character before.log:ls data/file?.logOutput:
data/file2.logUsing
[]for character sets: List files that start withreport_and have either2023or2024in their name:ls data/report_[2][0][2][34].*Output:
data/report_2023.txt data/report_2024.logUsing
{}for brace expansion: List files starting withfileand ending with.txtor.log:ls data/file*.{txt,log}Output:
data/file1.txt data/file2.log data/file_a.txt data/file_b.log
Tilde Expansion ~
The tilde (~) character expands to the current user's home directory (/home/labex). When followed by a username, it expands to that user's home directory.
echo ~
Output:
/home/labex
echo ~root
Output:
/root
echo ~/project/data
Output:
/home/labex/project/data
Brace Expansion {}
Brace expansion generates arbitrary strings. It's useful for creating lists of files or directories with similar names without typing each one individually.
Comma-separated list: Create files
report_jan.txt,report_feb.txt,report_mar.txt:touch data/report_{jan,feb,mar}.txtList them:
ls data/report_*.txtOutput:
data/report_2023.txt data/report_jan.txt data/report_feb.txt data/report_mar.txtRange of numbers or letters: Create files
doc1.txt,doc2.txt,doc3.txt:touch data/doc{1..3}.txtList them:
ls data/doc*.txtOutput:
data/doc1.txt data/doc2.txt data/doc3.txtCreate directories
chapterA,chapterB,chapterC:mkdir data/chapter{A..C}List them:
ls data/chapter*Output:
data/chapterA data/chapterB data/chapterC
Variable Expansion
Shell variables store values that can be expanded in commands. You define a variable using VARNAME=value and access its value using $VARNAME or ${VARNAME}.
MY_DIR=data
echo "My directory is: $MY_DIR"
Output:
My directory is: data
You can use variables in commands:
ls $MY_DIR
Output will be the contents of the data directory.
Command Substitution
Command substitution allows you to use the output of a command as part of another command. This is done by enclosing the command in $(command) or backticks `command`. The $(command) syntax is generally preferred as it can be nested.
Let's get the current date and use it in a file name.
touch data/log_$(date +%Y-%m-%d).txt
List the data directory to see the new file:
ls data/log_*.txt
Output will be similar to:
data/log_2024-03-07.txt
You can also use it to count files:
echo "There are $(ls data | wc -l) items in the data directory."
Output will be similar to:
There are 19 items in the data directory.
Protecting Arguments from Expansion
Sometimes, you want to prevent the shell from expanding certain characters. You can do this using:
Backslash (
\): Escapes the next single character.echo "The value of \$HOME is your home directory."Output:
The value of $HOME is your home directory.Single quotes (
''): Prevent all shell expansion within the quotes.echo 'The current date is $(date +%Y-%m-%d).'Output:
The current date is $(date +%Y-%m-%d).Double quotes (
""): Prevent most shell expansion, but allow variable expansion ($VAR) and command substitution ($()).MY_DATE=$(date +%Y-%m-%d) echo "Today's date is $MY_DATE."Output:
Today's date is 2024-03-07.Compare with single quotes:
echo 'Today is $MY_DATE.'Output:
Today's date is $MY_DATE.
Finally, let's clean up the data directory.
rm -r data
まとめ
この実験では、RHEL でファイルやディレクトリを管理するための基本的なコマンドラインツールを学びました。まず、現在の作業ディレクトリを特定するための pwd と、詳細情報のための -l や隠しファイルを表示するための -a などのオプションを使用してディレクトリの内容を一覧表示する ls を習得しました。次に、cd を使用してファイルシステムを移動し、touch を使用して新しいファイルを作成しました。
さらに、mkdir を使用してディレクトリを作成し、cp を使用してファイルやディレクトリをコピーし、mv を使用してそれらを移動または名前変更し、rm を使用してそれらを削除することで、ファイルシステムを整理する能力を習得しました。この実験では、ln を使用したハードリンクとシンボリックリンクの作成、およびシェル展開を使用した効率的なファイル選択方法についてもカバーし、コマンドラインからファイルやディレクトリを効果的に管理する能力を向上させました。



