LoginSignup
21
22

【Linux】Linuxコマンドまとめ

Last updated at Posted at 2022-10-04

概要

Linuxを勉強していてこれだけは覚えたほうがいい基本的なコマンドについてまとめてみました。
Linuxの基本的な知識については過去の記事にあるので是非そちらも参照してみてください。

ショートカットキーについて 『Mac』

Linuxは、MacOSやWindowsOSと違ってキーボードだけで操作するCLI環境になります。
コマンドは、キーボードから文字列として入力し実行することになるので、まずはキーボード操作が楽になるショートカットキーについてまとめていきます。

bash
$ echo Hello

$はプロンプトといいます。シェルがコマンドの入力を待っているという意味です。
プロンプトの後ろの方に入力してある<echo Hello>の部分をコマンドラインといいます。コマンドを入力する場所です。

ではよく使うショートカットキーを下記表にまとめていきます。

ショートカットキー 説明
左右矢印キー カーソル移動、一文字ずつ移動することができる 
Ctrl + a 行頭に直接移動
Ctrl + e 行末に直接移動
Esc押してからb 単語単位で一つ前に移動
Esc押してからf 単語単位で一つ後ろに移動
Ctrl + w 一単語丸ごと削除
Ctrl + k カーソル位置から行末までを削除 カット
Ctrl + u カーソル位置から行頭までを削除 カット
Ctrl + y 最後に削除した内容を挿入する  ヤンク

トラブル時には

キー操作をしてコマンドを入力していると、何らかの拍子にキーボードからの操作を受け付けないとか、プロンプトが返ってこなくなる時があります。、、、、僕もありました。

ほとんどが単純なキー操作ミスによるものです。Ctrl + sを押してしまうと上記のような事が発生してしまいます。これは画面をロックする時に使います。ctrl + qを押せばこのロックは解除できます。

ショートカットキー 説明
Ctrl + s 画面をロック
Ctrl + q 画面ロック解除

コマンドが終了せずに、プロンプトが返ってこない

Linuxの一部のコマンドには実行した後、終了操作をしない限り、動き続けるコマンドがあります。
このようなコマンドはプロンプトが返ってこないので自分で終了させないといけません。
実行中のコマンドを強制終了させるには、Ctrl + cを入力します。

bash
$ ping 192.168.2.67
64 bytes from 192.168.2.67: icmp_sep=1 ttl=64 time=0.016 ms
64 bytes from 192.168.2.67: icmp_sep=1 ttl=64 time=0.016 ms
^C  ⇦ここでCtrl + cを入力した

上記の例では、pingというコマンドを実行しています。このコマンドは一秒に一回の確認を永遠に続けるため、Ctrl + cを押して強制終了させました。

このようにシェル上ではCtrl + cの入力を^記号で表現してくれます。
 
また、コマンドラインの途中まで入力したとこで入力内容の誤りに気がついたときは、ctrl + cを入力する事で、入力内容を破棄して新しいコマンドラインに移る事ができます。
 

bash
$ echo Hello ⇦最初から入力し直すために、Ctrl + cを入力
$        ⇦入力内容が破棄され、新しいコマンドラインになった

補完機能

CLI環境でコマンドを実行するには、コマンドをキーボートから入力しなければなりません。
しかし、長いコマンドを毎回入力するのは大変なのでbashというシェルにはコマンド入力の手間を省く補完機能というものが備わっています。

bashの補完機能は、Tabキーを押す事で使用できます。

bash
$ ec  ⇦ここでTabキーを押すと
$ echo  ⇦echoと自動表示される

ちなみに複数候補がある場合は、警告音が鳴るのみでシェル上には何も変化が起こりません。
ここでさらにもう一度Tabキーを押すとコマンドの一覧リストが表示されます。

コマンド履歴

Linuxを使っていると、以前実行したことのあるコマンドラインを再び実行したいときがあります。
また、以前のコマンドラインを少し修正したいといった場面も出てきます。

bashというシェルは一度入力したコマンドラインの内容を自動的に履歴として記録しています。

コマンド 内容
Ctrl + p,または上矢印キー 一つ前のコマンドラインを表示 
Ctrl + n,または下矢印キー 次のコマンドラインを表示

ディレクトリの移動

ディレクトリ移動と確認のコマンドについて

コマンド 機能
pwd カレントディレクトリを表示する
cd カレントディレクトリを変更する
ls ディレクトリの内容を表示する

pwdを入力する事で自分が今どこのディレクトリ(カレントディレクトリ)で作業しているのかが表示されます。

$ pwd
 /home/abcd  ⇦現在の自分の位置

cdを入力する事でカレントディレクトリを変更する事ができます。ディレクトリを移動するという事です。

$ cd /usr  ⇦/usrディレクトリに移動

上記のようにコマンドの後ろにスペースを開けて指定する文字列(上記の例なら/usr)のことをコマンドライン引数といいます。

正しく移動できたかどうかは先ほどのpwdで確認します。正しく移動できていれば下記のように表示されます。

$ pwd
 /usr   ⇦usrディレクトリに移動できた

引数をつけずにcdコマンドを実行すると、ホームディレクトリ(ログイン時のディレクトリ)へ移動します。

$ cd
$ pwd
 /home/abcd

絶対パスと相対パス

カレントディレクトリの直下のサブディレクトリには/をつけなくても移動できますが、もし、カレントディレクトリからみて離れているディレクトリに移動する時は絶対パスまたは相対パスで指定してあげないといけません。
 
絶対パスはルートディレクトリを起点としてファイルやディレクトリのパスを示す事です。
 ディレクトリが深い位置にある時は、長い文字列となり不便です。

相対パスはカレントディレクトリを起点として表されるパスのことです。

少しややこしいですが、下記表で説明していきます。
例・・・/の下にhome→abcd→work というディレクトリ構造があったとします。
    そしてworkディレクトリの中にはfile1というファイル、abcdディレクトリの中にはfile2というファイルがあるとします。
    カレントディレクトリ(現在の位置)はabcdだとします。

相対パス 絶対パス
../.. /
.. /home
. /home/abcd
workまたは./work /home/abcd/work
work/file1または./work/file1 /home/abcd/work/file1
file2または./file2 /home/abcd/file2

[.]はカレントディレクトリを示しています。
[..]はひとつ上のディレクトリを示しています。../../../../とすれば4つ上のディレクトリを指す事ができます。

Linuxにおいて相対パスと絶対パスの理解はかなり重要です。

lsコマンド

lsコマンドは、ファイルやディレクトリを一覧表示するためのコマンドです。
引数を指定しない場合、カレントディレクトリのファイルとディレクトリを表示します。また、引数にディレクトリを指定すると、そのディレクトリに含まれるファイルやディレクトリを表示します。

$ ls /   ⇦ルートディレクトリ(最上層)の内容を指定
 bin dev home lib64 mnt proc run srv tmp var
 boot etc lib media opt root sbin sys usr

lsコマンドはディレクトリの中身を示すもので、ファイルを引数に指定した場合、そのパスを表示してくれます。

$ ls /bin/cp  ⇦ファイルを引数に指定
 /bin/cp   ⇦パスを表示

引数は複数指定することも可能です。この場合スペースで区切って指定しましょう。そうすると指定された引数全てに対して処理を行なって表示してくれます。
下記例では/と/usr、二つのディレクトリの内容が表示されています。

$ ls / /usr  ⇦スペースで区切って複数指定
 /:
 bin dev.........
 /usr:
 bin games lib........

*(アスタリスク)と?(クエスチョン)について

lsコマンドの続きになりますが、いちいち全てのファイルを引数に並べるのは大変です。
そこでbashシェルには複数のファイルを指定するパス名展開という機能があります。
*は任意の文字列を表し、?は任意の一文字を表します。

例えばbaで始まるファイルを一覧表示したい時は、下記のようにba*と指定します。

$ ls ba*
 base64 basename bash bashbug bashbug-64  ⇦baから始まるファイルが表示された

例えば?を利用して4文字のファイルを表示したい時は、下記のようにba??と指定します。

$ ls ba??
 bash  ⇦4文字のファイルが表示された

なおここで紹介したパス名展開は、lsコマンド特有のものではなくて、シェルの機能なので他の全てのコマンドでも利用する事ができます。

lsコマンドのオプション

ほとんどのコマンドは、コマンドライン引数に、ーではじまる追加の引数を指定する事ができます。これをオプションといいます。
Linuxのコマンドは、オプションを指定する事でデフォルトとは違う動きをするようになります。
 
例えば-Fをつける事でファイルの種類を表示してくれます。

$ ls -F
 bin@ dev/ home/ lib64/ mnt/ proc/ sbin@  ⇦後ろに記号がついて種類を表示している

・-Fオプションで表示されるファイル種別

種類 記号
通常ファイル なし
ディレクトリ /
実行可能ファイル *
シンボリックリンク @

mkdirコマンド ーディレクトリを作成ー

新しくディレクトリを作成するには、mkdirコマンドを使います。

$ mkdir  work  ⇦workというディレクトリを作成

$ ls -F ⇦作成できているか確認
 work/ ⇦作成できている

なお、既に同名のディレクトリが存在する場合、作成は失敗します。

ー深いディレクトリを作成するー

何階層もある深いディレクトリを作成するには、例えば$ mkdir report/2022/10と指定します。
しかし、指定したパスの途中のディレクトリが存在しない場合、mkdirコマンドはエラーとなってしまいます。

一気にディレクトリを作成したい時は、存在しないディレクトリも含めて作成する事ができる-pオプションを使います。

$ mkdir -p report/2022/10  ⇦こうすれば、report,2022というディレクトリを事前に作成しなくても10を作成できる

touchコマンド ーファイルを作成ー

touchコマンドは、引数で指定した名前のファイルを作成することができます。
複数のファイルを作成したい時はスペースで区切って入力してください。

$ touch file1 ⇦ファイル作成

$ ls -F  ⇦ファイルが作成できているか確認
file1

touchコマンドは、既存の名前のファイルを作成しても、内容が上書きされたり削除されたりしないため安全です。

rmとrmdirコマンド  ーファイル・ディレクトリの削除ー

ファイルの削除にはrmコマンドを使います。

$ ls   
file1  ⇦ファイルが存在する

$ rm file1  ⇦ファイル削除

$ ls  
$    ⇦ファイルが削除されている

スペースで区切る事で、複数のファイルを削除することもできます。
しかし、rmコマンドでディレクトリを削除しようとするとエラーが出ます。

そこで-rオプションをつける事でディレクトリも削除する事ができるようになります。この際ディレクトリ内にあるファイルやディレクトリも一緒に削除されてしまうので注意が必要です。

$ rm -r work  ⇦workというディレクトリを削除、work内のファイル、ディレクトリも削除される

MacOSなどは、削除しても一旦ゴミ箱に入るため元に戻すことができるのですが、Linuxではrmコマンドを実行すると本当に削除されてしまうので実行前には細心の注意が必要です。
そこで、-iオプションをつける事で、本当に削除してもよいか確認を求めるようになります。
基本的にはrmを実行する時は-iオプションをつけたほうがいいと思います。

ー空のディレクトリを削除ー

rmdirコマンドは空のディレクトリを削除することができます。
rmとの違いは、中にファイルがあるディレクトリを削除しようとするとエラーが出る点です。

$ rmdir work  ⇦ディレクトリ削除、ここでworkディレクトリが空ではない場合エラーが出る

ちなみにLinuxでは、[.]が先頭についているファイルは隠しファイルとして認識されます。
rmdirを使う事で、隠しファイルに気づかず削除してしまうといったことを防ぐ事ができます。

catコマンド ーファイルの内容表示ー

ファイルの内容を確認するには、catコマンドを利用します。
下記の例は、touchで作成したfile1というファイルの内容を、catで表示したものです。

$ touch file1  ⇦ファイル作成

$ cat file1  ⇦ファイルの内容確認

$        ⇦中身がないので何も表示されない

catコマンドに限った事ではないですが、ファイルを指定しないで実行してしまうと、プロンプトが返ってきません。
そうなってしまったときは、Ctrl + dを押す事で解決します。

cpコマンド ーファイル・ディレクトリをコピーするー

ファイルをコピーするには、cpコマンドを使います。

$ cp <コピー元> <コピー先>  

下記例では、file1をfile2という名前でコピーしています。

$ cp file1 file2  ⇦file1をfile2という名前でコピー

$ ls -F  
file1 file2  ⇦file2が作成された

次は、コピー先にディレクトリを指定した場合です。コピー先にディレクトリを指定した場合、コピー元のファイルはそのディレクトリ内に同一ファイル名でコピーされます。

$ cp file1 work  ⇦file1をworkディレクトリにコピー

$ ls work
file1  ⇦コピーされた

なお、ディレクトリ内にファイルをコピーする時は、複数のファイルをまとめてコピーする事ができます。
下記例では、workディレクトリ内にfile1,file2,file3というファイルをコピーしています。

$ cp file1 file2 file3 work  ⇦3つのファイルをworkディレクトリにコピー、引数の最後に指定したディレクトリにコピーされる

$ ls work
file1 file2 file3  ⇦コピーされた

cpコマンドは、コピー先のファイルが既に存在していたとしても、確認などせずそのまま上書きしてしまいます。
なお、-iオプションをつける事でコピー先ファイルが存在する場合本当に上書きしてもよいか確認されるようになるので、基本は-iをつけるようにしましょう。

cpコマンドでディレクトリをコピーしようとすると、エラーが出てしまいます。
そのため、ディレクトリをコピーする時は-rオプションを指定する必要があります。

$ cp work1 work2  ⇦これだとエラーが出る

$ cp -r work1 work2  ⇦-rをつける事でディレクトリをコピーできる

この際、上記のwork2ディレクトリが既に存在している場合、work1はwork2の中に名前を変えずにコピーされます。

mvコマンド ーファイルの移動・名前の変更ー

ファイルの移動には、mvコマンドを利用します。
mvコマンドは、移動先がファイルなのかディレクトリなのかで意味が変わ

移動元・移動先の両方がファイルの場合

$ mv file1 file2  ⇦移動元・移動先の両方がファイル

$ ls 
file2  ⇦file1がfile2という名前に変更された

上記のように両方がファイルの場合、file1がfile2という名前に変更されました。この場合、元のfile1は存在しなくなります。

移動先がディレクトリの場合

$ mv file1 work  ⇦file1をworkディレクトリに移動

$ ls work  
file1  ⇦移動した

このとき移動先のファイルが既に存在している場合、確認なしに上書きされてしまいます。なのでcpコマンド同様、-iオプションをつけることをお勧めします。

ディレクトリを移動させる場合

この場合は、移動元にディレクトリを指定するだけでそのディレクトリの下にあるファイルもまとめて移動する事ができます。

lnコマンド ーリンクを張るー

lnコマンドは、リンクを張るコマンドです。

リンクとは

ファイルには別名をつける事ができます。この機能をリンクと呼び、別名をつけることをリンクを張るといいます。
リンクにはハードリンクとシンボリックリンクの2種類があります。

・ハードリンクを作成

$ ln file1 file2  ⇦ハードリンクfile2を作成

$ ls
file1 file2  ⇦file2が作成できた

このようにすることで、別のコマンドからfile2を指定すると、元のfile1にアクセスする事ができます。
では、今作ったハードリンクにアクセスしてみます。

$ cat file2
.......file1の内容が表示される

このようにハードリンクというのは、1つのファイルに複数の名前をつける機能です。

ハードリンクを持つファイルの実体は、全てのハードリンクが削除されたときになくなります。

・シンボリックリンクの作成
lnコマンドに-sオプションをつける事で作成する事ができます。

$ ln -s file1 file2  ⇦シンボリックリンク作成

$ ls -l
file1
file2→file1  ⇦このようにどのファイルを示しているかがわかる

このようにシンボリックリンクとは、リンク先のパス名が書かれた小さな特殊ファイルです。

エイリアス

lsなどのコマンドは、ファイル種別を表示する-Fオプションなどがよく使われます。しかし、毎回毎回-Fオプションをつけるのはなかなか面倒だと思います。そこで、aliasコマンドを利用することでlsと入力するだけでls -Fが実行されます。

$ alias ls='ls -F'  ⇦エイリアスの設定

$ ls /
bin@ dev/ home/ lib64@ mnt/ proc/ run/ srv/ tmp/ var/  ⇦lsと実行するだけでファイル種別表示

上記のように、エイリアスというのはわかりやすい別名を与えて、コマンドを使いやすくする機能のことです。

lsコマンドでは、このほかにも次のようなエイリアスが使われます。
alias la='ls -a' ⇦全てのファイルを表示するという、laコマンド作成

alias ll='ls -l' ⇦ファイルの詳細情報を表示するという、llコマンドを作成

エイリアスの確認

コマンドがエイリアスなのかどうか確認するには、typeコマンドを使用します。

$ type ls
lsは'ls -F'のエイリアスです  ⇦lsがls -Fのエイリアスになっている事がわかる

$ type cp
cpは/bin/cpです  ⇦エイリアスではないので、実行ファイルが表示される

エイリアスの削除

エイリアスを削除するには、unaliasコマンドを使います。引数に削除したいエイリアス名を指定する事で削除する事ができます。

$ unalias ls

エイリアスを一時的に無効にする

一時的に何もオプションを付けずに元のコマンドのまま実行したい時があります。一時的に無効にする方法はいくつかあります。
まずは、コマンドをフルパスで指定する方法です。

$ /bin/ls 

次はコマンドの前にcommandを追加する方法です。commandの後ろに指定したコマンドはエイリアスとはみなされません。

$ command ls

次はコマンドの前に\(Macの場合option + ¥キー)を追加する方法です。1文字追加するだけでいいのでこれがおすすめです。

$ \ls

                              
 

21
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
22