Bashの特殊文字まとめ:知っておきたい記号の意味と使い方
Bashでは、すべての文字が同じ役割を持つわけではありません。一部の文字は特別な機能を担い、コマンドを調整したり、データ操作を支援したりします。この記事では、Bashで特に重要な特殊文字を一覧にまとめました。それぞれの使い方と、日々のターミナル作業を快適にする活用術をぜひご覧ください。
パスの区切り文字(/)
Bashでは、スラッシュ(/)がパスの各部分、つまりフォルダの中にあるサブフォルダを区切ります。ホームフォルダ内の「pictures」というフォルダに移動するには、次のように cd コマンドを使います。
cd /home/USERNAME/pictures
上の例では、スラッシュより後ろの要素はすべて、スラッシュの前にある場所の中に存在することになります。
ホームディレクトリ(~)
ターミナルでホームフォルダへのフルパスを入力する代わりに、チルダ(~)を使えます。たとえば、ホームフォルダへ移動するには次のように入力します。
cd ~
より複雑なパスにも組み込めます。たとえば、ホームディレクトリ内の「Personal」フォルダにある「mydata.txt」を編集するには、次のようにします。
nano ~/Personal/mydata.txt
カレントフォルダと上位フォルダ(. と ..)
ドット1つ(.)はカレントディレクトリ、ドット2つ(..)はその上位ディレクトリを表します。つまり、単一ドットは現在いるフォルダ、二重ドットはひとつ上の階層のフォルダに対応します。
たとえば「/home/USERNAME/pictures」にいて、同じディレクトリ内の「transform_images.sh」というスクリプトを実行したい場合は、次のように入力します。
sh ./transform_images.sh
スクリプトを実行した後、ひとつ上のフォルダに戻りたいときは、次のように入力します。
cd ..
これで「/home/USERNAME/pictures」から「/home/USERNAME」へ移動できます。
コメントとコマンドの無効化(#)
ハッシュ記号(#)は、Bashスクリプトを書くときに特に便利です。スクリプトにコメントを追加でき、後から見返す際の参考になります。Bashはハッシュ記号以降の内容をすべて無視します。
次のスクリプトでは、1行目がBashスクリプトであることを宣言し、2行目は無視されるコメント、3行目は通常のコピー コマンドです。
#!/bin/bash
# This is a comment - you can type anything you want here
cp file1.txt /home/USERNAME/scripts/file2.txt
ハッシュはスクリプトを書かない場合でも役立ちます。コマンドの一部を無効化できるからです。試しに、次のシンプルなコマンドを実行してみてください。
echo I am YOUR_NAME
続けて、今度は次のように入力してみましょう。
echo I am #YOUR_NAME
2番目のコマンドでは「I am」とだけ表示されます。ハッシュ以降がすべて無効化されたためです。
文字範囲の指定([])
角括弧([])で囲むことで、文字の範囲を指定できます。たとえば、DまたはMで始まるフォルダ名を探したい場合は、次のように入力します。
ls [DM]*
また、年号ごとに名付けられたサブフォルダがたくさんあるフォルダにいるとしましょう。過去5年分のフォルダを /home/USERNAME/backup にコピーするには、次のようにします。
cp -r 201[56789] /home/USERNAME/backup
さらに、ダッシュ(-)を使えばもっと簡潔に書けます。
cp 201[5-9] /home/USERNAME/backup
Bashは5から9までの数字を順に展開し、その間に含まれるすべての数値をカバーします。
リダイレクト(< >)
山括弧(<>)を使うと、コマンドの入出力をリダイレクトできます。たとえば、次のコマンドは…
ls >> list.txt
ls の出力をリダイレクトして、「list.txt」ファイルに保存します。
なお、右山括弧2つ(>>)はコマンドの出力をファイルに追記します。同じコマンドを再実行すると、既存の内容の末尾に出力が追加されていきます。新しい結果で内容を置き換えたい場合は、右山括弧1つ(>)を使います。
ls > list.txt
パイプ(|)
パイプ(|)を使うと、複数のコマンドを組み合わせてひとつの大きな処理にし、より複雑な結果を得られます。リダイレクトとやや似た働きをします(両者の共通点と相違点については、関連記事も参照してください)。
数千件のエントリを含む巨大なファイルから自分の名前を見つけたいとします。テキストエディタで検索する代わりに、次のようにしましょう。
cat entries.txt | grep 'YourName'
この場合、「entries.txt」の内容が出力され、それが grep コマンドへ渡されます。
コマンドの区切り(;)
Bashではセミコロン(;)で区切ることで、複数のコマンドを一度に実行できます。たとえば、2つのフォルダをそれぞれ別の場所にコピーするには、次のようにします。
cp folder1 destination1; cp folder2 destination2
セミコロンが2つのコマンドを区切り、Bashに順番に実行するよう指示します。もちろん、3つ以上のコマンドをつなぐことも可能です。
ワイルドカード(* と ?)
アスタリスク(*)はコマンドで使ったことがあるかもしれません。任意の文字列に一致するため、たとえばあるフォルダから別のフォルダへすべてのJPGファイルをコピーするといった操作が簡単に行えます。
cp /home/USERNAME/folder1/*.jpg /home/USERNAME/folder2/
クエスチョンマーク(?)もワイルドカードですが、こちらは1文字だけに一致します。たとえば:
cp /home/USERNAME/201?/*.jpg /home/USERNAME/folder2/
上のコマンドは「201」で始まるフォルダ内のjpgファイルをすべてコピーします。ワイルドカードは数字だけでなく英数字全般に一致するため、「201A」や「201z」といった名前のフォルダも対象になる点に注意してください。
バックグラウンド実行(&)
コマンドの末尾にアンパサンド(&)を付けるだけで、コマンドをバックグラウンドプロセスとして実行できます。
cp /home/USERNAME/Downloads/huge_file.zip /home/USERNAME/backups &
上のコマンドはhuge_file.zipのコピーを開始すると同時にバックグラウンドへ移行するため、引き続きターミナルを使い続けられます。コマンドは完了すると自動的に終了します。再び前面に表示したい場合は、fg と入力してEnterキーを押してください。
変数($)
ドル記号($)を使うと、コマンド内で使用する変数を設定できます。実際に試すには、ターミナルに次のように入力してみてください。
myname=YOUR_NAME
myage=YOUR_AGE
echo "I'm $myname and I'm $myage years old"
変数に値を代入するときには、ドル記号が不要な点に注意してください。
エスケープ(\)とクォート("")
特殊文字をそのままの意味でコマンドに使いたい場合は、エスケープが必要です。特殊文字の直前にバックスラッシュ(\)を置きます。たとえば、感嘆符を含む名前のファイルがある場合、Bashに特殊文字ではなく普通の感嘆符として解釈させるには \! と入力します。
もうひとつの方法は、シングルクォート('')またはダブルクォート("")で囲むことです。文字列をクォートで囲むと、中の特殊文字は実際の文字として扱われます。ただし、シングルクォートとダブルクォートには違いがあります。シングルクォートは囲まれた文字列をそのままテキストとして評価する一方、ダブルクォートは囲まれた文字列内で変数($)を使用できます。
まとめ
以上がBashの特殊文字のすべてではありませんが、日々のターミナル作業で最も役立つものを厳選しました。Bash内を素早く移動するためのキーボードショートカットも併せてチェックしてみてください。ここで紹介しきれなかった重要な特殊文字があれば、ぜひコメント欄でお知らせください。
-
Samsung Galaxy S9徹底解説──スペック・価格・カメラなど知っておくべきすべて
長い待ち時間の末、ついにそのベールが脱がれました。サムスン電子のフラッグシップスマートフォン「Galaxy S9」と「Galaxy S9+」が、スペイン・バルセロナで開催されたMWC 2018(Mobile World Congress)にて正式発表されたのです。 Galaxyシリーズの最新フラッグシップとして登場した本機は、先代モデルから大きく進化を遂げています。この記事では、Samsung Galaxy S9について知っておくべきポイントを、初心者にもわかりやすくすべてまとめました。 Samsung Galaxy S9/S9+の主なスペック ディスプレイ:5.8インチ/6.2インチ、2
-
知っておきたい Android Q の注目新機能 7 選
もう良いニュースをお聞きになりましたか?Googleが最新のAndroidバージョン「Android Q」の開発者向けベータ版「Android Q Beta 1」を正式に公開しました。名称の通り、これはあくまでベータ版であり、一般ユーザー向けの正式版は今年8月中旬頃に提供される予定です。しかし、ここで嬉しいサプライズがあります。実はほとんどのユーザーがベータプログラムに登録でき、Pixel端末でいち早くAndroid Qを体験できるのです。Android Qには魅力的な機能が多数搭載されており、期待せずにはいられません。ベータ版のため、今後新しい機能が追加されたり、一部の機能が削除されたりする