信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    素敵だら! Linux コマンド ~基本編 その3~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回も前回に引き続き「~基本編 その3~」です。■find私の一番好きなコマンド find。その名前からもわかる通り、ファイルやディレクトリなどを探すコマンドです。まずは基本的な使い方から。今いるディレクトリの中から admin ユーザーが作成した、test_{日付}.txt ファイルってどこにあったっけ?を調べるときはfind ./ -user admin -type f -name test*.txt のようにします。`-name` は探す対象の名前を指定するオプションで、ワイルドカードが使用できます。※ `-regex` を使えば正規表現も可能です`-type` は探す対象の種類を指定します。種類は以下の通りです。ファイル `f`ディレクトリ `d`シンボリックリンク `l`これだけでも結構便利なんですが、 `find` コマンドの肝はなんといっても `-exec` オプション。これを使えば検索した結果に対して、コマンドを実行できます。例えば先ほどの test.txt をすべて削除したいときは、find ./ -user admin -type f -name test*.txt -exec rm {} \; といった具合です。この例でいうと、 `{}` に検索結果のファイルが一つずつ置き換わり、 `rm` によって削除されます。末尾についている `\;` は何かというと、セミコロンが `-exec` オプションの終了を意味し、バックスラッシュはエスケープだそうです。   参考: https://stackoverflow.com/questions/20913198/why-are-the-backslash-and-semicolon-required-with-the-find-commands-exec-optio`\;` の代わりに `+` を使用することで、コマンドに渡していた検索結果を、一つずつではなく、まとめた形で渡すことができます。上記の例でいえば、 `\;` はrm test1.txt rm test2.txt rm test3.txt となり、`+` はrm test1.txt test2.txt test3.txt となります。他にも検索するディレクトリの階層の深さを指定する `-mindepth` `-maxdepth`特定のディレクトリ検索対象から除外する `-prune`更新日からファイルを探す `-mtime`など、機能がとても充実しています。以上、細かい要望にも応えてくれる素敵な `find` コマンドでした。
  • テクログ

    素敵だら! Linux コマンド ~基本編 その2~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。今回は前回に引き続き「~基本編 その2~」です。echocatrm■echo言わずと知れた文字列出力コマンド `echo` です。`echo` の後に続いて文字列を入力することで、その文字列をそのまま出力してくれます。だから echo(やまびこ)というわけですね。`echo` 自体は多機能ということはありませんが、なくてはならない存在です。主にメッセージの表示に使用され、変数も展開して表示することができるのでスクリプト内で多用されます。知っておくべきオプションとしては `e` オプションで、エスケープシーケンスを解釈して出力してくれます。echo -e 'hogehoge\npuyopuyo' ※クォーテーションで文字列を囲まない場合は「hoge\\npuyo」のようにエスケープシーケンスにバックスラッシュ「\」を2つ付けますそのほかしばしば利用されるのが、ファイルに文字列を上書きまたは追加で書き込みたい時です。リダイレクトの `>` または `>>` を使用して `echo` による画面への出力(標準出力といいます)をファイルへの出力に変換します。・上書き(または新規作成)echo hogehoge > file ・追加echo hogehoge >> file もちろん `e` オプションを使用して文字の途中に改行を入れることもできます。■cat`cat` は concatenate (連結)のことで、ファイルとファイルを連結した結果を標準出力します。`echo` と同様にリダイレクトを使用することで、連結した結果をファイルに出力することもできます。指定するファイルは1つでもよく、その場合ファイル内容が出力されるだけになるので、ファイルの閲覧にもしばしば使用されます。結合してファイルに出力※指定するファイルはいくつでもよいcat hoge.txt piyo.txt > file.txt hoge.txt の内容を出力して閲覧cat hoge.txt またヒアドキュメントを用いることで、`echo` ではできなかった複数行の文字列を出力することもできます。・ヒアドキュメントで標準出力cat << EOS hogehgoe piyopiyo EOS ・ヒアドキュメントでファイル出力cat << EOS > file.txt hogehgoe piyopiyo EOS ■rm`rm` はファイルとディレクトリの削除コマンドです。rm file.txt のようにすることで指定したファイルを削除することができます。ディレクトリを削除するときは `r` オプションをつけて再帰的に(recursive)削除する必要があります。その時にはディレクトリ内のファイルも併せて削除されます。rm -r dir 削除したいファイルが複数ある場合、一つずつ指定することもできますが、ワイルドカードを使用することで一気に削除することができます。例えばディレクトリ test にファイル hoge1, hoge2, piyo3 が存在し、ファイルのみ全て削除したいときにはrm test/* hoge とファイル名のついたファイルのみ全て削除したいときはrm test/hoge* とすることで実現できます。`rm` によってファイルを削除するとき、環境にもよりますが、誤った削除を避けるためファイルを削除する毎に確認のプロンプトが表示され、y キーと Enter キーを押下することで削除が実行されます。しかし削除対象のファイルが多数ある場合、一つ一つ削除するごとに確認するのは骨が折れます。そのようなときには強制的に削除するオプション `f` が利用できます。使用には注意が必要で、バックアップを取っていない環境やレビューを通っていない作業である場合、基本的にやってはいけません。組織によっては、禁止していたり規則を設けているところもあるかもしれません。ひとつパスやファイル名を間違えただけで、削除してはいけないファイルが抹消され、大規模な障害となることもあります。なかでも `r` オプションと組み合わせた強制再帰的削除はとても危険です。以前私の勤めていた会社の同僚が開発環境で以下のコマンドをroot ユーザーで実行してしまいました。rm -rf / これは Linux のシステムを含めまるごと削除してしまうコマンドです。ひとつの開発環境が消え去り、大きな損害を生むことになりました。上記コマンドを実行した動画がネットに投稿されていますので、興味のある方は探してみてください。または個人の仮想環境で試してみるのも良いと思います。以上、`echo`, 'cat', 'rm' のご紹介でした。
  • テクログ

    素敵だら! Linux コマンド ~基本編~

    こんにちはうなぎです。IT開発者にとって避けては通れない数ある Linux コマンドのうちから、厳選してご紹介する不定期コーナー“素敵だら! Linux コマンド”。本日は「~基本編~」。基本的かつ必要不可欠となるコマンドです。lscdcp■ ls`ls` は指定されたディレクトリにあるディレクトリ・ファイルの情報を出力するコマンドです。オプションに `ls -la` などとすれば、隠しファイル、カレントリ・親ディレクトリを含む全てのディレクトリ・ファイル(`-a`)を詳細な(`-l` )情報とともに出力することができます。オプション `-la` は便利なので、しばしば `l` や `ls` のエイリアスに設定されることもあります。`-la` しか普段使いされないといってもよいほどですが、もちろんオプションはそれだけではありません。`-h` `--human-readable` はファイルサイズの単位を 4096 であれば 4.0K のように読みやすい形で出力してくれます。`-m` はリスト対象をカンマ区切りで出力してくれます。などなど、ほかにも意外と便利なオプションが揃っています。また、他のコマンドと組み合わせて使われることもあります。例えばカレントリディレクトリ内にあるファイル数を知りたい場合はls -A | wc -l などとすることで、カレントリ・親ディレクトリを除く(`-A`)全てのディレクトリ・ファイルの数を集計(`wc -l`)できます。Linux には“パイプ”と呼ばれるものがあり、パイプはコマンド(プロセス)の出力を別のコマンド(プロセス)に入力することができ、上記のように縦線(|)で書き表されます。`ls` コマンドで出力した情報をこの“パイプ”機能によって他のコマンドに渡すことにより、より有用な情報を得ることができるわけです!■ cd`cd` はディレクトリを移動するためのコマンドです。オプションはあまりないので、しばしば使う小技をご紹介します。ホームディレクトリに移動するcd `cd` だけです。ホームディレクトリとは echo $HOME などとすると表示されるディレクトリで、ログイン直後は大体そのディレクトリに居ることになります。ひとつ前のディレクトリに戻るcd - ハイフン(`-`)をパスにすることで、ひとつ前に居たディレクトリに移動することができます。一つ前のコマンドで指定したディレクトリに移動するcd $_ `$_` は Bash の環境変数で、最後に実行したコマンドの引数が格納されています。例えばあるファイルの場所を確認するために `ls` コマンドを使用し、そのファイルが見つかったとします。次にそのディレクトリに移動したいものの、もう一度パスを指定するのが面倒ですよね?そんな時に上記のコマンドを実行することで、入力を省略することができます!※ Bash とは Linux OS を動かしているコア部分(カーネル)に処理を中継いでくれる、コマンドベースのインターフェースを持ったソフトウェアの一つです※ 他にも csh, ash, zsh などがあり、最近では fish が人気のようです`$_` 他、Bash の環境変数については以下を参照https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html■ cp`cp` はファイルやディレクトリをコピーするコマンドです。第一引数にコピー元、第二引数にコピー先を指定します。また、ディレクトリをコピーする時には、再帰コピーを示す `-R, -r, --recursive` のいずれかのオプションをつける必要があります。他にもコピー先が既に存在していた場合に強制上書き(`-f`)したり、上書き時に確認をする(`-1`)オプションなどがあります。単純にディレクトリやファイルを別の場所にコピーする際に使用する他にも、例えば設定ファイルを編集する前にバックアップを取っておきたいときなどは、cp file{,.back} とすると便利です。上記ではコピー先となる第二引数を省略し、コピー元のファイル名に `{,.back}` を付け加えています。こうすることで結果、実行したディレクトリでは file.back が生成されます。わざわざ第二引数を指定しなくて済むわけです!この `{}` は“ブレース展開”というもので、cp コマンドに限ったものではなく、例えば ファイルを移動する・ファイル名を変更する際に使用する `mv` では、mv file{,.old} とすることで、ちょっと名前を変えてファイルを置いておくこともできます。“ブレース展開”は他にも一度に複数のファイルを指定したりできるなど面白い機能ですが、今回は割愛します。`{}` については以下を参照https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html以上少ないですが、`ls`, 'cp', 'mv' のご紹介でした。