Linuxのコマンド一覧
Linuxのコマンドを勉強してブログに書いているうちに1ヶ所にまとめたくなってきたので、ちょっとずつここに集約していきます。(気が向いたら順番も整理します)
- ls
- pwd
- cd
- mkdir
- rm
- cp
- mv
- curl
- touch
- cat
- adduser
- passwd
- userdel
- echo
- uname
- hostname
- uptime
- ps
- date
- whoami
- last
- tar
- gzip
ls
lsは「list segments」の略で、分類して表示することを表す。
自分が作業しているディレクトリにどんなファイルやディレクトリが存在するのかを表示する。
$ ls
実行結果
自分がよく使うオプションは以下の通り(これから増えるかも)。
オプション -l
-l
オプション*1をつけるとファイルやディレクトリの詳細情報*2も表示してくれる。
オプション -a
-a
オプションをつけると隠しファイルや隠しディレクトリを表示することができる。
下の画像で、上の行はls
を実行した例、下の行はls -a
を実行した例。
上の実行結果には表示されていないファイルが、下のls -l
を実行すると隠しファイルが表示されている、
pwd
pwdは「Print Working Directory」の略で、今いるディレクトリのパスを表示する。
$ pwd
実行結果
cd
cdは「Change Directory」の略で、引数に指定したディレクトリにワーキングディレクトリを移動する。
cd ..
で1つ上の階層に移動できる。
$ cd {ディレクトリ}
実行結果
mkdir
mkdirは「make directory」の略で、新しくディレクトリを作るコマンド。ディレクトリ名は文字化け防止などの点から英語推奨。
$ mkdir {ディレクトリ名}
実行結果
$ mkdir aaa
rm
rmは「remove」の略で、ファイルやディレクトリを削除する。
$ rm {ファイル名|ディレクトリ名}
実行結果
$ rm foo
cp
cpは「copy」の略で、ファイルやディレクトリをコピーする。
この他に「ファイル名は変えずにそのままコピー」など色んなパターンがある。ここに詳しく載っている。
$ cp {コピー元} {コピー先}
実行結果
TODO実行結果を貼る
mv
mvは「move」の略で、ファイルを移動したり、ディレクトリやファイルの名前を変更したりする。
ファイルの移動
$ mv {移動させるファイル} {移動先}
ディレクトリ名、ファイル名の変更
$ mv {名前を変えるディレクトリ名} {新しいディレクトリ名} $ mv {名前を変えるファイル名} {新しいファイル名}
実行結果
ファイル移動
touch boo mv boo aaa
curl
curlは「Client for URLs」の略で読み方は「カール」*3。
HTTPアクセスをしてコンテンツを取得、もしくはサーバーへデータを転送できるコマンド。コンテンツの取得に関してはwgetでも同じようなことができる*4。
$ curl {URL}
実行結果
追記:2018/11/28
URLにクエリを追加して指定する場合にハマったので気をつける。
touch
touchは空のファイルの作成するコマンド。ファイル名にすでに存在するファイル名を指定した場合は、ファイルの日付だけを更新することができる。
$ touch {ファイル名}
実行結果
$ touch foo
cat
catは「concatnate」の略で連結するという意味。ファイルまたは標準入力の内容をそのまま標準出力に出力するコマンド。または複数のファイルを指定することでファイルを連結することもできる。
入力の全部ではなく先頭の部分のみを出力したい場合はheadコマンドを、最後の部分のみを出力したい場合はtailコマンド、入力の全部をターミナル上でスクロールしながら見るにはlessコマンドを使う。
$ cat {ファイル名}
実行結果(count.sh とtest.sh 2つを指定)
adduser
adduserは一般ユーザーを追加するコマンド。コマンドが実行できるのはrootユーザーのみ。
-g
オプションでグループ指定や、-u
オプションでユーザーIDの指定ができるが、省略するとユーザー名とグループ名の両方が同じ名前になる。
# adduser {ユーザー名}
passwd
パスワードの設定や変更を行う。コマンドが実行できるのはrootユーザーのみ。 ユーザー名を指定するとパスワードの入力を促されるので2回入力する。
# passwd {ユーザー名}
userdel
一般ユーザーを削除する。コマンドが実行できるのはrootユーザーのみ。
r
オプションをつけるとユーザーのホームディレクトリも一緒に削除してくれる。
# userdel -r {ユーザー名}
echo
echoは「こだま、反響」という意味略で、コマンドの後ろに引数として表示したい文字列や数値、変数を指定すると画面に出力する。
$ echo {出力したい文字列}
実行結果
変数の中身を表示するには
このように文字列じゃなく変数の中身を表示することもできる。先頭に$
をつけると変数として解釈される。
echo ${変数名}
実行結果
uname
unameはシステムの情報を表示するコマンド。
$ uname
実行結果
hostname
hostnameはホスト名の設定と表示を行うコマンド。rootユーザーで実行する。
# hostname
実行結果
uptime
uptimeはシステムがどのくらいの間、連続して稼働しているかを表示するコマンド。
# uptime
実行結果
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やメモリの使用率、ユーザー名など表示項目を指定するオプション)。
参考:
date
dateはシステムの日付と時刻を表示および設定するコマンド。引数なしでdateコマンドを実行すると現在の日付と時刻を表示する。
設定を行う場合、コマンドはrootユーザーで実行する。
ネットワーク接続されている場合には,インターネット上の時計サーバーから正確な時刻を受け取るntpdateコマンドを推奨。
またLinuxではハードウエア・クロックも同時に更新する必要があり、この設定にはhwclockコマンドを利用する。
$ date
実行結果
whoami
whoamiは「who am i」の意味で、現在のユーザーIDに対応するユーザー名を表示するコマンド。
$ whoami
実行結果
last
lastは最近ログインしたユーザーのリストを表示するコマンド。
$ last
実行結果
tar
tarは「tape archieves」の略で、複数のファイルを1つにまとめたアーカイブファイルを作成/展開するコマンド。
アーカイブは「書庫」という意味で、複数の関連するファイル群をまとめて保管したり、配布したりする際に使用する。tarコマンドのアーカイブはファイルの圧縮は行わずにファイルを1つにまとめるだけである。
アーカイブファイルの作成
$ tar -cvf アーカイブ.tgz 対象ファイル
アーカイブファイルの展開
$ tar -xvf アーカイブ.tgz
gzip
gzipは「GNU zip」の略で、データ圧縮するコマンド。GNUというプロジェクトによって開発・メンテナンスされているので「GNU zip」。
UNIX、Linuxでは.tar形式のアーカイブファイルを作成した後に.gz形式で圧縮されることが多い。従ってこの場合「.tar.gz」とか「.tar.z」といった拡張子が付けられることになる。
ファイルの圧縮
$ gzip 対象ファイル
圧縮ファイルの展開
$ gzip 圧縮ファイル.gz
実際には「tarコマンドでアーカイブを作成して、gzipコマンドで圧縮…」なんてことはやらず、tarコマンドにzオプションを指定することで同時に圧縮/解凍も同時に指定することが可能。
ファイルをtar形式アーカイブにして圧縮する
$ tar -cvfz peace.tar.gz *txt
$ tar -xvfz peace.tar.gz
*1:「l」はlongという意味で、longというだけあって詳細を表示すると横長になる。
*2:詳細情報:ファイルタイプ、パーミション、ハードリンクの数、オーナー名、グループ名、バイトサイズ、タイムスタンプ、ファイル名
*3:「シーユーアールエル」だと思ってた。
*4:厳密には違いがあるらしいけど今はよくわからないので詳しくは触れない。触れられない。
*5:主にバックグラウンドで動作するプロセス。典型的なデーモンは名前の最後尾に "d" が付く。例えばsyslogd はシステムログを扱うデーモン、sshd は内外のSSH接続要求を受け付けるデーモンである。名前は悪魔の「demon」ではなく守護神の「daemon」