Expertsの日本語訳です。一部を除き、上から順にコマンドを打って確かめることができるようになっています。読むだけではなく、実際に打って試してみることで理解が早まることでしょう。Experts一年前まで、私はもっぱらMacOSとUbuntuのふたつのOSで作業をしていました。両OSにおいて、私のデフォルトシェルはbashです。過去6、7年ほどbashで仕事をしているため、bashがどのように動作するか、ある程度は理解しているつもりです。従って、bashを始めたばかりの人にとって一般的で有用なコマンドについて、いくつか解説していきたいと思います。bashについて知っているべきことを全て知っていると思っている人も、とりあえず見ていってください。あなたが忘れているかもしれない、使うことで仕事がより簡単になるかもしれない、TIPSやリマインダのヒントを鏤めました。以下のコマンドは段階を踏んで進んでいくので、bashを使い始めたばかりであっても、最初から最後まで順番に進んでいくことができます。最初は簡単で、徐々に難しく一般的ではないコマンドを出していきます。Filesystem最初のコマンドはファイルシステムのナビゲーション。最近のファイルシステムはディレクトリツリー構造を持っています。ディレクトリは親のないルートディレクトリ、もしくは一つの親を持つサブディレクトリのいずれかです。ディレクトリツリーを逆方向(子から親へ)移動し続けると、最終的には必ずルートディレクトリに到達します。一部のファイルシステムには複数のルートディレクトリを持つものもありますが(WindowsのC:\、A:\など)、UnixやUnixライクOSには単一のルートディレクトリ/しかありません。cdファイルシステム内で作業する場合、ユーザは常にどこかのディレクトリ、すなわちカレントディレクトリもしくは作業ディレクトリと呼ばれる場所にいます。カレントディレクトリはpwdコマンドで確認することができます。pwd/home/andrewカレントディレクトリの中身、ファイルや子ディレクトリなどを参照するのはlsコマンドです。-aで隠しファイル(.で始まるなど)を表示する。-lでファイルの詳細も表示する。-aのように複数のオプションを連ねられる。-laと書くこともできる。カレントディレクトリを変更するのはcdコマンドです。..で親ディレクトリに移動することができます。~あるいは単にcdで、どこからでもユーザのホームディレクトリ(通常は/home/username)に戻ってきます。~userは、"userのホームディレクトリにcd"という意味。../..のように一気に多段ディレクトリ移動ができる。.はカレントディレクトリのこと。&コマンドラインに入力するのはコマンドと呼ばれるもので、そしてコマンドはPCのどこかに保存されているプログラムを実行させます。このプログラムはLinuxのビルトインコマンドであることもあれば、誰かが作ったアプリであることもあり、そしてあなたが作ったコードであるかもしれません。複数のコマンドを連続して実行したいことがあります。そのためにはセミコロン;を使います。test.file/home/andrew上のコマンドは、まずlsでカレントディレクトリの中身を表示し、次いでpwdでカレントディレクトリの位置を表示します。コマンドを連続実行するためのもうひとつ便利なツールが&&です。これを使うと、左側のコマンドが失敗した場合は右のコマンドが実行されません。;や&&は連続で使うことができます。target;を使った場合は、手前のコマンドが失敗したとしても後ろのコマンドが実行されます。test.file&は一見&&と似たように見えますが、実際は全く異なる機能です。実行に長い時間がかかるコマンドを実行すると、そのコマンドの実行が終了するまでコマンドラインは何もできなくなります。コマンドの後ろに&を書くと待ちが発生しなくなり、古いコマンドがまだ動いている状態でも、次のコマンドを実行することができるようになります。9263おまけ&を使ってコマンドを隠すことを、我々はジョブ(あるいはプロセス)のバックグラウンド化と呼んでいる。現在バックグラウンド状態のジョブはjobsコマンドで確認することができる。Help-hほとんどのコマンドは、-hあるいは--helpでコマンドのヘルプを表示してくれます。below...man大抵のコマンドは、manコマンドに続けて打つとコマンドのマニュアルを表示することができます。qでマニュアルを終了します。lessheadはファイルの最初の数行を出力します。出力行数のデフォルトは10で、-nで変更できます。cthisfilehastailは逆にファイルの最後の数行を出力します。+NでN行目から最後までを出力できます。cexactlysixlinescatは複数のファイルを連結し、その結果を標準出力(通常はターミナル)に送信します。このコマンドは、複数のファイルや、単に1ファイルの中身をさっと確認するために使われることがしばしばあります。そのような使い方をすると猫の無駄遣いで告発される可能性がありますが、たいした害はないので気にしなくてもかまいません。bファイルを素早く表示するもうひとつの方法がlessで、これを使うと読み取り専用のvimのようなウィンドウが開きます。実はmoreというコマンドもあるのですが、lessのほうが優位なので出番はありません。詳しく(more)、いや少なく?(less)知りたい場合は、lessとmoreのmanページを参照してください。neditnanoは必要最小限のコマンドラインテキストエディタです。初心者や、100万のショートカットを覚えたくないユーザにとっては最適の優れたエディタです。私のキャリアにおいても、最初の数年間はnanoだけで十分でした。nanoで独自のシンタックスハイライトを定義するのは大変なので、さすがにそろそろ別の強力なエディタを検討し始めていますが。Windowを開き、クリック編集、ドラッグアンドドロップ、構文強調表示等が可能です。スクリプトに小さな変更を加えながら何度も実行したいとき、私はよくneditを使用します。その他の一般的なCLI/GUIテキストエディタとして、emacs、vi、vim、gedit、Notepad++、Atom、そしてその他たくさんの選択肢が存在します。便利機能を標準装備しています。viやemacsはnanoやneditより遙かに多くの機能がありますが、同時に学習曲線も急坂です。エディタを色々試してみて、自分に合ったものを探してみてください。Directoriesファイル・ディレクトリの作成と削除。touchtouchはファイルのタイムスタンプを更新するために作られたものですが、空のファイルを作るためにも利用できます。nanoなどのテキストエディタで新規ファイルを作成してみましょう。lsatouchなら1コマンドです。bおまけCtrl+zで現在実行中のプロセスをバックグラウンドにできる。fgコマンドでプロセスに戻る。*/さらにおまけCtrl+cだと現在実行中のプロセスを強制終了する。Nに入れるプロセス番号はjobsコマンドで確認できる。rmdir空のディレクトリを作るのはmkdirコマンドです。crmでファイルを削除できますが、削除すると元に戻せません。c削除確認の警告を行いたい場合は-iオプションを追加しましょう。y空のディレクトリを削除するのはrmdirです。-aすると、カレントディレクトリ.と親ディレクトリ..だけが表示されます。..rmdirでは、空でないディレクトリは削除できません。-rは再帰、-fは強制実行するオプションです。Historyファイルの移動、コピー、リンク、コマンド履歴。lnファイルの移動、リネームはmvです。ディレクトリを移動してファイル名をそのままにする、ファイル名もついでに変更するといったことができます。e2lnはファイルへのハードリンクを作成します。-sでシンボリックリンクが作成できます。gハードリンクは同じメモリを参照するひとつのファイルへの別名を作ります。シンボリックリンクは元のファイル名を追跡するだけで、ファイル実体を参照するのは元ファイルだけです。link?を見てください。Historybashは、実行したコマンドを再実行するために役立つ機能をふたつ持っています。ひとつめの機能はタブ補完です。コマンドの一部を入力したところでTABを押すと、何を打とうとしているのか端末が推測してくれます。<TAB>TABを押すと、以下のようにコマンドが最後まで補完されます。<ENTER>thisisalongfilename特定しきれない場合はTABを何度か押すことになります。anotherlongfilenamebashは以前に実行したコマンドを幾つか覚えており、Ctrl+Rでその履歴を検索することができます。(reverse-i-search)`':ここでanewと入力すると、その文字が含まれるコマンドのうち最後に実行したものが出てきます。Processesディレクトリツリー、ディスク使用量、プロセス。treemkdirはデフォルトではひとつのディレクトリのみを作成します。いうことかというと、ディレクトリd/eが存在しないときにディレクトリd/e/fを作ることはできないということです。directory-pオプションを付けることで、深い階層のディレクトリも一気に作成してくれます。dtreeコマンドはディレクトリツリーをいいかんじにビジュアル化して表示してくるので、ディレクトリ構造を把握するのに役立ちます。デフォルトでは指定ディレクトリ以下のディレクトリツリーを全て示しますが、-Lオプションで階層を限定することもできます。files空のディレクトリを表示させたくないときは--pruneオプションを使います。このオプションは再帰的なので、空のディレクトリだけが入った空でないディレクトリも消えることに注意しましょう。psdfはディスクおよびシステムの容量がどれだけ使用されているかを一覧表示します。/...このコマンドにおいては、-hオプションは"ヘルプ表示"ではなく"人間が見てわかりやすく表示"を意味します。いくつかのコマンドは、このオプションを使うことで、バイト数そのままではなくキロバイトK、ギガバイトGなどでファイルやディスク容量を出力してくれます。duは指定ディレクトリとそのサブディレクトリの使用量を表示します。あるハードディスクの使用量を知りたい場合はdf、あるディレクトリの使用量を知りたいときはduを使います。.duは--max-depth=Nオプションを受け取り、指定した階層のディレクトリまでを表示します。.psはユーザが実行中の全てのプロセス(ジョブ)を表示します。exitパスワード変更コマンドはpasswdです。確認のために現在のコマンドを一回と、変更後のパスワードを2回入力する必要があるため、入力ミスすることはないでしょう。successfullylogoutで現在のログインシェルが終了します。fileexitはサブシェルを含め全て終了します。*clearを実行するとカーソルが画面の一番上に移動します。実際やってることは現在の行の下に空白行を追加しているだけですが、ワークスペースをクリアするのに有用です。Star)が便利です。以下の2コマンドの違いについて注意してください。Git/Parser/source/PDelimitedFile.javaglobは1コマンド中に何度も使用することができ、"0文字以上の文字列"に一致します。Usage)はファイル使用量の概要を表示する、改善版duのようなコマンドです。読み取り専用のvimのようなウィンドウが開くので、終了する際はqを押しましょう。htoptopは、現在実行されている全てのプロセスと所有者、メモリ使用量などを表示します。htopはインタラクティブな改良版topです。usernameオプションで該当ユーザのプロセスだけを表示することができます。Loopの略で、コマンドラインと同じようなものですが、通常はプログラミング言語との対話的ウィンドウに対して呼ばれます。PythonのREPLはpythonコマンドで始めることができ、quit()関数で終了します。quit()RのREPLはRコマンドで始まり、q()関数で終了です。nScalaのREPLはscalaコマンドで始まり、quitコマンドで終了です。:quitJavaのREPLはjshellコマンドで始まり、/exitコマンドで終了です。/exitこれらのREPLはCtrl+dでも終了できます。Ctrl+dはUnixのEOFであり、入力の終端を意味します。-vほとんどのコマンドやプログラムは、そのソフトウェアバージョンを表示する-versionもしくは--versionオプションがあります。ほとんどのアプリケーションにも同じオプションが用意されています。3.5.2ただし、稀にあまり馴染みのないオプションも存在します。2.12.4バージョンを表すオプションとして-vを使うプログラムもあります。多くの場合-vは'verbose'を意味し、診断情報やデバッグ情報といった多くの詳細情報も出力します。vars"と略されることもある)は、bashシェル上で作成・使用できる永続変数のことです。これらは=で定義し、$で参照します。pritenvで現在定義されている全ての環境変数を確認することができます。printenvSPARK_HOME=/usr/local/sparkTERM=xterm...新しい環境変数を定義しましょう。=の前後にスペースを入れてはいけません。myvar=hello定義した環境変数はechoで取得できます。変数の頭に$を付けます。$myvarhelloスペースやその他の空白を含む値を指定したいときは、値を"で囲まなければなりません。環境変数は警告無しに上書きできるので気をつけましょう。world!環境変数をexportコマンド付きで定義することもできます。すると、サブシェル内でもその環境変数を参照することができるようになります。one環境変数の設定を解除するには、=の右側を空欄にして決定するか、unsetコマンドを使用します。$mynewvarAliasesエイリアスは環境変数に似ていますが、普通は異なる目的で利用されます。長いコマンドを短く置き換えるために使用されます。script.js...エイリアスの削除はunaliasです。...おまけ環境変数とエイリアスの違い。一部のプログラムでは、そのプログラム専用のエイリアスを設定できる。Scriptsbashスクリプト(シェルスクリプト)を使うと、複雑なプロセスを自動化し、再利用可能な形にパッケージ化することができます。拡張子は通常.shです。bashスクリプトには、通常のコマンドをいくらでも詰め込むことができます。ex.sh作成したシェルスクリプトは、sourceもしくはshコマンドで実行可能です。testchmodコマンドで、シェルスクリプトを直接実行可能にすることができます。詳しくは後で解説します。ex2.sh実行権限+xのついたシェルスクリプトは、頭に./を付けることで直接実行できます。test長いスクリプトを書きたい場合、行の最後に\を入れることで改行して入力できます。ex3.shシェルスクリプトにはもちろん、ループや関数などの複雑な構造も仕込むことができます。lsbashスクリプティングは、あなたの人生をずっと楽に、豊かに、カラフルにしてくれます。この素晴らしいチートシートをご覧ください。ところでシェルのプロンプトに出てくる文字列も環境変数で定義されていて、その名前は$PS1です。他にもプロンプトはあって、それらについてはこちらを見てください。$PS1$'\\n\\[\E[1m\\]\\[\E[30m\\]\\A'$'\\[\E[37m\\]|\\[\E[36m\\]\\u\\[\E[37m\\]@\\[\E[34m\\]\\h'$'\\[\E[32m\\]\\W\\[\E[37m\\]|'$'\\[\E(B\E[m\\]‘デフォルトのプロンプトは、exportコマンドで変更可能です。here>色を付けることもできます。\e[39mlsが出力する色も環境変数$LS_COLORSで変更することができます。.bashrc色々とコマンドを実行して設定を変更しましたが、いちどログアウトして再度ログインすると、全ての変更がリセットされてしまうことに気付くでしょう。設定ファイルを使用することで、ログインしなおしてもシェルや特定のプログラムの設定を保持することができます。bashシェルの主な設定ファイルは~/.bashrcです。~/.bashrcに追加したエイリアス、環境変数、エイリアスは、ログインするたびに使用可能になります。~/.bashrcに書かれたコマンドはログイン時に実行されるということです。~/.bashrcを更新した場合、sourceコマンドでログアウトせずに最新状態にすることができます。loaded!"という行を付け加えてみましょう。loaded!ログアウトしてログインし直してもこうなります。Shellsログインシェルとは、ログインしたとき最初に起動するシェルです。対話型シェルとは、コマンドを入力することができるシェルです。シェルには対話型ログインシェル、非ログイン非対話型シェル、あるいは他の組み合わせなど様々なものがあります。~/.bashrc以外にも、ログインしたときやログアウトした際に自動的に実行されるスクリプトは幾つか存在します。・/etc/profile・~/.bash_profile・~/.bash_login・~/.profile・~/.bash_logout・/etc/bash.bash_logoutこれらのスクリプトのどれが有効で、どの順番で実行されるかは、シェルのタイプによって異なります。Overflowのポストなどを参照してください。bashはsourceコマンドで別のスクリプトを読み込むことも可能です。~/.bashrcに以下を記載することができます。~/.bashrc_addlこれにより、.bashrc_addlもsource対象のファイルとなります。このファイルにも独自のエイリアス、関数、環境変数などを記述することができます。同様に、さらに別のスクリプトをsourceすることもできます。する場合はsourceが無限ループしないように注意してください。機能やOS(Ubuntu、RedHat、macOS)などによってコマンドをファイルごとに分離しておくと役立つことがあります。外観やOS固有設定などをそれぞれ個別のファイルに切り出し、そしてそれらのうち必要なものをsourceするひとつの管理ファイルから構成します。このような構成であれば、あらゆるマシンやOSで使用可能なシェルになります。bash以外のシェルも存在することに気をつけてください。bashは単にシェルの一種であるにすぎません。他に一般的なシェルとしてはzsh、csh、fishなどが存在します。様々なシェルを試して、自分に合ったものを見つけてください。このチュートリアルはbashシェルで記述されているため、他のシェルでは動作しない可能性があることに注意してください。whatiswhereisは、あるコマンドに対して、おそらく有用であろうファイルを検索します。そのコマンドのバイナリすなわち実行可能なコード、ソースファイル、マニュアルのmanページなどです。/usr/share/man/man1/ls.1.gzwhichはバイナリ、すなわちコマンドの場所のみを返します。ls/bin/lswhatisはmanページからコマンドの概要を1行表示します。descriptionswhichは、エイリアスで隠蔽されているコマンドのオリジナルを探すのに役立ちます。findlocateは、予め作成しておいたキャッシュリストを参照して高速にファイルを検索します。README.md/home/andrew/.config/micro/plugins/gotham-colors/README.md/home/andrew/.jenv/README.md/home/andrew/.myshell/README.md...リストを検索するのでfindより高速ですが、必ずしも最新の状態と一致しているとは限りません。findは実際のファイルシステムを検索して、探しているファイルを見つけます。こちらは実ファイルを検索するため、常に最新のファイルを得ることができます。"README.md"/home/andrew/.jenv/README.md/home/andrew/.config/micro/plugins/gotham-colors/README.md/home/andrew/.oh-my-zsh/plugins/ant/README.md...findは1971年という最初期のUNIXから実装されているため、1994年にGNUに追加されたlocateより遙かに広い環境で利用可能です。findはlocateよりずっと多くの機能を備えていて、更新日、サイズ、所有者、ファイル/ディレクトリ、タイムスタンプ、パーミッション、ディレクトリの深さなど多様な条件で検索できます。ファイル名を正規表現で検索し、見つかったファイルに対してコマンドを実行することもできます。高速に検索する必要がある場合、また対象ファイルが何処にあるかわからないときはlocateを使用します。ファイル名以外の何らかの条件に紐付いた正確なファイル一覧が欲しい場合、取得したファイルに対して何かを行いたいときはfindを使用します。curlpingはネットワークホストとの通信を確立しようとします。インターネット接続がダウンしているかどうかを確認するために使用されます。TTL=64...wgetはインターネットからファイルを簡単にダウンロードできます。http://releases.ubuntu.com/18.10/ubuntu-18.10-desktop-amd64.isocurlもwgetと同じように使用できます。--outputオプションを忘れないようにしてください。ubuntu.isocurlとwgetには、それぞれ長所と短所があります。curlはより多くのプロトコルをサポートし、様々な場面で使用可能です。curlはデータの送信もできますが、wgetは受信しかできません。wgetはファイルを再帰的にダウンロードできますが、curlはできません。一般的には、インターネットからファイルをダウンロードするときはwgetを使います。curlを使ってデータを送信することはあまりありませんが、これを知っておくと、いざ必要になったときに役立ちます。gzipDebian系のLinuxディストリビューションには、aptという素晴らしいパッケージ管理ツールが存在します。ソフトウェアのインストール、アップデート、削除が可能です。installでインストールします。bleachbitLinuxのソフトウェアは大抵tarball(.tar.gz)になっています。https://github.com/atom/atom/releases/download/v1.35.0-beta0/atom-amd64.tar.gzこの拡張子のファイルはgunzipで解凍できます。-xfで通常のファイルシステムに戻すことができます。atom-amd64.tar逆に圧縮するには、-cでディレクトリから.tarにまとめ、-zで圧縮します。compressed.tar.gzgzipでもファイルを圧縮することができます。printfデフォルトでは、シェルコマンドは標準入力ストリーム(stdin、0)から入力を読み取り、標準出力ストリーム(stdout、1)に出力を書き込みます。エラーが発生すると、それは標準エラーストリーム(stderr、2)に出力されます。echoはデフォルトではstdoutに対してテキストを書き込みます。ほとんどの環境では、それは単にターミナルに表示される、という意味です。"hello"helloパイプオペレータ|は、前のコマンドの出力を、後ろのコマンドの入力にリダイレクトします。17>によるリダイレクトは出力先をstdoutから別のものに変更します。filetestprintfはechoの改良版で、フォーマットやエスケープシーケンスが書けます。"1\n3\n2"132<はstdinではなく、別のところから入力を取得します。"1\n3\n2")123ファイルの中身をコマンドに送る推奨された方法は、UUOCではなく<を使うことです。これを使った場合、データは自然に感じる左から右ではなく、右から左に流れることになるので注意してください。エラーストリームを表します。各ストリームは前述のように|、<、>各演算子を使ってリダイレクトできますが、それとは別に直接数値で書くこともできます。その場合、標準出力は>&1、標準エラーは>&2となります。>&2デフォルトでは標準出力も標準エラーもターミナルに出力されます。./teststderrstdout標準入力を/dev/nullに送ると、標準エラーだけがターミナルに表示されます。1>/dev/nullstderr標準エラーを/dev/nullに送ると、標準出力だけがターミナルに表示されます。2>/dev/nullstdout全てを/dev/nullに送る場合はこうです。&>/dev/null標準出力の出力先を変更するのではなく、複数の出力先に送りたい場合は、teeコマンドを使います。su自分の名前を知りたいときはwhoamiです。usernameというコマンドで実行できます。そのユーザのパスワードが必要です。def-uを省いた場合のデフォルトはスーパーユーザ、通常はrootであり、このユーザはあらゆる操作が無制限に可能です。ghisuで一時的に別のユーザになれます。戻るときはexitです。whoamiandrewsudoとsuの違いについてもっと知りたい人は、こちらの記事を読みましょう。!!スーパーユーザはソフトウェアのインストール、ユーザの作成などを行うことができる唯一のユーザです。時々それを忘れてエラーを起こすことがあるでしょう。root?頭にsudoをつけてコマンドを再入力するとうまくいきます。lists...!!で同じことができます。これは前回入力したコマンドを保持しているショートカットです。lists...デフォルトでは、いちどsudoでコマンド実行に成功すると、その後15分間はパスワード入力なしにsudoコマンドを実行可能です。15分を超えると、ふたたびパスワードを要求されるようになります。Permissionsファイルに対して読み込み(r)、書き込み(w)、実行(x)の操作をそれぞれ可能だったりできなかったりします。-lコマンドで確認することができ、10文字で表されます。tist各行の最初の文字は、ファイルの種類を表します。d=ディレクトリ、l=シンボリックリンク、-=通常ファイルなど。次の3文字はファイルの所有者(u)が持つパーミッション、次の3文字がファイル所有グループ(g)が持つパーミッション、最後の3文字が無関係なユーザ(o)の持つパーミッションです。rはそのファイルを読み取り可能、wは書き込み可能、xは実行可能であるというパーミッションを表します。ディレクトリが実行可能であるとは、そのディレクトリの内容を一覧表示できるという意味です。この3権限のセットを1桁の数値で表すことがよくあります。xが有効なら1、wが有効なら2、rが有効なら4というふうに2進数として計算します。例としてr-xであればrとxが有効なので5です。従って、上記例の3ファイルは順に755、755、644のパーミッションを持つというふうに表されます。パーミッションの次にある数値は、そのファイルを参照しているリンクの数です。その次の2つの文字は、それぞれ所有者名と、所有者のグループ名を表します。今回は所有者もグループも全てandrewです。その次がファイルのサイズ、更新日時、そして最後にファイル名が表示されます。lsの-hオプションは人間が読み取りやすいように出力を調整します。4096などではなく4.0Kと表示します。chownchmodで数値を与えることにより、ファイルのパーミッションを変更できます。tistあるいはプラスマイナスとrwxで直感的操作もできます。tistファイルの所有者はchownで変更できます。testグループの変更はchgrpです。ManagementUsers現在ログインしてる全ユーザの一覧がusersで表示できます。複数のSSHセッションを張ったりなどで同一ユーザが同時に何度もログインすることができます。krishnaログインしていないユーザも含め全ユーザを確認するには、/etc/passwdを参照します。このファイルを変更するとユーザアカウントが破損し、ログインできなくなる可能性があるため、絶対に直接編集しないでください。_aptanaidandrew...ユーザの追加はuseraddです。au_aptaardvarkanaid...ユーザの削除はuserdelです。au_aptanaidandrew...ユーザアカウント操作の詳細についてはこちらを参照してください。Groupsgroupsは、ユーザが属している全てのグループを表示します。hadoopシステム上の全てのグループを確認するには、/etc/groupを参照します。このファイルを理解していないかぎり、直接変更はしないでください。agadmanaidandrew...グループの追加はgroupaddです。agaardvarkadmanaid...グループの削除はgroupdelです。agadmanaidandrew...グループ操作の詳細についてはこちらを参照してください。cmpuniqコマンドは、連続した重複行を削除して表示します。a12sortは行をアルファベット順、もしくは数値順に並び替えます。b123diffは、2つのファイルでどの行が異なるかを表示します。3cmpは、2つのファイルで最初に異なる場所のバイト数を表示します。sedcutは、文字列をなんらかの区切り文字で分割するコマンドで、CSV処理などに向いています。-dで区切り文字を指定し、-fは出力するインデックス(1始まり)を指定します。-f1137sedは、ファイル内の文字列を別の文字列に置換するためによく使われます。s/old/new/new実のところsedは非常に強力なユーティリティであり、この狭いスペースでは到底解説することができません。sedはチューリング完全であり、他のプログラミング言語でできることなら何でもできます。sedは、正規表現に基づいてテキストを検索・置換し、特定パターンに一致する、あるいは含む行を抽出したり、テキストファイルを非対話式にIn-place編集したり、その他様々なことが行えます。詳しくは以下のようなチュートリアルを参照してください。ファイルから、特定のパターンに一致するテキストを見つけるために使用されます。fi...普通に単語検索もできます。/etc/passwdandrew:x:1000:1000:andrew,,,:/home/andrew:/bin/bashファイル内の一致する行を見つけた後、他のプログラムでその行を処理させたい場合などに、grepは最適な選択です。grepでは、正規表現-E、複数文字列のいずれかとマッチさせる-F、ディレクトリ内のファイルを再帰的に検索する-rなどのオプションが存在します。これらのオプションは元々個別コマンドegrep、fgrep、rgrepとして実装されていましたが、個別コマンドは非推奨になりました。おまけいろいろなコマンド名の由来を見てみよう。awkawkは、CSVなどのデリミタで区切られたデータファイルを読み取り、操作することを念頭に作られた言語です。経験的に、grepはファイルから特定の文字列やパターンを見つけるのに適していて、sedはファイル内の文字列を1対1で置換するのに適しています。awkは、ファイルからパターンを抽出して分析するのに適しています。awkができることの例として、2列のデータを含むファイルを処理してみます。file行ごとにループし、数値を合計し、平均を出力するコードは以下のようになります。30sedとawkはどちらもチューリング完全な言語です。これらはパターンマッチングとテキスト処理に非常に役立つ言語で、そしてそれぞれについて書かれた本もたくさんあります。それらについて書き記すにはここには余白が足りません。おまけsedとgrepとawkの違いについて学ぼう。scpsshは、Unixベースのマシン同士がネットワークを介して接続する方法です。137.xxx.xxx.199別のマシンに入ったのでプロンプトが変わりました。closed.マシン1でファイルを作成します。helloこれをマシン2にコピーするにはscpコマンドを使用します。sshはポート番号を-pで指定するのに対し、scpは-Pで指定するのに注意しましょう。00:00確認のため、sshでマシン2に入りましょう。137.xxx.xxx.79そこにファイルが存在しているはずです。hellohellorsyncrsyncは、ファイル間の差分を調べることにより、コピーされるデータ量を少なく抑えるファイルコピーツールです。2つのディレクトリdとsが存在し、dにはファイルがひとつ、sにはふたつ存在するとします。f1ディレクトリをrsyncで同期すると、不足しているファイルだけがコピーされます。list...最終的にdディレクトリには、sディレクトリに存在する全てのファイルが集まります。f1rsyncはssh経由でも実行できます。killネットワークやハードウェアの問題によって、SSH接続が切断されることがよくあります。その際、そのSSH接続から起動されていたプロセスには全てHUPシグナルが送られ、プロセスは強制終了されます。yesコマンドは、停止されるまで"y"を出力し続けます。これをnohupと一緒に実行しましょう。13173psは、現在のユーザが実行しているプロセスを一覧表示します。以下の例では、yesコマンドのPIDは13713です。yesログアウトして再度ログインしてみましょう。'/yes/p'表示されなくなりました。実際は裏で実行され続けていてtopやhtopには出てきます。yeskillコマンドに-9オプションを付けて、このプロセスを強制終了しましょう。13173これでプロセスが終了したため、もうtopにも出てきません。>>cronはタスクを定期的に実行する簡単な方法を提供します。–eコマンドでテキストエディタが開き、cronを編集することができます。以下の行を追加しましょう。~/datefile.txt毎分dateコマンドを実行し、出力をファイルに保存します。2019...再びcrontabを編集し、該当行を削除すると、このジョブは停止します。*は順に分(0-59)、時間(0-23)、日(1-31)、月(1-12)、曜日(0-6もしくはSun-Sat)を表します。各*を数値に置き換えることで、特定の日や特定の時間にのみジョブを実行することができるようになります。曜日に関係なくジョブを実行したい場合は、5番目の*を*のままにしておきます。全ての項目を*にすると毎分実行されるようになり、これが利用可能な最小間隔になります。*のかわりに@rebootと記載します。1時間あるいは一日のうち特定の回数だけ実行するようにしたり、月や曜日や日など複数項目の組み合わせで指定することも可能です。詳しく知るにはこちらを参照してください。popdディレクトリの移動をスタックするには、cdではなくpushdとpopdを使います。以下の例ではホームディレクトリから開始します。pwd/home/andrewフルパスのpushdでディレクトリを移動します。~pushdでサブディレクトリに移動します。~pushdによって積まれたスタックは、表示の一番左側に追加されます。popdすると一番最後に追加されたディレクトリに戻ります。pwd/etc/java/security/security.d何度もpopdすると、最終的にpushdを始めたディレクトリに戻ります。popd~xdg-openxdg-openは、ファイルをデフォルトのアプリケーションで開くコマンドです。HTMLファイルをブラウザで開きたい場合などに便利です。MacOSで言うopenコマンドに相当します。index.htmlxargsxargs引数のリストに対して、ループ的にコマンドを実行します。以下はカレントディレクトリ、親ディレクトリ、親の親ディレクトリに対してlsを実行する例です。index...引数は、–Iオプションを使うことで次のコマンドの引数に割り当てることができます。以下はカレントディレクトリ、親ディレクトリ、親の親ディレクトリに対してcdとpwdを実行する例です。%'/home/andrew/home/もっと詳しく知るには、この素晴らしいチュートリアルをご覧ください。Things楽しいけど役に立たないもの。lynxwは誰がログインしていてさらに何をしているかを表示する、whoの詳細版です。–bash...別のユーザに対してwriteでメッセージを送信することができます。...helloEOFwallはwriteと似ていますが、ログイン中の全ユーザに同じメッセージを送信します。メールやTwitterやWhatsAppといったアプリが普及する前は、メッセージを送るためにwriteやwallがよく使われていました。lynxはテキストベースの、完全に機能するWebブラウザです。bcnautilusは新しいセッションを開き、GUIのファイルマネージャをオープンします。dateは現在の日付と時刻を表示します。2019calは今月のカレンダーをテキストで表示します。本日の日付は強調表示されます。31bcは簡易的な電卓です。かわりにPythonを使いましょう。...20/45これでおしまいです!このリストに追加する必要のある機能や、クールなコマンドを知っていたら教えてください。タイプミスや間違いがあったときも教えてください。ベストを尽くしたつもりですが、きっとたくさんあると思います。この投稿が参考になったのであれば、ぜひコーヒーを買ってください。20192年前に書かれた、とてもよく似た記事を発見しました。フランス語がわかるのであれば、私の記事の補完に最適だと思います。「同じ投稿をPowerShellでやってくれたら思い残すことはない。新しいSSH接続を開く。そのセッションはログオフしてもプログラムはずっと実行されたままで、さらに再接続して続きもできる。」「tmuxはいいぞ。screenと似てるけどもっと便利。動かした後のプログラムを、後からバックグラウンドに持っていける。「ipythonとtrash-cliを是非。+%sでUNIXタイムを表示できるよ。「ncdu初めて知った。「MacとFreeBSDではtopのユーザ名オプションは-Uだったよ。-15か単にkillってするんだ。-15はOSに通知が行く、-9はいきなり電源押して切るようなものだ。「sourceとshは同じ結果になることもあるけど全く同じではない。sourceは現在のbash上で実行されてexportした変数も使える。shは新たなシェルを起動するしexportした変数は使えない。「bashコマンドって言うけど実際はbashコマンドではなくてUnix/Posixコマンドが多いぞ。「xdg-openの画像がWindowsっぽいんだけどどゆこと?」「MobaXTermを使ってWindowsからUbuntuにログインしてるからなのだ。「コマンドプロンプトに|を使っててパイプとわかりにくいのでプロンプトは$にしてほしい。感想チュートリアル形式でわかりやすい、bashコマンド入門記事です。最後まで読めばbashスクリプトをバリバリ組めるようなエキスパートになれるかというと怪しいですが、汎用的なbashコマンドについてはひととおり使えるようになっていることでしょう。LPICのLevel3まで持ってたらよゆーよゆーとか思ってたけど、わりと知らないコマンドも多かった。知っていると知らないとでは大違いなので、コマンドや機能が存在していることそのものを認識しておくと、今後役に立つことでしょう。詳しく知る必要はありません。詳細は必要になったときにmanなりググるなりすればいいんですよ。あと原文は、こうすればこうなりますよというのは書かれているんだけど、"何故"そうなるかが書かれていないところがあってちょっと躓く感じがありました。和訳にあたりそのあたりを一部補完しています。cow!はどう捉えたらいいのかよくわからなかった。requestStockLike520@rana_kualu不労所得で生きたい。upLoginユーザーは見つかりませんでした。