スポンサーリンク
テクノロジー

ターミナルとシェルの基本|ディレクトリ移動とファイル操作、パイプの考え方

パイプとリダイレクト

画面に出る結果を次の処理へ渡す

多くのコマンドは、結果を標準出力という出力先へ送ります。普段はそれがターミナルに表示されます。パイプの | は、左のコマンドの標準出力を、右のコマンドの標準入力へつなぐ記号です。Unix系の基本的な例では、文字の流れを次の処理へ渡すと考えると分かりやすくなります。

スポンサーリンク
grep -F 'apple' memo.txt | head -n 1

左側は apple を含む行を選び、右側は受け取った行の先頭一行を表示します。元の memo.txt は変更しません。単純なこの例では処理を分ける必要はありませんが、「選ぶ」と「一部を見る」をつなぐ考え方が分かります。いきなり長い一行にせず、それぞれ単独で確かめてからつなぎます。

右側のコマンドが標準入力を読むのか、ファイル名を引数で受け取るのかは、ヘルプで確認します。ファイル名の文字列をパイプへ送るだけでは、その中身を読ませられるとは限りません。

ファイルへの保存は上書きに注意する

> は標準出力をファイルへ向けます。対象がなければ作られ、すでにあれば中身が置き換わるのが一般的です。次の例は、練習場所に apple-lines.txt がないことを確認してから実行します。元のファイルとは別の名前を使ってください。

grep -F 'apple' memo.txt > apple-lines.txt
cat apple-lines.txt

>> は、一般に既存ファイルの末尾へ追加する指定です。たとえば printf '%s\n' 'pear' >> memo.txt とすれば、この練習ファイルの末尾へ一行加えられます。ただし同じ操作を繰り返せば同じ行も増えるため、実行した回数と結果を見ます。保存後は tail などで確認します。

入力と出力を同じファイルへ向けないことも大切です。コマンドが読み始める前にシェルが出力先を開き、中身を空にする場合があります。変換や検索の結果は別名へ保存し、元と結果を確認してから置き換えるのを基本にします。自動化でもこの順番が事故を減らします。

結果の送り先を選ぶ(パイプとリダイレクトの比較)
次の処理へ渡すのか、保存するのかを区別します。

エラーメッセージは、標準出力とは別の標準エラー出力へ送られることがあります。このため、結果を保存してもエラーだけ画面へ出る場合があります。最初からエラーを非表示にする指定を付けず、何が起きたかを読むようにします。保存先のファイルができただけで処理全体の成功とは判断できません。

スポンサーリンク

Tab補完と履歴の使い方

名前を全部打たず、候補から選ぶ

多くの対話的なシェルでは、途中まで入力してTabを押すと、ファイル名やコマンド名を補完できます。続きを補うか候補を表示するかは、シェルや設定、候補の数で違います。

補完は実在する綴りの確認にも役立ちます。スペースや日本語の名前も補える場合がありますが、似た別のファイルを選んでいないかは実行前に確かめます。

矢印の上キーなどで以前の入力を呼び出せる環境もあります。似た処理を再実行するときに便利ですが、履歴はコマンドを記録するもので、そのときの現在地やファイルの状態まで戻すものではありません。同じ cp でも、今いる場所が変わっていれば別の対象へ向かうことがあります。

履歴から呼び出した行は、保存先、対象名、オプションを見てから実行します。削除や上書きでは特に慎重に扱い、短く打つことより、対象を説明できることを目標にします。

貼り付けた行も自分の指示になる

Webページから貼り付ける場合は、改行、複数コマンドをつなぐ記号、見えにくい文字が含まれていないかを確認します。管理者権限を付ける指定や、外部から取得した内容をすぐ実行する指定は、意味を理解せず使いません。練習では一行ずつ読み、対象と結果を確かめる進め方を保ちます。

入力途中で引用符を閉じ忘れると、次の行でも入力待ちが続くことがあります。まだ実行していない単純な入力なら、一般的な対話環境ではCtrl+Cで入力を取り消せます。ただし実行中の処理では中断の意味になるため、保存や更新が進んでいる処理へ、状況を見ずに押すことは避けてください。

パスワード、アクセストークン、秘密の文字列をコマンドへ直接入れると、履歴や記録へ残る可能性があります。ログインが必要なツールでは、公式に案内された入力方法を使います。質問するときにも履歴全体をそのまま貼らず、必要な行とエラーだけを選んで秘密を除きます。

作業メモには、入力した行と目的、作業場所、結果を残します。自動化へ進むときも、手で確認できた流れと、その前提が出発点になります。

スポンサーリンク

OSの違いとよくあるつまずき

PowerShellとWSLを見分ける

Windowsでは、ターミナルの中でPowerShellを開く場合と、WSLのLinux環境を開く場合があります。WSLはWindows上でLinux環境を使う仕組みで、そこで動くシェルとPowerShellは別です。どちらのタブを開いているか、作業場所がWindows側かLinux側かを確かめます。

PowerShellでは Get-Location、Get-ChildItem、Set-Location などが基本のコマンドです。pwd や ls のような短い名前が使える設定もありますが、Unixコマンドと同じ引数で動くという意味ではありません。Get-Help や Get-Command など、その環境の説明を使って確認します。

環境 最初に確認すること 手順を読むときの注意
macOSのUnix系シェル シェルと標準コマンド Linuxとオプションが違う場合がある
Linuxのシェル 利用するシェルとコマンド 配布環境で導入済みの道具が違う
WindowsのPowerShell コマンドとヘルプ 別名でもUnixと同じ動作とは限らない
WindowsのWSL内 Linux側の現在地 Windowsとのパスの違いを確認する

PowerShellのパイプは、単なる文字列だけでなく、属性を持つオブジェクトを渡す構成が基本です。Unix系の文字の流れをそのまま当てはめると、抽出する方法などで戸惑います。Microsoftのパイプラインの公式説明を確認し、PowerShell向けの例として学び直すと理解しやすくなります。

名前・権限・実行場所を順に見る

ファイルが見つからないときは、まず pwd、次に一覧、最後に指定したパスを確認します。大文字と小文字を別の名前として扱うかは、OS名だけでなくファイルシステムなどにも依存します。自分の環境で同じに見えても、共有先では別になることがあるため、綴りを一致させる習慣を付けます。

スポンサーリンク

名前が似たファイルを何度も選び間違えるなら、操作だけでなく命名も見直します。ファイル名の付け方と整理のコツ|日付・版番号で迷わない命名ルールのように、日付や内容の並びをそろえると、一覧から選びやすくなります。空白や記号を一切使えないという意味ではなく、作業を共有する人が読み取れる名前にします。

権限のエラーが出ても、すぐ管理者として再実行しません。別の人が所有する場所やシステムのディレクトリを対象にしていないか、読み取り専用の場所ではないかを確認します。自分の練習場所へ戻して試せるならそこで確かめ、共有環境の権限変更は管理者へ相談します。

コマンド自体が見つからない場合は、名前の誤り、未導入、別のシェル向けの手順などが候補です。知らない配布サイトから似た名前のプログラムを急いで入れるより、OSやツールの公式案内を調べます。エラーの言葉を一つずつ読み、場所、名前、環境のどこが食い違っているかを狭めると、次の確認が決まります。

まとめ

コマンドラインの基本は、現在地を確認し、対象を指定し、結果を見てから次へ進むことです。パスと引数を読めれば、移動、表示、検索を組み合わせられます。削除や保存では対象と出力先を特に確認し、パイプを長くつなぐ前に、一つずつの処理が想定どおりかを確かめてください。

まずは自分のシェルを確認し、未使用の練習ディレクトリを一つ作って、pwd と ls で現在地と中身を見てみてください。その中の短いテキストを表示して検索するところまで進めれば、次の操作を結果から考える練習になります。

よくある質問

ターミナルとシェルは同じものですか?

ターミナルは文字を入力して結果を見るための画面で、シェルは入力を解釈してコマンドを動かすプログラムです。同じターミナルでも、開く設定によってPowerShellやUnix系のシェルなどを使い分けられます。

コマンド例の先頭にあるドル記号も入力しますか?

説明で行頭に付くドル記号は、入力待ちを表すプロンプトの場合があります。その場合は記号を除いたコマンドだけを入力しますが、変数を表すドル記号などとは区別が必要です。

rmで消したファイルはごみ箱から戻せますか?

一般的なUnix系のrmは、ごみ箱へ移さず削除します。通常の取り消し操作では戻せないため、練習でも削除対象と場所を確認し、大切なファイルでは使わないでください。

Windowsでも同じコマンドを使えますか?

WSL内ではLinux環境のコマンドを使えますが、PowerShellは構文や処理するデータの仕組みが異なります。短い名前が同じでもオプションまで同じとは限らないので、使っているシェルに合う説明を確認します。

スペースのあるフォルダーへ移動できません。

パス全体を引用符で囲み、スペースを含めて一つの引数として渡します。引用符の種類や特殊文字の扱いはシェルで違うため、まず補完を使って実在する名前を選ぶと入力ミスを減らせます。

コメント

まだコメントはありません。最初の感想をどうぞ。

個人情報(本名・住所・電話番号など)やリンクの書き込みはご遠慮ください。内容によっては表示しないことがあります。プライバシーポリシー

スポンサーリンク
  1. 秋の戸口に並ぶかぼちゃの明かりとかぶ、麦束
  2. 資料を手に落ち着いて話し合う二人
  3. ノートパソコンと資料、外付け記憶装置がある机
  4. 冬の木で越冬する卵のうやミノムシ、テントウムシ
  5. 青い折り鶴と三角に折った紙、無地の折り紙