タグ

shellに関するHHRのブックマーク (117)

  • シェルスクリプト オプション解析 徹底解説 (getopt / getopts) - Qiita

    はじめに シェルスクリプトでオプション・引数解析といったらまず挙がるのが getopt と getopts です。さてどちらを使うべきでしょうか?始めに断っておくと実は私はどちらも積極的には使っていません。なぜなら独自実装でもほとんどコードは変わらず、より柔軟な処理ができるからです。とはいえ getopt と getopts はシェルスクリプトの基なのでこれらの使い方について解説したいと思います。(解説が不要な人はそれぞれの「使用方法」を読んでください。) 編の前に この記事を書いたあと独自実装のオプション解析コードを書き最終的に getopt や getopts よりも高機能で使いやすいオプションパーサー getoptions を開発しました。もはやちまちまとしたコードを手書きする作業は不要です。シェルスクリプトで簡単に引数解析したいだけという方にはこちらをおすすめします。POSIX

    シェルスクリプト オプション解析 徹底解説 (getopt / getopts) - Qiita
    HHR
    HHR 2024/02/19
    getoptsとgetoptは別という話
  • スクリプト言語としてみた各POSIXシェルの特徴と互換性上の注意点まとめ - Qiita

    はじめに この記事は私の主観かつ知っていることをまとめたものです。古くからのシェルの専門家とかではなくここ数年の間に必要になった時にその都度調べたものなので間違いとかもあると思います。またタイトルの通りスクリプト言語としての比較です。つまりインタラクティブシェルの機能についての比較はしていません。(そもそも使い込んでるわけじゃないので知らないです。)POSIX シェルに限定しているのも私が他のシェルを詳しく知らないからです。もし今も使われていて(もしくは開発中で)ここに書かれていない POSIX シェルがありましたらコメントで教えて下さい。(※ csh, tcsh, fish は POSIX シェルではありません。) シェルの系統は少し古いですが「What does it mean to be “sh compatible”?」に投稿されている図が詳しくてわかりやすいです。またこちら「~s

    スクリプト言語としてみた各POSIXシェルの特徴と互換性上の注意点まとめ - Qiita
    HHR
    HHR 2024/01/20
  • 【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita

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

    【脱sed】いい加減シェルスクリプトで文字列をsedで置換するなんてやめよう - Qiita
    HHR
    HHR 2023/09/02
  • Why are these curly braces necessary in sed?

    HHR
    HHR 2023/04/06
    sed curly braces { の仕様
  • GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts
    HHR
    HHR 2022/11/07
  • シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita

    はじめに bash などのシェルには [ ... ] と [[ ... ]] の二種類の比較方法があります。一つはコマンド、もう一つはシェルの文法なのですが、具体的にはこの二つは一体何が違うのでしょうか? そもそもなぜ似ている機能が二つもあるのでしょうか? この記事は言語設計者の気持ちになって考えることで、その理由を解き明かそうという記事です。 なお、違いについての簡単な説明については「test と [ と [[ コマンドの違い - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog 」の記事がよくまとめられていますので紹介します。一通りの違いを素早く知りたい方はこちらを参照してください。 参考 シェルの歴史や種類については「シェルの歴史 総まとめ(種類と系統図)と POSIX の役割」に詳しくまとめています(系統図とか頑張って書いたので見

    シェルスクリプトの [ ] と [[ ]] の違いを歴史的に解説 〜 言語設計者の気持ちになって理解しよう - Qiita
    HHR
    HHR 2022/11/07
  • Difference between Access, Modification and Change Time in Linux?

    HHR
    HHR 2022/10/18
    statコマンドの出力のAccess,Modification,Changeの仕様
  • sortコマンドで複数キーによるソート

    sort コマンドの挙動がわかりにくかったのでメモです。 サンプルとして次のような3つのフィールドを持ったデータを使います。 sort_sample.tsv 5 aab 5 1 abb 5 10 aab 10 5 abb 1 1 baa 10 1 aba 5 10 bab 5 10 abb 10 1 bab 1 1 aab 5

    sortコマンドで複数キーによるソート
    HHR
    HHR 2022/10/18
    “-k 2,2 のように範囲を絞るのがポイントです。”
  • 高性能pingツール「fping」の使い方

    Tecmint.comは7月31日(米国時間)、「Fping - A High Performance Ping Tool for Linux」においてfpingコマンドの使い方を紹介した。fpingコマンドはpingコマンドと類似の用途で利用するコマンド。pingと異なり複数のホストや範囲を指定して動作させることができるという特徴がある。複数のホストに対して一斉にpingコマンドを実行したいといった用途で利用することができる。 fpingコマンドの主なインストール方法と紹介されている利用方法は次のとおり。

    高性能pingツール「fping」の使い方
    HHR
    HHR 2021/06/02
  • あなたはps -ef派なのか、auxf派なのかをちょっとだけまとめてみた | ten-snapon.com

    あなたはps -ef派なのか、auxf派なのかをちょっとだけまとめてみた | ten-snapon.com
    HHR
    HHR 2021/05/23
    auxだけどスレッド見たい時はL使うの分かりみが深い
  • ターミナルのディレクトリ移動を高速化する - Qiita

    tl;dr よく使われるコマンドの一つに cd コマンドがあります。ターミナル生活の 80% 近くは cd と ls である、という英文記事を何処かで見かけました。それを効率化しようという Tips です。 目的 cd はよく使われるのに使い勝手が悪いコマンドである気がしてなりません。cd コマンドは有効なパス(相対パス、絶対パスは問わず)しか解釈してくれないからです。つまり、存在していて尚且つパスが解決できるものに限るのです。例えば、ホームディレクトリにいるときに、/home/lisa/work/dir に行こうとして cd dir とだけタイプしても no such file or directory (そんなディレクトリは見当たらないよ!)と言われてしまいます。きちんとした経路でなければならないのです。いちいちパスを覚えていない場合や、部分的にしか思い出せない場合には結構面倒ですよね

    ターミナルのディレクトリ移動を高速化する - Qiita
  • LS_COLORSを設定しよう - Qiita

    lsコマンドで出力されるファイルやディレクトリに色をつけたい場合、LS_COLORSという環境変数にカラー設定を記述することはよく知られていることと思います。 しかし、これをいちいち手動で設定したり追加したりするのは面倒です。 そこで今回はdircolorsというコマンドを用いて、カラー設定を読み込む方法を紹介します。 今回読み込むカラー設定はdircolors-solarizedです。 名前の通り、みんな大好きsolarizedのカラー設定です。 今でもちょくちょく更新されていて、色々な拡張子のファイルを良い感じに色付けしてくれます。 カラー設定の読み込み では題のカラー設定の読み込み方法についてです。 dircolors-solarizedはcloneなりDLなりして持ってきてもらうとして、その中にあるdircolors.ansi-universalというカラー設定を読み込んでみまし

    LS_COLORSを設定しよう - Qiita
    HHR
    HHR 2021/02/02
    LS_COLORS:GNU lsの環境変数。LSCOLORS:BSD版lsの環境変数
  • Linux — source コマンドは何をしているのか > 実は環境をリロードするためのものではない - Qiita

    ごく基的なことだが、今までよく考えずに使っていた。 source コマンドというと、「.bash_profile を変更した後に使うもの」ぐらいのイメージしかなかった。 謎 「なぜひと手間かけさせるのか」「プロフィールファイルを変更した時に、環境設定も自動更新してくれたら良いのに」と思っていた。 だが source コマンドは実は、環境をリロードするためのものではない。 ファイルに書かれた内容を 忠実にコマンドとして実行していくものなのだ。 $ source と $ bash の違い では $ bash でファイルを実行するのとは何が違うのか。 $ bash [file] はシェルスクリプト内の 「裏側=閉じられた環境」 でコマンドを実行する。 $ source [file] は 「表側=開いた環境」 で、コマンドを実行する。 動作が変わる例 たとえば「変数に代入するだけ」の単純なスクリ

    Linux — source コマンドは何をしているのか > 実は環境をリロードするためのものではない - Qiita
    HHR
    HHR 2020/12/22
    sourceコマンドによる現在のshellへの作用
  • 入門 シェル実装

    開発者にとってシェルが必要不可欠なものであることは論を俟ちませんが、当たり前の存在すぎてこれがどのように実現されているのかを知る機会はあまりないと思います。トークでは、シェルがどのように実現されているのかを、実際にシェルを実装する過程を通じてお話しします。 ※ もともとのトークのタイトルは「入門 シェル」でしたが,わかりやすさのため「入門 シェル実装」にタイトルを変更しています.

    入門 シェル実装
    HHR
    HHR 2020/02/29
    良資料。新卒研修とかで見せたい内容
  • シェル芸初心者によるシェル芸入門

    MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue

    シェル芸初心者によるシェル芸入門
    HHR
    HHR 2017/07/30
    良資料。よーまとまっとる。
  • 障害対応でよくつかうコマンド覚書(逐次更新) - Qiita

    はじめに よく障害対応の際につかうコマンドの見方を自分でまとめていたものを一般公開してみる。 詳細についてはここを参考にせずにちゃんとmanをよみましょう! w ヘッダ部 現在の時刻 Uptime(システムが稼働している期間) 現在ログインしているユーザーの数 過去1,5,15minでのシステムのロードアベレージ Uptimeが短いと再起動した。 また、ロードアベレージの1が高く5,14が低いなら直近、 全部が高いなら継続、 1が低く他が高いならすでに問題が解消した可能性が高い。 下部 USER :ユーザ名 TTY : FROM :アクセス元 LOGIN:ログイン時間 IDLE :アイドル(現在時間-最後にttyにアクセスした時間)している時間 JCPU :そのttyから実行されている全プロセスが使った時間。これには 過去のバックグラウンドジョブは含まれないが、現在実行しているバックグラウ

    障害対応でよくつかうコマンド覚書(逐次更新) - Qiita
    HHR
    HHR 2016/12/15
    ps uxww $PIDでコマンドが切れることなく折り返して表示
  • あなたの知らない less の世界 - Qiita

    最近 prezto 入れたんですよ。prezto。そしたらいつものシェル世界が見違えるほど使いやすくなって身長も 3 メートルくらい伸びたんですが、それは余談でして、prezto 入れた後に less 使ってみたら余りの変わりっぷりに驚いたんです。 これを機に man page を読み直してみたら更に驚き。less ってこんなスゴイ物だったのか!みたいな。今回はそんな less の底力を紹介します。 環境変数 $LESS less には様々なオプションがあるのですが、これを予め環境変数 $LESS に設定しておくと、毎度 less ファイル名 と打つだけでそれが有効になります。更に、後述しますが、この設定は less 起動中にオン・オフして切り替えることが可能です。 # 最低限でもこれくらいは設定しておこう export LESS='-i -M -R' # 僕は後述の物を全部付けてます(-

    あなたの知らない less の世界 - Qiita
    HHR
    HHR 2016/11/07
  • 最近、httpstat なるものが流行っているらしい - tellme.tokyo

    github.com おそらく先行実装は python で書かれたこれです。 curl にはウェブサイトの応答時間を計測する機能が搭載されており、このツールではそれを利用して出力結果をグラフィカルに表示させています。単なる curl のラッパーのようなツールなのですが、見た目がリッチになるのに加えて、単一ファイルで実行でき python のバージョンに影響されないような工夫がされているのが、受けているポイントのような気がします。 このツールを見たとき「Go で書いてみるの良さそう!(この手のツールで単一バイナリになるのは嬉しいですよね)」と思い、休憩時間やお昼休みなどにちまちま書いていたら、二日前に先を越されてしまいました(そりゃそうですよね。なんでもスピードが大事だと痛感)。 github.com また、ついこの間まで 800 Stars くらいだったのですが、ここ1週間で爆発的に伸びて

    最近、httpstat なるものが流行っているらしい - tellme.tokyo
    HHR
    HHR 2016/09/26
  • Big Sky :: コマンドラインから JSON が簡単に作れるツール jo

    « golang で画像アップロードが簡単に出来る go-imageupload を使ってみた。 | Main | SQLite3でカジュアルにズンドコキヨシ » コマンドラインから JSON を扱うツールとしては jq が一般的ですが、例えば ls を実行した結果を JSON の Array にしたいであったり、コマンドライン引数から簡単に Object を作りたいといった場合には一旦考え込まないといけないくらい使い方が難しかったりします。そんな中でひょいと現れたのが jo です。 GitHub - jpmens/jo: JSON output from a shell JSON output from a shell https://github.com/jpmens/jo 作者である jpmens さんがなぜ jo を作るに至ったかをブログに書いています。 Jan-Piet Mens

    Big Sky :: コマンドラインから JSON が簡単に作れるツール jo
    HHR
    HHR 2016/09/06
  • Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。

    昨日僕の Twitter タイムラインで q というツールが話題に上がっていました。 GitHub - harelba/q: q - Run SQL directly on CSV or TSV files Text as Data q is a command line tool that allows direct execution of SQL-like q... https://github.com/harelba/q 標準入力を SQL で抽出できるという物です。ただ個人的には「こういうの python じゃなくて Go でビルドされてると助かるよなー」と思ったので q と同じ様な動作になるツールを作ってみました。 GitHub - mattn/qq Select stdin with query https://github.com/mattn/qq 例えば msys2 のシ

    Big Sky :: UNIX コマンドを SQL で抽出できるツール qq を作った。
    HHR
    HHR 2016/08/06