いづいづブログ

アジャイルコーチになりたい札幌在住SEです。アジャイル札幌スタッフ&ScrumFestSapporo実行委員。Like:パクチー/激辛/牡蠣/猫/初期仏教

Linuxのコマンド一覧

Linuxのコマンドを勉強してブログに書いているうちに1ヶ所にまとめたくなってきたので、ちょっとずつここに集約していきます。(気が向いたら順番も整理します)

ls

lsは「list segments」の略で、分類して表示することを表す。

自分が作業しているディレクトリにどんなファイルやディレクトリが存在するのかを表示する。

$ ls

実行結果

f:id:izumii-19:20181119082549p:plain:w400

自分がよく使うオプションは以下の通り(これから増えるかも)。

オプション -l

-lオプション*1をつけるとファイルやディレクトリの詳細情報*2も表示してくれる。

f:id:izumii-19:20181119082923p:plain:w400

オプション -a

-aオプションをつけると隠しファイルや隠しディレクトリを表示することができる。

下の画像で、上の行はlsを実行した例、下の行はls -aを実行した例。

上の実行結果には表示されていないファイルが、下のls -lを実行すると隠しファイルが表示されている、

f:id:izumii-19:20181119083029p:plain:w400

pwd

pwdは「Print Working Directory」の略で、今いるディレクトリのパスを表示する。

$ pwd 

実行結果

f:id:izumii-19:20181119082647p:plain:w300

cd

cdは「Change Directory」の略で、引数に指定したディレクトリにワーキングディレクトリを移動する。 cd ..で1つ上の階層に移動できる。

$ cd {ディレクトリ}

実行結果

f:id:izumii-19:20181119084946p:plain:w300

mkdir

mkdirは「make directory」の略で、新しくディレクトリを作るコマンド。ディレクトリ名は文字化け防止などの点から英語推奨。

$ mkdir {ディレクトリ名}

実行結果

$ mkdir aaa

f:id:izumii-19:20181017233706p:plain:w300

rm

rmは「remove」の略で、ファイルやディレクトリを削除する。

$ rm {ファイル名|ディレクトリ名}

実行結果

$ rm foo

f:id:izumii-19:20181017234949p:plain:w300

cp

cpは「copy」の略で、ファイルやディレクトリをコピーする。

この他に「ファイル名は変えずにそのままコピー」など色んなパターンがある。ここに詳しく載っている。

$ cp {コピー元} {コピー先}

実行結果

TODO実行結果を貼る

mv

mvは「move」の略で、ファイルを移動したり、ディレクトリやファイルの名前を変更したりする。

ファイルの移動

$ mv {移動させるファイル} {移動先}

ディレクトリ名、ファイル名の変更

$ mv {名前を変えるディレクトリ名} {新しいディレクトリ名}
$ mv {名前を変えるファイル名} {新しいファイル名}

実行結果

ファイル移動

touch boo
mv boo aaa

f:id:izumii-19:20181017234546p:plain:w300

curl

curlは「Client for URLs」の略で読み方は「カール」*3

HTTPアクセスをしてコンテンツを取得、もしくはサーバーへデータを転送できるコマンド。コンテンツの取得に関してはwgetでも同じようなことができる*4

$ curl {URL}

実行結果

f:id:izumii-19:20181119224750p:plain

追記:2018/11/28

URLにクエリを追加して指定する場合にハマったので気をつける。

touch

touchは空のファイルの作成するコマンド。ファイル名にすでに存在するファイル名を指定した場合は、ファイルの日付だけを更新することができる。

$ touch {ファイル名}

実行結果

$ touch foo

f:id:izumii-19:20181017233214p:plain:w300

cat

catは「concatnate」の略で連結するという意味。ファイルまたは標準入力の内容をそのまま標準出力に出力するコマンド。または複数のファイルを指定することでファイルを連結することもできる。

入力の全部ではなく先頭の部分のみを出力したい場合はheadコマンドを、最後の部分のみを出力したい場合はtailコマンド、入力の全部をターミナル上でスクロールしながら見るにはlessコマンドを使う。

$ cat {ファイル名}

実行結果(count.sh とtest.sh 2つを指定)

f:id:izumii-19:20181119225553p:plain:w300

adduser

adduserは一般ユーザーを追加するコマンド。コマンドが実行できるのはrootユーザーのみ。

-gオプションでグループ指定や、-uオプションでユーザーIDの指定ができるが、省略するとユーザー名とグループ名の両方が同じ名前になる。

# adduser {ユーザー名}

passwd

パスワードの設定や変更を行う。コマンドが実行できるのはrootユーザーのみ。 ユーザー名を指定するとパスワードの入力を促されるので2回入力する。

# passwd {ユーザー名}

userdel

一般ユーザーを削除する。コマンドが実行できるのはrootユーザーのみ。 rオプションをつけるとユーザーのホームディレクトリも一緒に削除してくれる。

# userdel -r {ユーザー名}

echo

echoは「こだま、反響」という意味略で、コマンドの後ろに引数として表示したい文字列や数値、変数を指定すると画面に出力する。

$ echo {出力したい文字列}

実行結果

f:id:izumii-19:20181119084004p:plain:w300

変数の中身を表示するには

このように文字列じゃなく変数の中身を表示することもできる。先頭に$をつけると変数として解釈される。

echo ${変数名}

実行結果

f:id:izumii-19:20181119084408p:plain:w300

uname

unameはシステムの情報を表示するコマンド。

$ uname

実行結果

f:id:izumii-19:20181121235326p:plain:w300

hostname

hostnameはホスト名の設定と表示を行うコマンド。rootユーザーで実行する。

# hostname

実行結果

f:id:izumii-19:20181121235934p:plain:w300

uptime

uptimeはシステムがどのくらいの間、連続して稼働しているかを表示するコマンド。

# uptime

実行結果

f:id:izumii-19:20181122000241p:plain:w300

ps

現在動作しているプロセスを表示するタスクマネージャー。

pstreeはツリー表示で、psは一覧表示。psはオプションをつけることで表示する情報を増減することができるが、一般的にはauxオプション全部組み合わせてps auxとして使用することがほとんどなので丸暗記してもいいくらい。

psコマンドの引数はたくさんあるので、よく使うものだけを抜粋した。

コマンド 内容
ps psコマンドを実行した端末のプロセスだけを表示
ps a 端末を持つ全てのプロセスを表示
ps x 端末を持つプロセスのほかにデーモンプロセス
(=端末をもたないバックグラウンドで動作するプロセス)*5も表示。
つまり現在実行しているプロセス全てを表示する。
ps u CPUやメモリの使用率、ユーザー名なども表示

実行したときに表示されるPIDはプロセスIDというユニークなIDでこれでプロセスを特定できる。

Linux起動後にプロセスが実行されたものから順番に番号が振られている(先に起動したもののほうが番号が小さい)。

psのオプションは主に「どのように表示するか」と「何を表示するか」のオプションに分かれる。

そして紛らわしいけど「-u」と「 u」では 意味合いが違うので注意(-u ユーザー名でユーザ指定して表示。uはCPUやメモリの使用率、ユーザー名など表示項目を指定するオプション)。

参考:

eng-entrance.com

date

dateはシステムの日付と時刻を表示および設定するコマンド。引数なしでdateコマンドを実行すると現在の日付と時刻を表示する。

設定を行う場合、コマンドはrootユーザーで実行する。

ネットワーク接続されている場合には,インターネット上の時計サーバーから正確な時刻を受け取るntpdateコマンドを推奨。

またLinuxではハードウエア・クロックも同時に更新する必要があり、この設定にはhwclockコマンドを利用する。

$ date

実行結果

f:id:izumii-19:20181122001801p:plain:w300

whoami

whoamiは「who am i」の意味で、現在のユーザーIDに対応するユーザー名を表示するコマンド。

$ whoami

実行結果

f:id:izumii-19:20181122002526p:plain:w300

last

lastは最近ログインしたユーザーのリストを表示するコマンド。

$ last

実行結果

f:id:izumii-19:20181122002406p:plain:w300

tar

tarは「tape archieves」の略で、複数のファイルを1つにまとめたアーカイブファイルを作成/展開するコマンド。

アーカイブは「書庫」という意味で、複数の関連するファイル群をまとめて保管したり、配布したりする際に使用する。tarコマンドのアーカイブはファイルの圧縮は行わずにファイルを1つにまとめるだけである。

アーカイブファイルの作成

$ tar -cvf アーカイブ.tgz 対象ファイル

アーカイブファイルの展開

$ tar -xvf アーカイブ.tgz

gzip

gzipは「GNU zip」の略で、データ圧縮するコマンド。GNUというプロジェクトによって開発・メンテナンスされているので「GNU zip」。

UNIXLinuxでは.tar形式のアーカイブファイルを作成した後に.gz形式で圧縮されることが多い。従ってこの場合「.tar.gz」とか「.tar.z」といった拡張子が付けられることになる。

ファイルの圧縮

$ gzip 対象ファイル

圧縮ファイルの展開

$ gzip 圧縮ファイル.gz

実際には「tarコマンドでアーカイブを作成して、gzipコマンドで圧縮…」なんてことはやらず、tarコマンドにzオプションを指定することで同時に圧縮/解凍も同時に指定することが可能。

ファイルをtar形式アーカイブにして圧縮する

$ tar -cvfz peace.tar.gz *txt

tar + gzipされたアーカイブを解答・展開する

$ tar -xvfz peace.tar.gz

*1:「l」はlongという意味で、longというだけあって詳細を表示すると横長になる。

*2:詳細情報:ファイルタイプ、パーミション、ハードリンクの数、オーナー名、グループ名、バイトサイズ、タイムスタンプ、ファイル名

*3:「シーユーアールエル」だと思ってた。

*4:厳密には違いがあるらしいけど今はよくわからないので詳しくは触れない。触れられない。

*5:主にバックグラウンドで動作するプロセス。典型的なデーモンは名前の最後尾に "d" が付く。例えばsyslogd はシステムログを扱うデーモン、sshd は内外のSSH接続要求を受け付けるデーモンである。名前は悪魔の「demon」ではなく守護神の「daemon