私が最初にコンピュータを触ったのが20年前のUNIXでした。
そのころからコマンドには慣れ親しんだものですが、昨今はWindowsメインのため久しぶりにコマンドを触ってみました。
今日はLinuxコマンドで頻繁に使うものを詳しくお伝えしたいと思います。忘れた時とか参考にしてもらえたらと思います。
あと初心者がLinuxコマンドに初めて触れる場合も、以下の流れで進めていけば学習できるようになっています。
現在のディレクトリを表示「pwd」
まずは「pwd」。これは自分が今いるディレクトリを表示するコマンド。
/home/happi
というディレクトリにいることを表しています。
ファイルの一覧を表示「ls」
これは今見ているディレクトリの中のファイルを表示するリストというコマンド
実はいまLinuxコマンドを叩いてるのは、Windows Subsystem for LinuxというモノをインストールしてWIndows上で実行しています。
上に見えてるのがWindowsのエクスプローラで、Linuxと同じディレクトリの中を見ています。
下に見える黒いウィンドウがLinuxのターミナルですね。
「ls」コマンドを打ちました。今いるディレクトリの中は全て隠しファイルなのでlsコマンドだけだとファイル一覧が出てきません。
そこで次に「ls -a」を入力したところ、隠しファイルを含めてすべてのファイルが出ました。
このようにコマンドに続けて ハイフンオプションを付けると、コマンドを補足してくれるものもあります。
他には「ls -l」コマンド。これはリストを横並びでなく縦並びで詳細に表示してくれます。
「ls -l」だけだと隠しファイルが出ないので、「a」もつなげて。「ls -la」としています。
マニュアルを表示する「man」コマンド
「man」に続けてコマンド名を入れます。「man ls」とか。
そうするとlsコマンドの詳細な使い方が表示されます。
manコマンド自体ののマニュアルを表示するには「man man」になるわけです。
ターミナルを綺麗にする「clear」
ターミナルを使いすぎて縦長になったり、ごちゃごちゃしてきたら「clear」コマンドの出番です。
このように綺麗になります。
ターミナル上でエディタを開く「nano」
Windowsで言えばメモ帳のような存在。
「nano ファイル名」とやれば、そのファイル名でエディタが開きます。(開くというかターミナルがエディタになる)
ローマ字も日本語も入力できる。^はコントロールキーのこと。Ctrl+Oで保存。終了はCtrl+X。
これでファイルが生成されます。
ファイルの中身を見る「more」
早速作成したmyfile.txtを見てみましょう。
「more ファイル名」で見ます。
ファイルの中身を見る「less」
「less ファイル名」コマンドでもファイルの中身を見れます。終了するには「q」キーを押します。
lessコマンドだと長~いファイルの時とかに使いやすいです。↑↓キーでファイルの中を戻ったり進んだりして見れるので。
フォルダ(ディレクトリ)を作成する「mkdir」
Windowsだとフォルダと言いますが、Linuxだとディレクトリと呼びますね。
「mkdir ディレクトリ名」で作成できます。
作業場ディレクトリを移動する「cd」
チェンジディレクトリーの略。作業場を作成したmydir1へ移動してみましょう。
「cd mydir1」です。
1個上のディレクトリに戻るには「cd ..」とします。
2個上のディレクトリに戻るには「cd ../..」になるわけです。
どこにいてもホームディレクトリに戻るには「cd」を使います。
ファイルやディレクトリを削除する「rm」
rmはリムーブの略ですね。「rm ファイル名」とすればファイルを削除できます。
「rm -i ファイル名」とすることで、ファイルを削除するまえに削除するかどうかを聞かれます。
これを習慣づけておくと、誤ってファイルを消してしまう可能性が低くなるでしょう。
「rm ディレクトリ」でディレクトリを削除することはできません。
ディレクトリを削除するときは「rm -r ディレクトリ名」とします。
ファイルやディレクトリを移動する「mv」
ファイルを移動するにはムーブコマンドです。
「mv ファイル名 移動先のディレクトリ名」とすればOKです。以下の例ではmyfile.txtをmydir2に移動しています。その後lsでmydir2の中にmyfile.txtがあることを確認しています。
もし移動先に同じファイルが名あったとしたら、上書き移動保存します。
そういったときに本当に削除しますか、とアナウンスを付けるコマンドは「mv -i ファイル名 移動先ディレクトリ名」とすることです。
mvコマンドを使えば、ディレクトリの移動もできます。
以下の例ではmydir1というディレクトリをgomiというディレクトリに移動しています。
ファイルやディレクトリの名前を変更する「mv」
mvにはもう1つの使い方があります。それは名前を変更するです。
「mv ファイル名 変更後のファイル名」
「mv ディレクトリ名 変更後のディレクトリ名」
とすればOKです。
この例は、ファイル名をnaiyo.txt→contents.txtに変更して、
ディレクトリ名sagyouba→mydir2へ変更しています。
ファイルやディレクトリをコピーする「cp」
ファイルをコピーするには、「cp ファイル名 コピー先フォルダ名」とします。
以下の例では、現在ディレクトリmydir2にあるmyfile.txtを、1つ上の階層「../」にコピーしています。上の階層に移動してlsで表示するとmyfile.txtがありますね。
ディレクトリをコピーするには、「cp -r ディレクトリ名 移動先のディレクトリ」とします。
以下の例はsagyoubaディレクトリをmydir1へコピーしています。ちなみにフォルダの中身ごとコピーします。
標準入力からファイルを作成する「cat」
「cat」はConcatenateの略で「連結する」を意味します。
けど、この使い方の方が多かったので、まずはこれから紹介。
「cat > ファイル名」
「cat > ファイル名」とやると入力を求められるので、何かしら文字を入力します。
その後、Ctrl+Cキーを押すと、終了します。
あとにはfile1.txtが作成されています。moreで中を見ると以下のように入力した文字が入ってますね。
本来の使い方は、2つのファイルの中身を連結して、画面上に出すというものです。
「cat ファイル① ファイル②」とやれば、
このように中身が連結されて画面に出ます。
ファイル①にファイル②を追記することもできます。
「cat ファイル② >> ファイル①」
アスタリスクを使ったテクニック
例えば今いるフォルダの中をlsで表示すると、こんなにファイルがあります。
そこで特定の文字列を含むファイルのみを出したい時とかに「*」を使います。
ここでは「ls *.doc」とやってます。これは末尾に.docを含む何でもいいからファイルを持ってきてくれ、という命令です。
「*me*」とやると、meを含むもの全て。になります。*の前後は何でも構わないという指示です。
コマンドの履歴を確認する「history」
「history」コマンドを使えば、これまで入力してきたコマンドの履歴を表示します。何の作業をしたか忘れた時とかに。
前のコマンドを探す↑キー
キーボードの↑キーを押すと、1個前に使ったコマンドが出てくれますよ。
ファイルを探す「find」
「find -name ファイル名」とすれば、ファイル名を探してくれます。 アスタリスク*を使って、似たようなファイル名を探すことも出来ますよ。
カレンダー「cal」と日付時刻表示の「date」
そのまんまですが。calはカレンダーを表示。dateは現在時刻を表示してくれます。
標準出力からファイルを作成する「>」
例えば「man ls」で出てきたlsのマニュアルの内容をすべてコピーして、新しくファイルを作ることができます。
「man ls > ファイル名」
こんな感じ。
これはプログラミングをしてる時にしばしば使います。例えばプログラムでターミナル上にエラーを表示させたり、自作の通過点出力や、途中の計算結果を表示させたいときってあります。
プログラムの中でエラーファイルを作成、オープン、書き込み、保存をやってもいいのですが。
面倒な場合は、「myprogramm.exe > error.txt」のようにしてプログラムを実行すれば、全ての出力がファイルに入りますので、あとから見るのに楽です。
実行中のコマンドを終了させるCtrl+C
先ほどもcatのところで出てきましたが、「Ctrl+C」を押せば実行中のコマンドを終了させることができます。
catでも自作プログラムでも。
以下の例はHello Worldを無限に表示するプログラムを停止したところ。
プロセスを表示する「ps」コマンド
現在実行中のプロセスを表示する。
「ps」だけでも表示されるけど、よく使ってたのは「ps -aux」。これで全部出る。
最初のうちは使いどころはほとんどありません。プログラミングを学習し始めたりするとpsの出番が出てくることがあります。それはバグって暴走して止まらなくなったプログラムを殺すときに、psコマンドでプログラム番号を確認して、killコマンドで殺すのに使います。
プロセスを終了する「kill」コマンド
前のpsの続き。「kill プロセスID」とすればそのプロセスを終了することができます。
ps -auxで、全てのプロセスを表示させ、./a.outのプロセスID 4065を指定して、「kill -9 4065」としています。オプションの-9は強制的に殺すコマンド。killだけで消せない場合は-9をつけて。
この例は前述の無限に出るHello Worldのプログラムを、別のターミナルから終了させています。
パイプ「|」でコマンドを繋げて「grep」で抽出する
パイプ「|」を使うと、コマンドの結果を次のコマンドに渡すことができます。
「ps -aux」でプロセスの一覧を表示しています。これだとrootユーザーが起動したプロセスと僕(happi)が起動したプロセスが表示されています。
その結果を「|」で次のコマンド「grep」に渡しています。grepは後に続く文字列でその行を抽出してくれるコマンドです。
「ps -aux | grep happi」ということで、僕(happi)が起動したプロセスだけを表示してくれました。
これもっとごちゃごちゃした出力を見やすくするときとか、欲しい情報を取りたいときにこそ使えると思います。
ターミナルを終了する「exit」
exitと入力すれば、この窓を閉じます。
ということで以上です!