393
427

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

開発者なら知っておくべき 11 のコンソールコマンド

Last updated at Posted at 2019-11-27

こちらの記事は、Indrek Lasn 氏により2019年 11月に公開された『 Here Are 11 Console Commands Every Developer Should Know
』の和訳です。
本記事は原著者から許可を得た上で記事を公開しています。

コマンドラインをうまく使えば、いくつかのありふれたタスクを自動化し、よりスムーズに処理を実行することが可能になり、日々の生産活動をより効率化できます。GUI上でクリック操作する代わりに、いくつかのコマンドを実行するだけでジョブを完了させることが可能です。

Unix shell はUnixライクなOS向けにコマンドラインユーザーインターフェースを提供する、コマンドラインインタプリター、またはshellです。shellはインタラクティブなコマンド言語かつスクリプト言語でもあり、OSがshellスクリプトを用いてシステムの実行を制御するために使用されます。

すべてのLinuxやMacベースのOSにはデフォルトでコマンドラインがインストールされており、一般的には「ターミナル」と呼称されます。コマンドライン(CLI)によってファイルの移動や名前の変更、データの並び替えやコンピュータ内の移動をより簡単に行えます。

では早速あなたのエンジニアライフをより楽にする “11” のコマンドを紹介します。

1. grep

$ grep "some string" file

grepコマンドは各ファイルの文字列を検索します。また、改行文字で区切られたパターンも検索し、パターンに一致する行をそれぞれ出力します。

1_ovG5it9EJTZ0JG3tdOgclA.png

`grep` でファイル内の React という文字列を検索する
`-i` オプションを使用すると、指定したファイル内の大文字と小文字を区別せずに文字列を検索できます。この場合「REACT」、「REact」、「react」などの文字列を検索します。
$ grep -i "REact" file

-c (count)オプションを使用すると、指定された文字列/パターンがファイル内で何回記載されているかがわかります。

$ grep -c "react" index.js

1_-KL9UvoB8RR4NKkUfHNBoQ.png

`grep -c` コマンドで react の 記載回数をカウント

これは私がインターネットで見つけた、`grep`コマンドに関する楽しくてためになるイラストです。

1_ZkpszLnLQFRFp_cVO_Ldmw.jpeg
Source: Wizard Zines

また、異なるコマンドの egrep および fgrep は、それぞれ grep -E および grep -F と同様のコマンドです。これらのバリアントは非推奨ですが、下位互換性のために提供されています。

grep では多くのことを行えます。--より深く理解するためにはこのドキュメントを読んでください。

2. ls

$ ls

ls コマンドはパス内のファイルとディレクトリを一覧表示します。パス名がファイルの場合、ls コマンドは要求されたオプションに従ってファイルに関する情報を表示します。

パス名がディレクトリの場合、ls コマンドはディレクトリ内のファイルとその中のサブディレクトリに関する情報を表示します。

1_JthCA8XeIN22yScYBJlRIw.png

`ls` でパス内のすべてのディレクトリとファイルを表示

フォルダが青色で表示されているのに対し、ファイルはグレーで表示されていることに気づいたかもしれません。これは、フォルダとファイルを区別するのに役立ちます。

3. pwd

$ pwd

1_E1zXuIQ6X0aaTtVC0wZ_nw.png

`pwd` で作業ディレクトリの絶対パスを表示

`pwd` コマンドは、現在の作業ディレクトリを出力するコマンドです。現在の作業ディレクトリの完全なシステムパスを標準で出力します。オプションで現在のディレクトリの完全な物理パスを表示できますが、デフォルトでは、`pwd` コマンドはシンボリックリンクを無視します。

4. cat

$ cat somefile.js

1_SL7g1NHsb7dKgwmoYBySkQ.png

`cat` でファイルの内容を表示

`cat` コマンドには、テキストファイルに関する3つの関連機能があります。
  • テキストファイルの内容を表示する
  • テキストファイルのコピーを結合する
  • 新しいテキストファイルを作成する

cat コマンドの最も一般的な使い方は、ファイルの内容を読み取ることであり、多くの場合この目的に最も便利なコマンドです。

以下の例では、cat の標準出力は、出力リダイレクト演算子( > で表されます)を使用してfile2にリダイレクトされます。

$ cat somefile > somefile2

1_NxLOMigqozU5EvxVdr1f7Q.png

`cat` を使ってファイルを作成する

5. echo

$ echo "some text"

Linux の echo コマンドは、引数として渡されたテキスト/文字列を表示するために使用されます。echo コマンドは主にシェルスクリプトやバッチファイル内で使われ、ステータス情報のテキストを画面やファイルに出力します。

1_1bMjVqwhueQP5hvyMMdDKA.png

6. touch

$ touch somefile

touch コマンドは空ファイルを作成するために使用されます。touch コマンドは、ユーザーがファイル作成時点ではデータを保存する必要がない場合に使用されます。
1_RIrUCSW4TT_cJrnGy9ighQ.png

`touch` で新しいファイルを作成

上の図では`touch` を使ってファイルを作成し、`cat` でファイルの内容を確認しています。新しく作成されたindex2.jsファイルは空なので、`cat` は何も返しません。

以下はcattouch の主な違いです:

  • cat — コンテンツを含むファイルを作成するために使用されます。
  • touch — コンテンツ無しまたは空ファイルの状態でファイルを作成します。touch コマンドで作成したファイルは空だということに注意してください。このコマンドは、ユーザーがファイル作成時点で保存するデータがない場合に便利です。

7. mkdir

$ mkdir some-directory

単語から推測できる通り、mkdir は現在のアクティブパスに新しい空のディレクトリを作成します。テキストエディターやGUI上でクリックする代わりに、このコマンドを使用して新しいフォルダーを作成します。
1_FsxDBW5HDWJn9kHsw0My7A.png

`mkdir` で新しいディレクトリを作成

注:前述の`ls` コマンドでディレクトリ内をどのように覗くことができるか確認してみてください。

7.1 rm

$ rm someFile

rm はremoveの略で、まさにそのまま言葉通りのことをします。つまり、ファイルを取り除く、別の言葉で言えば、削除します。

1_damLEKdyWY7aBPILFELVNg.png

`rm` コマンドでファイルを削除

デフォルトでは、`rm` コマンドはディレクトリを削除しません。ディレクトリを削除するには、`(rm) -rf` オプションを渡す必要があります。
$ rm -rf some-directory

1_gXTLAllsEVTdWHCcDw83WQ.png

`rm -rf` でディレクトリを削除(ディレクトリ削除のためのオプションを付与)

注:このコマンドにより、ディレクトリにコンテンツが含まれているかどうかに関係なくディレクトリが無条件に削除されます。

7.2 rmdir

$ rmdir some-directory

rmdir コマンドはディレクトリの内部にコンテンツがない場合にディレクトリを削除します。

1_aUJ0VbrVb_cTUf0okMxmWA.png

`rmdir` でからのディレクトリを削除

8. tail

$ tail somefile

tail コマンドはファイルの最後の部分(テール)を読み取り出力します。
1_Xvo2zdyDZqj4QhTHF0TLTg.png

デフォルト(10)の代わりに最後のnum 行を出力

`tail` コマンドは、クラッシュレポートや直近の履歴ログを調べるときに便利です。ファイルログを確認するときに有用となる例を以下に記載します。
# tail /var/log/messages
Mar 20 12:42:22 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:24 hameda1d1c avahi-daemon[2027]: Registering new address record for fe80::4639:c4ff:fe53:4908 on eth0.*.
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x280436dd)
Mar 20 12:42:28 hameda1d1c dhclient[4334]: DHCPACK from 10.76.198.1 (xid=0x280436dd)
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Joining mDNS multicast group on interface eth0.IPv4 with address 10.76.199.87.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: New relevant interface eth0.IPv4 for mDNS.
Mar 20 12:42:30 hameda1d1c avahi-daemon[2027]: Registering new address record for 10.76.199.87 on eth0.IPv4.
Mar 20 12:42:30 hameda1d1c NET[4385]: /sbin/dhclient-script : updated /etc/resolv.conf
Mar 20 12:42:30 hameda1d1c dhclient[4334]: bound to 10.76.199.87 -- renewal in 74685 seconds.
Mar 20 12:45:39 hameda1d1c kernel: usb 3-7: USB disconnect, device number 2

9. wget

$ wget someurl

wget (GNU Wget)は 最も広く使用されているインターネットプロトコルであるHTTP、HTTPS、FTP、およびFTPSを使用してファイルを取得するための、フリーソフトウェアパッケージです。ノンインタラクティブなコマンドラインツールであるため、スクリプト、CRONジョブ、X-Windowsサポートのないターミナルなどから簡単に呼び出すことができます。

1_nbzEhCeVUxT2-Px0oQbszQ.png

`wget` でウェブページの情報を取得

`wget` (GNU Wget)には、大きなファイルの取得やWebサイト、FTPサイト全体のミラーリングを容易にする以下のような多くの機能があります。
  • RESTとRANGEを使用して、中断したダウンロードを再開できます
  • ファイル名にワイルドカードを使用して、ディレクトリを再帰的にミラーリングできます
  • NLSベースの様々な言語向けメッセージファイル
  • オプションでダウンロードされたドキュメントの絶対リンクを相対に変換し、ダウンロードされたドキュメントがローカルで相互にリンクできるようにします
  • ほとんどのUNIXライクなオペレーティングシステムおよびMicrosoft Windowsで実行可能
  • HTTPプロキシをサポート
  • HTTP Cookieをサポート
  • 持続的なHTTP接続をサポート
  • コンソール無接続 / バックグラウンド でのダウンロードをサポート
  • ローカルファイルのタイムスタンプを使用して、ミラーリング時にドキュメントを再ダウンロードする必要があるかどうかを判断
  • GNU WgetはGNU General Public Licenseのもとで配布されています。

詳細については、公式のGNUドキュメントを参照してください。

10. find

$ find path -name filename

find コマンドによりファイルまたはディレクトリをすばやく検索できます。数百以上のファイルや複数のディレクトリを持つ、大きなプロジェクトで作業する場合に便利です。
1_j291SZcYXSaPtdvqipX6sg.png

`find` でディレクトリ内の`index.js`という名前のファイルすべてを見つける

特定の種類のファイルを検索する

find コマンドを使用すると、ディレクトリ(およびそのサブディレクトリ)内で同じタイプのファイルを検索することもできます。例えば以下のコマンドは現在の作業ディレクトリ内のすべての .js ファイルを検索します。

$ find . -name "*.js"

1__i8_TEIElXAAyXy-F1JQmA.png

`components`ディレクトリですべての .js ファイルを見つける

11. mv

$ mv somefile /to/some/other/path

mv コマンドは、ファイルまたはディレクトリをある場所から別の場所に移動します。このmv コマンドは、単一ファイル、複数ファイル、およびディレクトリの移動をサポートしています。

1_TdqoyPUFrdBvI2Ws7cfyfQ.png

some-directory を components からutils に移動する

最後に..

ここまで読んでいただきありがとうございます。何か得るものがあったなら幸いです。もっと便利なコマンドを知っている場合は是非共有していただき、一緒に成長していきましょう。

-貪欲であれ。好奇心旺盛であれ。-

翻訳協力

 
Original Author: Indrek Lasn
Thank you for letting us share your knowledge!

この記事は以下の方々のご協力により公開する事が出来ました。
改めて感謝致します。
選定担当: Yumika Tomita
翻訳担当: @upaldus
監査担当: @nyorochan
公開担当: @miyonori0812

ご意見・ご感想をお待ちしております

今回の記事は、いかがだったでしょうか?
・こうしたら良かった、もっとこうして欲しい、こうした方が良いのではないか
・こういったところが良かった
などなど、率直なご意見を募集しております。
いただいたお声は、今後の記事の質向上に役立たせていただきますので、お気軽にコメント欄にてご投稿ください。
みなさまのメッセージをお待ちしております。

393
427
6

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
393
427

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?