タグ

ブックマーク / qiita.com/ko1nksm (4)

  • POSIXシェルスクリプトではwhichではなくcommand -vを使うべき理由(+シェルスクリプト版which) - Qiita

    重要 2022-01-30 追記 この記事で解説していた警告の出力は 2022-01-21 に取り消されました(参照 Revert deprecation of which)。そのため Debian which が GNU which に変わることは(少なくとも近い未来では)ないと思います。しかしながら which を使うよりは POSIX で規定されている command と type を使う方を推奨します。 はじめに which コマンドはシステムにインストールされてるとは限りません。実際に最小構成でインストールされてない環境として CentOS があります。一方 command -v は POSIX 規定されているので POSIX に準拠したどのシェルでも問題なく使えます。シェル上では which コマンドを使っても良いと思いますが、シェルスクリプトでは command -v を使う

    POSIXシェルスクリプトではwhichではなくcommand -vを使うべき理由(+シェルスクリプト版which) - Qiita
    pmakino
    pmakino 2024/01/11
    「command -v」を「command+v」に空目してしまい、「シェルスクリプトの話なのになぜMac前提?てかスクリプトの中で貼り付け操作とは??」としばし困惑するなどした
  • パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita

    はじめに コマンドをパイプでつなげた時、各コマンドの間にはいくつかのバッファが存在します。そのバッファについてちゃんと意識しているでしょうか? バッファの存在によって各コマンドの実行には分かりづらい変化があります。そのバッファを知らないと罠にハマってしまう・・・かもしれません。 プロセス間のパイプ通信のバッファ まずプロセス間のパイプ通信に存在しているバッファです。多くのコマンドは行単位でデータを処理しますが、一般的にパイプでつなげた各コマンドはそれぞれ処理速度が異なります。処理がすぐに終わるコマンドもあれば時間がかかるコマンドもあります。各コマンドは並列で動作可能ですが必ずしも並列で動作するわけではありません。 一般論としてパイプライン全体の処理にかかる実時間はパイプでつながったコマンドの中で一番遅いコマンドに足を引っ張られます。いくら並列で動作可能と言ってもデータが到着しなければ処理す

    パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita
  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

    はじめに もう文字列の置換で sed コマンド使うの禁止して良いんじゃないですかね? 言いすぎだとわかってあえて言っていますが。 悪い書き方(外部コマンドに頼る方法) # 変数 line に入ってる文字列を echo コマンドで出力して sed コマンドに渡し、 # sed の s コマンドで "from" を "to" に置換して出力したものを ret 変数で受け取る ret=$(echo "$line" | sed "s/from/to/")

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    pmakino
    pmakino 2023/09/02
    存じ上げませんでした。Perl拡張正規表現は使えるんだろうか。
  • シェルスクリプトのechoの移植性の問題に本気で対応する - Qiita

    ビルトインの echo を置き換えることで各シェルの非互換性を問題を解決する、移植性のある(ポータブルな)echo シェル関数を作りました。(リポジトリPortable echo) 解説は後半の方でしています。 はじめに echo はシェルスクリプトにおいて一番基となるコマンドなのになぜ移植性がないのでしょう? この話については以下が詳しいです。 echo コマンドの違いと移植性の問題 - 拡張 POSIX シェルスクリプト Advent Calendar 2013 どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 さて「僕らが当に欲しかったもの」それはエスケープシーケンスを解釈せずに文字列をそのまま出力する関数ではないでしょうか? 文字をそのまま出力したい時にどうするか? 簡単な答えは echo の代わりに printf を使用します。以下は printf を使用し

    シェルスクリプトのechoの移植性の問題に本気で対応する - Qiita
  • 1