Linuxで使えるコマンドまとめ

catコマンド

catコマンドはファイルの内容を表示したり、複数のファイルを連結するコマンド

cat [option] filename
オプション 意味
-n すべての行に行番号をつける
-s 連続した空行を圧縮する
-b 空行以外に行番号をつける

例えば、以下のような.txtファイル(テキストファイルがあったとき)

sample.txt
hello

world
linux
ubuntu
command

次のようにすると

cat sample.txt

sample.txtの内容がそのまま表示される

行数も表示したいなら

cat -n sample.txt

これで得られる結果が

     1  hello
     2  
     3  world
     4  linux
     5  ubuntu
     6  command

これ。

から行に行番号をつけたくないならbオプションを使って

cat -b sample.txt

これの結果は以下の通り

     1  hello

     2  world
     3  linux
     4  ubuntu
     5  command

複数のファイルを連結したいなら以下のように書ける

cat filename1 filename2

上で使ったsample.txtと新たに以下の内容のtest.txtを連結し新たにIT.txtというファイルを作りたいとき

test.txt

このようにする

cat sample.txt test.txt > IT.txt

 標準入出力のリダイレクション

タイトルだけ見たらなんじゃこりゃ!!ってなりそうだけど、実は結構簡単

そもそも標準入出力とは標準入力がキーボードから入力されることで、標準出力が画面に表示すること

 <

この記号は標準入力をキーボードからファイルに切り替えるもの

もっと簡単に言うなら、「キーボードから入力された情報じゃなくて、ファイルの内容を使うよ」というもの

例えば以下のようなtxtファイルがあったとき

number.txt
 1+2+3+4

電卓みたいに計算してくれる「bc」コマンドを以下のように使うと

bc < number.txt

結果が「10」と表示される
ちなみに標準入出力のリダイレクションを使わないで書く以下のようにbcコマンドを一度呼び出して計算式を入力することと同じ

bc[enterを押す]
1+2+3+4

ただキーボードから入力された情報を使うか
ファイルの内容を使用するかの違い

 >

こっちは標準出力のリダイレクションですごく簡単

ざっくり言えば「結果を表示しないで、別のファイルの内容にするよ」というもの

ちなみに>>にするとファイルの最後に表示結果を連結するので
さっきやったsample.txtとtest.txtの連結は以下のようにも出来る

cat test.txt >> sample.txt

この方法だとIT.txtというファイルを作らなくてもファイルを連結できる

 <,>

リダイレクションを両方使い、標準入出力を一行で切り替えることもできる

それは以下のような形式をとる

command < input_datafile > output_file

これを踏まえてbcコマンド数式が入っているnumber.txt、その結果をresult.txtとして出力する方法は以下のようになる

bc < number.txt > result.txt

実はこんな便利なこともできる

 ls

lsコマンドは現在いる場所にあるファイルやディレクトリを表示してくれるもの

オプション 意味
-l 名前以外の詳しいデータも表示する
-a ファイル名の先頭が.のものも表示する
-t 最終更新が新しい順に表示します
-R サブディレクトリの下のすべてのファイルを表示する

これらを使った例を示すと

これでファイル名とディレクトリ名を表示できた
bash
ls

これで設定ファイルも表示できる

ls -a

実はコマンドを組み合わせることもできて-aと-Rを組み合わせてすべてのファイルを表示するのは以下のようにする

ls -aR

このように複数のオプションを組み合せることもできる

 cp

cpコマンドはファイルをコピーするコマンド
以下のような形式をとる

cp [オプション] [コピーしたいファイル] [コピー先]
オプション 意味
-i コピー先のファイルがすでに存在する場合上書きするか確認する
-R 再帰的(全部)にディレクトリの下のファイルをコピーする

これでcatの時使ったsample.txtsample2.txtとしてコピーする

cp sample.txt sample2.txt

たったこれだけ

 mv

mvはファイルをコピーではなく移動させるコマンド
以下の形式を取る
ちなみに名前の変更もできる

mv [オプション] [移動させたいファイル] [移動先]

オプションはcpで紹介した-iが有効、それ以外にも存在するが省略

さっき使ったtest.txtをホームディレクトリ直下のディレクトリに移動させるなら

mv test.txt ~/移動先ディレクトリ名

となる

ちなみにtest.txtの名前をtest2.txtにするなら以下のようになる

mv test.txt test2.txt

 rm

rmコマンドはファイルやディレクトリを削除するコマンド

オプション 意味
-r ディレクトリをまるごと削除するときに指定

test.txtファイルを削除したいなら

rm test.txt

となり、ディレクトリを削除したいときは

rm -r ディレクトリ名

となる

 rmdir

このコマンドはほとんどrmコマンドと大差無いがrmdirを使う場合消したいディレクトリが空である必要がある

 mkdir

これはディレクトリを作成するコマンド

例えばsampleというディレクトリを作るなら

mkdir sample

となる。またスペースで区切ることで複数のファイルを作成できる

mkdir sample sample2 sample3 ... sample10

みたいに

 cd

このコマンドはカレントディレクトリを移動するときに使う

例えばカレントディレクトリの直下にあるsampleというディレクトリに移動したい場合は

cd sample

となる

このコマンドにはもっと色々操作方法があってこれはぜひ覚えたい

操作 意味
cd ホームディレクトリに移動
cd 移動したいディレクト 移動したいディレクトリに移動
cd .. 一つディレクトリを戻る

 ps

プロセス状態を表示するコマンド

使用メモリ率やプロセスID、CPU利用率が表示される

 kill

指定したプロセスIDのプロセスを終了させるコマンド

kill [終了させたいPID]

 grep

このコマンドについては長くなるので、ここを参照

 sort

ソートコマンドは、そのままの意味で入力ファイルの並び替えを行う

オプション 意味
-r 逆順に並べる
-n 数値を昇順にして並べる
-f 大文字小文字区別なく並べる
-k フィールドの場所(何列目か)を指定する

例えば以下の内容のテストの点数と名前が含まれているstudent.txtが存在した時に

student.txt
80 John
19 Alex
65 Max

点数順にソートするなら

sort -n '^[0-9][0-9]' student.txt

出力は以下のようになる

19 Alex
65 Max
80 John

-rオプションを使うと

sort -nr student.txt

以下のようになる

80 John
65 Max
19 Alex

また二列目にある名前順に並べたいなら以下のようになる

sort -fk 2 student.txt

結果は以下のようになる

19 Alex
80 John
65 Max

 head

このコマンドはファイルの上から10行を表示する機能をもつ
また-nオプションをつけてスペース区切りで数値を入れることでその数の分だけ行を表示する

head sample.txt -n 3

これで上から3行目まで表示できる

つまりこう画面にでる

hello

world

 tail

このコマンドはheadと真逆のことをする。つまりファイルの最後の行から10行表示する。
これも-nオプションとスペース区切りで数値を渡すことで任意の行数だけ最後の行から表示できる

tail sample.txt -n 2

これで最後から2行目までを表示する

つまりこう画面にでる

ubuntu
command

 パイプ

パイプとは|←これのことでl(エル)ではなく¥のキーをshiftキーと共に押したときに出るヤツ

これはすごく便利でパイプの前にあるコマンドの標準出力をパイプの後にくるコマンドの標準入力として渡せる
こんなクソみたいな説明じゃわかりにくいので実例を踏まえて

cat -n sample.txt | head -n 3

これやると以下のような表示がでる

     1  hello
     2  
     3  world

こうなるに至った過程をざっくり説明してみる

以下(´・ω・`)をcatコマンド、(・。・をパイプ、(*´∀`)をheadコマンドとする

(´・ω・`)「sample.txtに行数つけて表示するぜぇ!!」

(・。・「ちょっとheadに横流しするわ」

(*´∀`)「それを上から三行だけ表示っ!!」

みたいなかんじです

 これは大して覚えなくてもいいけど知ってたら便利

 pwd

これはカレントディレクトリの場所を最初っから表示してくれるやつ

 man

これはオンラインマニュアルを表示してくれるやつ
でも大抵、[コマンド名] --helpのほうが便利