LoginSignup
106
127

More than 3 years have passed since last update.

【Linux】便利だけど意外と知らないコマンド独自セレクション一覧

Last updated at Posted at 2020-10-03

はじめに

Linuxコマンドを使う機会が増えてきましたが、知らないコマンドの中に便利そうなコマンドがありそうだったので調べて記事にしました。
たまに使うけど、ちゃんと覚えていないコマンドも紹介しています。備忘録的サムシングです。

頻繁に使うコマンド(cd,mkdir,cpなど)は独断と偏見で紹介しておりません。
一部よく使いそうなコマンドも入っているかもしれませんが、ご了承ください。
個人的にあまり使ってなかったけど使っていきたいなあと思っているコマンドリストです。

コマンド一覧

clear

ターミナル内でそれまで書いていた内容を上に上げて、綺麗にしてくれます。
削除はされないので過去の内容はスクロールすれば見れます。

$ clear

※追記
ctrl+lとすると、clearと同じ動きをしてくれます。

find

ファイルやディレクトリを検索するコマンドです。

~/html/以下のどこかにindex.htmlがあるかどうかを探す場合は以下になります。

$ find ~/html -name index.html
/home/myuser/html/section2/index.html
/home/myuser/html/section1/index.html
/home/myuser/html/index.html

10分以内にデスクトップより下のどこかの階層で作業していたファイル名を調べたいときは
以下のコマンドで調べられます。

$ find ~/MyDesktop/ -amin -10

ln

ファイルのリンクを作成するためのコマンドです。

ln -s ファイル名 リンク名

-sオプションはハードリンクの代わりにシンボリックリンクを作成します。
特に指定がないとハードリンクを作成します。
※ハードリンクは元ファイルを消去してもアクセスできます。

実用例

$ ln -s available/ファイル名 enable/リンク名
=> enable/リンク名のシンボリックリンクを作成

こうすることで有効化したenableフォルダ内のシンボリックリンクだけ使い、使わなくなったら消したりします。

id

登録ユーザーの情報を表示するコマンドです。ユーザー番号(UID)、主登録グループ名とその番号(GID)、副登録グループ名とその番号(GID)を確認できます。
ユーザー名無しだと現在の実行ユーザーの情報が返ってきます。

$ id ユーザー名

自分ってだれだっけ?という哲学チックな疑問にもサラッと答えてくれます。

whoami

現在の登録ユーザーの名前を返してくれます。idと違って名前だけです。

$ whoami

自分の名前すらも忘れてしまったときに使ってください。

top

現在実行中のプロセスをCPU利用率や指定した項目でがソート表示ができます。

$ top

重い処理動いているかもしれないけど、アクティブモニタをみるのは面倒なときには便利かもしれません。
以下topコマンドの記事になります。参考となるかと思いますので、記載させtいただきました。
https://qiita.com/Kernel_OGSun/items/55afb7e93b445f1be019

※追記(20201011)
topよりも詳細な情報を確認できるhtopというコマンドもあります。

du

ディスクの使用量をディレクトリごとに集計して表示するコマンドです。ファイルを指定した場合は指定したファイルのサイズのみ、ディレクトリを指定した場合はそのディレクトリおよび全てのサブディレクトリの使用量を集計します。対象を指定しなかった場合は、カレントディレクトリの使用量が表示されます。

$ du ファイル名orディレクトリ名

※追記(20201011)
duの弱点を補いインタラクティブなディスク使用量調査ができるncduというコマンドもあります。
https://www.softantenna.com/wp/review/ncdu/

which

指定されたコマンドを、環境変数PATHに設定されているディレクトリを順番に調べて、最初に見つかった実行ファイルを表示するコマンドです。

$ which ssh
/usr/bin/ssh

ping

pingコマンドは指定したホストとの間でネットワークが疎通しているかどうかを調べるコマンドです。

$ ping www.google.co.jp
PING www.google.co.jp (172.217.31.163): 56 data bytes
64 bytes from 172.217.31.163: icmp_seq=0 ttl=115 time=2.523 ms
64 bytes from 172.217.31.163: icmp_seq=1 ttl=115 time=3.583 ms
64 bytes from 172.217.31.163: icmp_seq=2 ttl=115 time=3.560 ms
64 bytes from 172.217.31.163: icmp_seq=3 ttl=115 time=5.939 ms
...

デフォルトでは1秒間隔で相手にパケットを送り、応答を表示します。

nslookup

nslookupの後ろにドメイン名を書くと対応するIPアドレスなどの情報がかえってきます。
nslookupの後ろにIPアドレスを書いた場合はサーバの設定によりますが、ドメイン名がかえってきます。

$ nslookup www.google.co.jp
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   www.google.co.jp
Address: 216.58.197.195

tail -f

ファイル末尾だけを表示してくれます。
ログ表示によく使われます。
-fオプションをつけることが一般的で、逐次表示ができます。

$ tail -f access.log

less

ファイルの中身を閲覧できます。
スクリプトや設定ファイルなどを閲覧のみしたい場合に誤って上書きするリスクがないlessコマンドが便利です。

$ less ファイル名

ls -lt

「-t」オプションをつけることによって、ファイルの更新時間順に表示することができます。

$ ls -lt

何か問題が起きた時に原因調査するために更新順にさかのぼっていきたい時などに役に立ちます。

ls -1

lsの後ろに-1をつけることで結果を縦に表示してくれて見やすいです。

$ ls -1

パイプ " | " を使った便利コマンド

パイプと呼ばれる" | "を使うことでコマンドを組み合わせて使うことができます。1行でスマートにコマンドを打てます。
$ コマンドA | コマンドBを実行すると、2つのコマンドA,Bが同時に実行されます。
別々に実行されるのではなく、コマンドAの標準出力をさらにコマンドBが処理して1つの標準出力として結果が返ってきます。

パイプの概念に関して以下参考にさせていただきました。
https://qiita.com/angel_p_57/items/03582181e9f7a69f8168#%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3

ls | grep

lsとgrepを組み合わせて、lsで表示できるものの中からgrepで絞り込んだファイルのみを1行ずつ表示してくれます。
ls -1と書かなくてもgrepにより1行ずつ表示してくれます。

$ ls | grep apple
apple.txt

appleという名前が入ったファイルのみを1行ずつ表示してくれます。

ls | grep -e

-eオプションで複数のキーワードで絞り込みができます。

$ ls | grep -e apple -e orange
apple.txt
orange.txt

ls | grep -v

-vオプションで指定した文字列に一致しない結果を表示してくれます。

$ ls | grep -v apple
banana.txt
lemon.txt
melon.txt
orange.txt

cat | grep

文字列を検索・ファイルを表示する場合はcatを使います。lessと似てますが、catはターミナルにファイルの中身をそのまま出して埋め尽くすので長いファイルだと作業しづらくなります。
そのため、catはよくgrepと一緒に使います。

$ cat ファイル名 | grep キーワード

ファイル内のキーワードと一致する行のみを表示してくれます。

パイプの連続使用

パイプは連結して3つ以上のコマンドでも実行が可能です。
コマンドA | コマンドB | コマンドCといった書き方をします。
コマンドA→コマンドB→コマンドCの処理順で処理した結果が標準出力として返ってきます。

cat | grep | less

cat | grepで絞り込んで表示はしていますがターミナル内に表示するため、やや見づらいです。
そこでlessコマンドをパイプでつなげると、絞り込んだ内容だけをみることができてとても見やすいです。

$ cat ファイル名 | grep キーワード | less

追記(20201011)

find ./ -name | xargs du -hc

$ find ./ -name '*.png' | xargs du -hc

カレントディレクトリ以下でpng拡張子を持ったファイルのみのディスク使用量を表示します。
duhオプションによってサイズに応じて読みやすい単位で表示し、cオプションによって全体の合計も表示します。

grep -rl

ディレクトリの内部も全部検索して、ファイルのみを表示してくれます。
見つけたいファイルがどこかにあるはずだけど、断片の名前しかわからずどこのフォルダの中にもあるのかわからない時に役立ちます。
コメントでいただいたコマンドですが、かなり実用的かと感じています。

$ grep hoge -rl ./*

=>現在のディクレトリ以下でhogeとついたファイルのみ表示します。

rオプションによってディレクトリ内も検索対象とし、lオプションによってファイルのみを表示してくれます。
見つけた後にviなどを使ってファイルを処理するといった流れになるかと思います。

おわりに

エンジニアとして働き始めて2ヶ月ほど経ちましたが、よりLinuxコマンドやベーシックなことに慣れていきたいと思いまして、この記事を書きました。

あまりによく使うコマンドはここに記載してはおりませんが、もしこんなのもあるよと便利なコマンドをご存知でしたらぜひコメントで教えていただけますと幸いです。
自分の独断で書いておりますので、その意図を察するのは無理があると思いますがどんなコマンドでも構いません。

また、おかしな説明等があった際に教えていただけますと幸いです。

106
127
19

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
106
127