30歳からのプログラミングスマートフォン用の表示で見る30歳からのプログラミング30歳無職から独学でプログラミングを開始した人間の記録。シェル初心者向けに書かれているので、読みやすかった。コマンドがファイルとして定義されていることすら知らないレベルだったので、勉強になった。分かっているようで分かっていなかった「パスを通す」の意味も分かったし。分かってしまえば、なんで分からなかったんだろうという感じではあるが。シェルスクリプトで何が出来るのか分かっていないと自動化の発想すら出てこないので、基礎が分かってよかった。gihyo.jp以下、各章のメモ。例外もあるが、コマンドというのは、基本的にはファイル。whichコマンドを使うと、コマンドのファイルがどこにあるか調べることが出来る。エラー出力の3つは「標準ストリーム」と呼ばれる。パイプ|は、左側のコマンドの標準出力を、右側のコマンドの標準入力にする。リダイレクト>は、左側に書いたコマンドの標準出力先を、右側に書いたファイルにする。>&2は、標準出力ではなく標準エラー出力を使うようにする命令。;でコマンドをつなげることで、複数のコマンドをまとめて実行できる。これを「リスト」という。bab「リスト」をまとめてパイプに渡すには、括弧で囲む。この記法を「サブシェル」という。̄ちなみにecho-sdコマンドは以下の手順で利用できるようになる。テキスト処理で役立つシェル・テクニック筆者の実際の原稿を題材に、テキスト処理を行う。原稿は以下のリポジトリで公開されている。github.comgrepコマンドで検索できる。wcコマンドは、入力された文字列の情報を返す。以下は、カレントディレクトリ以下にある全ての.rstファイルを対象にできるを検索し、該当した行数、単語数、バイト数、を表示している。8572wcに-lオプションを渡すと、行数のみが表示される。-l87awkのFNRは、各ファイルの行数を持っている。基本から押さえるシェルスクリプトシェルスクリプトとは、シェルで実行するコマンドを順番に記述したテキストファイルのこと。シェルスクリプトを用意することで、複雑なコマンドを簡単に実行できるようになる。hoge.bashのようにシェル(この例ではbash)の引数にシェルスクリプトを渡すと、そのシェルスクリプトが実行される。hoge.bashでシェルスクリプトに実行権限を付与できる。./hoge.bashのようにシェルスクリプトを実行できるようになる。./のようなディレクトリの指定をせずにシェルスクリプトを実行するには、そのシェルスクリプトをコマンド検索パスに含める必要がある。ディレクトリを指定せずにシェルスクリプトを実行すると、このコマンド検索パスの中から探す。foundになってしまう。PATH="${PATH}:${HOME}/bin/とする。hoge.bashを実行できる。コマンド検索パスはログインする度に設定しないといけないので、.bash_profileに書くなどしてログイン時に自動的に反映されるようにしておくとよい。位置変数とは、シェルスクリプトの実行時に渡した引数が格納されている変数。$1や$2のように、$と引数の順番の組み合わせになっている。xyzとすると、abcとxyzが表示される。$2コマンドは、実行結果を示す「終了ステータス」を返す。コマンドが成功した場合は0を、エラーが発生した場合は0以外を返す。シェルスクリプトのなかでexitコマンドを使うと、その引数を終了ステータスとして返し、コマンドが終了する。以下のように書くと、aとbを表示したあと、終了ステータスとして0を返す。exitでコマンドを終了するためcは表示されない。c直前に実行したコマンドの終了ステータスは$?という変数に入っている。$?127ifやforなどの制御構文も扱える。条件式にはtestコマンドを使うことが多い。"+%s"で取得できる。この特集では特に触れられていなかった(サンプルには記述されていた)が、シェルスクリプトの1行目には#!/bin/bashなどのシバンを書いたほうがいいはず。-eは、エラーが発生したらすぐにシェルスクリプトを終了させる。-uは、未定義の変数を使った場合はエラーにする。-euをシェルスクリプトの冒頭に書いておくことで、記述ミスした場合はすぐにエラーになり、シェルスクリプトが意図せぬ操作を行ってしまうことを防げる可能性が高まる。以下のコマンドで、パス直下のディレクトリやファイルをファイルサイズの順に並べて表示できる。-shファイル操作は安全が第一なので、削除や上書きは自動化しない。シェルの「展開」をマスターしようbashには「展開」という機能がある。*も展開の一種で、「パス名展開」という。ブレース展開{と}でくくられた文字を展開する。区切り文字として,か..を用いる。a3bx..y..zとすると、xから始まりyに到達するまで、xずつインクリメントしていく。a7bチルダ展開~の後ろにつけた文字列をユーザー名と解釈し、そのユーザーのホームディレクトリパスを展開する。~だけの場合は、実行したユーザーのホームディレクトリパスを展開する。先頭に$をつけると、変数を展開できる。$hogeHOGEコマンド置換$(コマンド)とすると、コマンドの実行結果を展開する。算術式展開$((計算式))とすると、計算式の結果を展開する。展開された文字列を、改行や空白を区切り文字にして分割する。パス名展開*、?、[、]をパターンとして認識しマッチしたファイルを展開する。work_3.txtプロセス置換コマンドの出力結果を、別のコマンドの引数として扱える。<(コマンド)を入力として、>(コマンド)を出力として、扱う。シェルのカスタマイズ方法プロンプトは環境変数PS1で設定されている。\u\$noclobbernoclobberオプションを有効にすると、>によるファイルの上書きを禁止できる。noclobberで確認できる。存在するファイルを上書きできませんnounset未定義の変数を参照すると、空文字が返ってくる。a${FOO}babnounsetオプションを有効にすると、未定義の変数を参照した際にエラーが発生するようになる。以前、Node.jsで環境変数を管理する方法として、dotenvについて...2018-03-08webpack@4のmodeとminimize(UglifyJS)webpackではv4から、modeというオプションが追加された。はてなブログPro30歳無職から独学でプログラミングを開始した人間の記録。月別アーカイブスポンサーリンクはてなブログをはじめよう!numb_86さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。