Top research publication gallery research protocol
(in Japanese)
contact

Linux の代表的なコマンド

国立遺伝学研究所・スーパーコンピュータシステムの OS(Operating System)は、これまで使用されていた Cent OS 7 のサポート期間の終了(2024年6月)が近づいてきたため 2023 年度 12 月に Ubuntu へ更新されました。Cent OS は Red Hat Enterprise Linux 系の、Ubuntuは Debian GNU/Linux 系の OS で多少の違いはあるものの多くのコマンドは共通しています。 そこでは、Microsoft Windows OS や Apple Mac OS とは異なり、グラフィカル・ユーザインタフェースではなく、コマンドライン・インタフェースを用いています。そのため、初心者にとっては扱いにくいかもしれませんが、NGSデータのような大容量のデータ解析には便利な機能を持つ(かつ処理能力が高い)コマンドが数多く存在するので少し時間をかけてでも学ぶことが重要です。 以下では、データ解析に有用ないくつかの Linux コマンドを簡単に紹介します。実際にこれらのコマンドを実行し問題が生じた場合(ディスプレイに表示される内容が多すぎるなど)やコマンドの実行中において(時間がかかりすぎるなどで)停止したい場合は、CtrlとCを同時にタイプすることでコマンドを途中で終了することができます。また多くのコマンドで --version オプションを追加することでバージョン情報を、--help オプションを追加することでヘルプメニューが表示されます。 これらの利用方法の詳細は OS によってわずかに異なっているので、 man コマンドでそれぞれのコマンドのマニュアルを参照することが推奨されます。

コマンド [代表的なオプション] <指定する項目>
man <command>
指定されたコマンドのマニュアル( manual )を表示し、その使用方法やオプションを説明します。例えば man man ⏎ とタイプすることで man コマンドのマニュアルが表示されます。

cat [-n] <file>
指定されたファイルの内容を 標準出力(standard output すなわち stdout、通常の場合はディスプレイ画面)に表示します。複数のファイルが記載された場合、記載された順にファイルが結合( concatenate )され表示されます。同じようなコマンドに zcat がありますが、これは圧縮されたファイル( gz ファイルなど)を表示する場合に用いられます( gunzip -c と同義)。

(ワンポイント・アドバイス)cat コマンドを含め他のコマンドでもコマンドの最後に"> ファイル名"を追記することで その出力を stdout から指定したファイルに変更(リダイレクト)し、出力結果をファイルに保存することができます。ただし、ファイルの最後に改行がない場合は、改行されないままにファイルが結合されることには注意しておいてください。例えば、二つの FASTA ファイルを結合させようと cat した場合、最初のファイルの後に改行がなければ、最初の FASTA ファイルの最後の塩基配列と同じ行に、次の塩基配列のタイトルが続くことになるのでその後の解析に問題が生じます。

ls [-a] [-d] [-l] [-r] [-s] [-t] [-u] <directory> または <file>
ディレクトリが指定された場合、ディレクトリに収納されているファイルやディレクトリをリスト( list )として表示します。ファイルが指定された場合、そのファイル名が表示されます。一つのファイルを指定した場合、そのファイル名が表示されるだけなのでまったく意味がないように思えますが、ディレクトリ名やファイル名に?や*を含めることで、複数のディレクトリやファイルを指定しそれらのファイル名を表示することができます。ここで?は任意の1文字、*は任意の文字数として用いています。また様々な状況で ls -al を実行することがありますが(ディレクトリやファイルを指定しない)、その場合は現在のディレクトリの内容が表示されます。 -a オプション( all )ですべてのディレクトリやファイルを表示し(.で始まるディレクトリやファイルを含む)、-l オプション( long form )でディレクトリやファイルについてユーザ(すなわち所有者)、所有者が属するグループ、それ以外のユーザのファイルパーミッション(読出し read、書込み write、実行 execute 制限)、所有者、グループ、サイズ、作成された日時を表示することができます。

(ワンポイント・アドバイス)研究者が開発した解析プログラムをダウンロードするにあたって、稀にファイルのパーミッションが適切に設定されていないために実行できない場合があります。 コマンドを実行してもプログラムが動作しない場合は ls -l コマンドで、対象となるファイルにおいてパーミッションが実行可能(x)と設定されているかどうかを確認してみてください。パーミッションの変更は chmod コマンドで、またファイルの所属グループの変更は chgrp コマンドで可能です。これらのコマンドの利用方法については、man chmod や man chgrp で調べてみてください。

mkdir <directry>
指定されたディレクトリを新たに作成します(make directory)。

cd <directry>
現在使用しているディレクトリから指定されたディレクトリへと作業ディレクトリを変更します(change directory)。

pwd
現在の作業ディレクトリの場所(フルパスネーム)を表示します(pathname of working directory)。

rmdir <directry>
指定されたディレクトリを削除します(remove directory)。ただしディレクトリ内にファイルが存在する場合はエラーを表示します。

(ワンポイント・アドバイス)指定されたディレクトリに存在するファイルおよびそのディレクトリの下にあるディレクトリの内容をすべて削除するには rm -r <directiry> コマンドが利用できいます。一括削除するにあたっては、確認のためのメッセージが通常表示されますが、すべてのファイル・ディレクトリが一度に削除されるのでくれぐれも注意して実行すべきです。

head [-n number] <file>
ファイルの初めの10行(頭 head)を標準出力に表示します。 -n オプションで数字を記入することで、最初の指定した数の行を表示できます。

tail [-n number] <file>
ファイルの最後の10行(尾 tail)を標準出力に表示します。 -n オプションで数字を記入することで、最後の指定した数の行を表示できます。

more [-n number] <file>
指定されたファイルの内容を cat と同じように標準出力に表示します。ただし一画面ごとに表示を停止し、ユーザ入力を待ちます。ターミナル上(キーボード)でスペースバーが押されると、次( more )の画面を表示します。-n オプションで数字を記入することで、一画面に表示する行数を定めることができます。

less <file>
指定されたファイルの内容を catmore と同じように標準出力に表示しますが、次の画面のみが表示できる more に反し(よって less)様々なオプションが存在します。例えば d を押すと、次( down )の画面(デフォルトでは半分の画面分)が、u を押すと、前( up )の画面(デフォルトでは半分の画面分)が表示されます。

echo [-n] <arguments>
arguments として記載されたテキストを標準出力に表示します(よって、こだま・やまびこ echo )。 -n オプションでは最後の改行を表示しません。

ps [-a] [-l]
現在処理実行中のプログラムすなわちプロセス( process )の状態を表示します。 -a オプションで現在のターミナルと関連するすべて( all )のプロセスを、また -l オプションで詳細な形式( long form)で表示します。

kill <process>
指定された番号のプロセスを終了します。特定のプロセスの番号は上記の ps コマンドで確認できます。

(ワンポイント・アドバイス)特定のコマンドを実行するにあたり、ある程度時間を要することが事前に分かっている場合はコマンドの最後に を付加することでバックグラウンドで実行することができます。バックグラウンドで実行することで、同じターミナルでは次の作業を開始できます。バックグラウンドで実行しているコマンドを途中で中止するには kill コマンドを使用してください。

cp <file1> <file2> (または<directry>)
ファイル1をファイル2にコピー(copy)します。ディレクトリが指定された場合は、指定されたディレクトリ内にファイル(複数のファイルも可)のコピーを作成します。

mv
<file1> (または<directry1>) <file2> (または<directry2>)
ファイルまたはディレクトリの名前を変更あるいは移動( move )します。ファイル1とファイル2が指定された場合は、ファイル2がディレクトリ内に存在しなければファイル名の変更を、ファイル2がディレクトリ内に存在すればファイル2の上書きを行います。移動対象がファイル(すなわちファイル2)でなくディレクトリ(すなわちディレクトリ2)の場合は、ファイル1(またはディレクトリ1)をディレクトリ2に移動します。

rm [-f] [-r] <file> (または<directry>)
ユーザーが適切な権限を持っている場合、指定されたファイルを削除( remove )します。指定された複数のファイルを削除する場合は、個々のファイルの削除について yes/no で削除するか否かを問われますが、-f オプションが追加された場合は、そのような問はなく強制的に( force )ファイルを削除します。また-r オプションを追加しディレクトリを削除する場合は、指定されたディレクトリ内に存在するファイルおよびディレクトリを再帰的に( recursive )すべて削除します。

diff <file1> <file2>
ファイル1とファイル2の間の違い( difference )を標準出力に表示します。

grep [-n] [-v] <string> <file>
指定されているファイルのすべての行から指定された文字列(string)が存在する行を(正規表現に一致する行を)標準出力に表示します( global/regular expression/print)。-n オプションでは各行の出力の前に指定されたファイルでの行数も出力します。-v オプションでは指定された文字列が存在しない行を抜き出して( invert-match )標準出力に表示します

cut [-d <character>] [-f <number1>,<number2>,... ] <file>
各行から -f オプションで指定した番号の列( field )のデータを切り出し( cut )標準出力に表示します。各列を区切る文字が指定されていなければデフォルトで TAB (タブ)となりますが、区切り文字を変更したい場合は -d オプションで区切り( delimiter )を指定することができます。

sort [-n] [-r] <file>
ファイルの各行を ASSCII の文字コードに従い並び替える、いわゆるソート( sort ) を行います。-n オプションが指定された場合は、数字( number )は、その数の大きさの順(少ない数から大きな数へ)に並び替えられます。-r オプションが指定された場合は並び替える順番が逆( reverse )になります。

uniq [-n] <file>
ファイル内で前後する行を比較し、前行と全く同じであれば出力せず、固有のもの( unique )だけを出力します。-n オプションが追加された場合は、特定の行が何回繰り返されているかその数( number )を各行の前に出力します。

(ワンポイント・アドバイス)sort によって各行をソートした後に uniq -c を行うことで、それぞれ個別な行がファイル内で何回出現したかをカウントすることができます。この場合、パイプ(パイプライン)と呼ばれる作業を行うと、すなわち "|"(バーティカルバー)でコマンドをつなぐことで、最初のコマンドの標準出力を、それに続くコマンドの標準入力( standard input いわゆる stdin)とすることが可能です。例えば cat <file1> <file2> | sort | uniq -c とすると、最初に file1とfile 2 が結合され、その結合されたファイルのデータをソートし、そのソートされたデータから個別の行の出現回数をカウントすることが(一つのコマンドラインで)実施できます。

wc <file>
書各ファイル内の改行数、単語数、バイト数を計算し( word count )標準出力に表示します。



これらの他に、ファイル内の文字列の置換を行う sed コマンド、各行の文字列を調べ簡単な計算結果や条件付きでデータを出力する(簡便なテキストファイル処理プログラムである) awk コマンド、ファイル(あるいはディレクトリ)の圧縮を行う tar コマンドなどもありますが、これらについては、それぞれを利用する(初めての)機会で説明します。

© 2023 Research Center for Integrative Evolutionary Science, SOKENDAI (最終更新日 2023.12.19)