タグ

shellに関するhinashikiのブックマーク (13)

  • Go言語のCLI作成ツールであるcobra のシェル補完の生成があまりにも簡単 - じゃあ、おうちで学べる

    概要 Goでコマンドラインツールを作成する場合の選択肢としてspf13/cobraがあると思いますが、遂にv1.2.0 がリリースされました👏👏👏。大きな機能追加として completion が追加され、大枠の使い方とシェル補完の生成についてこのブログではやっていくメモ書きになってます。それ以上に言及しようと思ったのですが完全に体力不足でーす。 やっていく install CLIがあるので利用するさまざまな日語での入門記事がcobra には存在するので詳しくはその辺を参照してください。ちなみに、公式ドキュメントが最高で公式ドキュメントに誤りがあればコントリビューションのチャンス。 $ go get -u github.com/spf13/cobra って思ったら雑な備忘録を自分も書いてましたが一切の参考にならん syu-m-5151.hatenablog.com init コマンド

    Go言語のCLI作成ツールであるcobra のシェル補完の生成があまりにも簡単 - じゃあ、おうちで学べる
  • いい加減覚えよう。 `command > /dev/null 2>&1`の意味 - Qiita

    質問 command > dev/null 2>&1ってよく書いてませんか? crontabでよく書いてませんか? でもそれ、前のcrontabコピペして書いてませんか? 実は意味を理解せずに書いてませんか? ゴール ファイルディスクリプタを理解する command > /dev/null 2>&1の意味をきちんと理解する 基礎知識 1. ファイルディスクリプタ Unixには、次の3つの入出力があり、それぞれ番号が振られています。 0: 標準入力 1: 標準出力 2: 標準エラー出力 ファイルディスクリプタとは、これら入出力をOSが判別する為に割り当てられた番号の事です。 2. リダイレクト よく>という記号を見ると思いますが、これがリダイレクトです。 例えば、標準出力に出すだけのシェルスクリプトを作ってみます。

    いい加減覚えよう。 `command > /dev/null 2>&1`の意味 - Qiita
  • シェル芸初心者によるシェル芸入門

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

    シェル芸初心者によるシェル芸入門
  • コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ

    fillinというコマンドラインツールを作成しました。 コマンドの一部を変数化して、別の履歴に保存しておけるツールです。 ステージング環境と番環境のように、同じコマンドで複数の環境を切り替えるのに便利です。 zshの (エッセンシャルソフトウェアガイドブック) 作者:広瀬 雄二発売日: 2009/06/17メディア: 単行(ソフトカバー) どうして作ったの コマンド履歴って便利ですよね。 私はよくコマンド履歴からコマンドを選んで実行しています。 シェルに付属しているデフォルトの履歴を使っている方もおられるでしょうし、fzfやpecoのようなインタラクティブな絞り込みを行なっている方もいるでしょう。 私が一番困っていたのが、認証キーの扱いです。 webアプリを作っていてcurlで素早く確認するときに、認証キーやアクセストークンを打つことがあります。 アクセストークンのようなランダムな英

    コマンドラインがさらに便利になるfillinコマンドを作りました! - プログラムモグモグ
    hinashiki
    hinashiki 2017/06/14
    シェル芸が少し楽になるかもツール
  • Unix Shells: Bash, Fish, Ksh, Tcsh, Zsh - Hyperpolyglot

    Shells read input up to an unquoted newline and then execute it. An unquoted backslash followed by a newline are discarded and cause the shell to wait for more input. The backslash and newline are discarded before the shell tokenizes the string, so long lines can be split anywhere outside of single quotes, even in the middle of command names and variable names. In the shell grammar, lists contain

    hinashiki
    hinashiki 2015/07/12
    各シェルの文法確認
  • シェルで変数のインクリメントに expr を使うと100倍遅い件

    シェルプログラミングにおいて、ループカウンタなどをインクリメントするとき、どのようにしますか? いきなりですがサンプルから。 #!/bin/bash COUNT=0 while [ $COUNT -lt 1000 ]; do # 何かの処理 COUNT=`expr $COUNT + 1` # COUNT をインクリメント done expr コマンドを使う? シェルプログラミングの入門記事などを見ると、変数のインクリメントに上記のような COUNT=`expr $COUNT + 1` を用いているものが多くあります。 しかし、この書き方は とても遅い です。空のループを1000回繰り返すだけでも手元の mac (Core i7) で約2秒もかかってしまいました。

    シェルで変数のインクリメントに expr を使うと100倍遅い件
    hinashiki
    hinashiki 2014/12/28
    あんまりにも糞スピードだったら検討するべき
  • 意識の低い自動化

    意識を低く保ったまま、定型作業を自動化する話です。 ※どうも言葉足らずで誤解させてしまっているようなので補足を書きました。ご覧ください http://qiita.com/greenspa/items/fff535d2ae5da36e36fe

    意識の低い自動化
    hinashiki
    hinashiki 2014/12/07
    おもしろい。機会があれば。pythonの学習コス(ry
  • Crontabの環境変数はどうなっているのか、調べる - それマグで!

    Crontabの環境変数のポイントまとめ CRONの環境変数はCRON設定の先頭に記述します。 Bashの環境変数と共有してないので注意。 ただし、以下の変数はUNIXユーザーに通常存在する環境変数なので、使うことが出来る。 HOME、SHELL、LOGNAME そのほかはCrontablにかく Bash環境変数と共有するなら、Cronで実行するスクリプトに環境変数を定義するべき。 わかりやすい例。 例があったので見た方が速い。 http://blog.livedoor.jp/sasata299/archives/51279219.html Crontabの記述例。 Q.ユーザー環境変数は引き継がれるの? A.されない Manページによると ・HOME、SHELL、LOGNAMEが設定される、HOMEはcron設定のファイルオーナーの環境変数が使われる。 manより抜粋 crontab の

    Crontabの環境変数はどうなっているのか、調べる - それマグで!
    hinashiki
    hinashiki 2014/07/03
    知らなかったなぁ。。。。
  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
    hinashiki
    hinashiki 2014/02/18
    変数を扱うために覚えておくべき色々
  • (シェルスクリプト)bashの機能だけで文字列を分割して変数に代入

    (シェルスクリプト)bashの機能だけで文字列を分割して変数に代入 cutやtr、sed、awkを使わずに「hoge="AAA,BBB,CCC"」のAAA・BBB・CCCを変数に代入したい時1. $1・$2・$3に入れるOIFS="$IFS"; IFS=',' set -- $hoge; IFS="$OIFS" echo "$1" echo "$2" echo "$3"2. readを使うIFS=',' read -r hoge1 hoge2 hoge3 <<< "$hoge" echo "$hoge1" echo "$hoge2" echo "$hoge3"3. 配列に入れるOIFS="$IFS"; IFS=',' hoge_array=($hoge); IFS="$OIFS" echo "${hoge_array[0]}" echo "${hoge_array[1]}" echo "$

    (シェルスクリプト)bashの機能だけで文字列を分割して変数に代入
    hinashiki
    hinashiki 2013/12/15
    使える
  • xargsコマンドの中(引渡し先コマンド)でパイプを使うには - 山歩きプログラマー

    ずっと自分の中でやり方が謎だったがようやく解決。 xargsがデータを引き渡すコマンドの中で処理ごとに随時パイプを使いたいが、普通に使うとxargsが全部処理を終了してからパイプに引き渡される。 そこで登場するのがksh。 ls | xargs -i ksh -c 'grep {} data_file | wc -l' こんな感じで使えば毎処理ごとにパイプに渡される。

    xargsコマンドの中(引渡し先コマンド)でパイプを使うには - 山歩きプログラマー
    hinashiki
    hinashiki 2013/08/21
    これは便利
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • 狐の王国 bashを捨ててzshを使うべきたった3つの理由

    #2 bashを捨ててzshを使うべきたった3つの理由 去年だったか一昨年あたりだったかからbashをやめてzshを使っているのだが、実はその理由というのはたいしたものではない。 世の中にはzshを使うとこんなに幸せになれますよ的な記事がいっぱいあるのだが、そこまでカスタマイズにハマり込むほど暇でもないし、bash程度でコマンドラインは充分すぎるほど便利なのだ。それ以上の事をするならそれこそスクリプトでも書いて~/binに入れておけばいい。 で、それなのになんでzshを使ってるかというと、それでもbashには無い魅力がそこにあるからだ。 @ 1. ヒストリが共有できる: もうこれが最大の理由。 コマンドライン、CLIの魅力のひとつに、実行したコマンドを保存しておけるというのがある。使い方のうろ覚えなコマンドなど、Ctrl+rを押してヒストリをインクリメンタル検索し、過去に実行したときのオプ

  • 1