タグ

shellに関するtroronのブックマーク (10)

  • パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita

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

    パイプに関係するさまざまなバッファ、ちゃんと意識していますか? - Qiita
  • An Opinionated Guide to xargs

    Preliminaries What Is xargs? It's an adapter between text streams and argv arrays, two essential concepts in shell. You pass it flags that specify how to split stdin. Then it generates arguments and invokes processes. Example: $ echo 'alice bob' | xargs -n 1 -- echo hi hi alice hi bob What's happening here? xargs splits the input stream on whitespace, producing 2 arguments, alice and bob. We passe

  • commandlinefu.comで見つけた便利・面白Linuxコマンド使用例 - もた日記

    commandlinefu.com コマンド使用例 ^foo^bar mount | column -t time read (ctrl-d to stop) echo "You can simulate on-screen typing just like in the movies" | pv -qL 10 mv filename.{old,new} diff <(sort file1) <(sort file2) !* !:- fc date -d@1234567890 ps awwfux | less -S bind -P mkdir -p work/{d1,d2}/{src,bin,bak} showkey -a ccze grep . filename > newfilename grep -Fx -f file1 file2 grep . * kill -9 $$ tail

    commandlinefu.comで見つけた便利・面白Linuxコマンド使用例 - もた日記
  • Googleの肩に乗ってShellコーディングしちゃおう - Qiita

    はじめに GoogleさんがShellスタイルガイドを共有していたので、いくつか気になった点をピックアップしました。 自分のShellスタイルはかなり我流なので、自省の意味も込めてコメントも併記します。 Googleスタイルガイドの元ネタ (Python/C++/Java/Rとかだけでなくdocumentガイドなど色々あります) https://github.com/google/styleguide Shellスタイルガイド (今回はこちら) http://google.github.io/styleguide/shell.xml 当は人間がチェックするのではなくcpplintのためXML定義なのかもですが、気にしない気にしない。 (見たところcpplintc++だけだと思ってます) commitフックでshell系のlint走らせろっていうのが今風なのかもしれませんが、キニシナイキ

    Googleの肩に乗ってShellコーディングしちゃおう - Qiita
  • これだけ覚えておけばOK!シェルスクリプトで冪等性を担保するためのTips集 - Qiita

    「シェルスクリプトって冪等性ないじゃないですか」 そんなことをよく耳にします。しかし、if文を入れるだけで簡単に冪等性を担保したシェルスクリプトを書くことができます。 今回は、私が使う条件式を紹介します。基的な形式なものなので、組み合わせると幅が広がりますよっ! ファイル/フォルダ関係 ファイルの存在確認 -e 'ファイル名'で「ファイル名」が存在しているかチェックします。 if [ -e 'ファイル名' ]; then # ファイル/フォルダが存在していれば、ファイル/フォルダを削除するなど rm ファイル名 fi

    これだけ覚えておけばOK!シェルスクリプトで冪等性を担保するためのTips集 - Qiita
  • 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
  • シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」

    LINQ in Unity LINQ to GameObject - https://github.com/neuecc/LINQ-to-GameObject-for-Unity/ UniRx - https://github.com/neuecc/UniRx

    シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
    troron
    troron 2014/12/30
  • コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ

    不慣れな環境を不意にいじった時にあるあるネタ。 とりあえずー とか言って勢いで書いたsetupスクリプトを実行してみたら意外と時間かかって、 ちょっと目を離した隙にsshの接続が切れちゃいました! 。。。ありますよね。ほんとよくありますよね。 そうなる予感はあったんだ なんて後の祭りです。ふとした油断から、screenもnohupすらも使わずにやってしまって、こんなことに。 shellがHUPしなかったからプロセスは生きてるものの、ログが見れないから進行状況がわからない。 うまく行ってるのかどうかモヤモヤした気持ちのまま、プロセスが終わるのをじっと待つ。。。 まぁ実に切ないです。 こんな時、いつも思うこと。 このプロセスの出力、もっかいstdoutに繋げられたらいいのに。。。 はい。というわけでつなげましょう。 長い前座ですみません。 切り離したプロセスを用意 #!/bin/bash wh

    コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ
  • プロセスの一時停止と再開 - odz buffer

    サーバが Disk full になりかけていたからとりあえずプロセスを suspend してくれといったら、バックグランドで実行してすでに実行した SSH セッションはログアウト済みなんだけどどうするの、と返された。suspend も resume も signal で実現されているということは案外知られていないものなのだな。まぁ、実際なんていう名前の signal かは自分も覚えていないけど。 プロセスの停止/再開の方法は簡単で、それぞれ kill を使って SIGSTOP と SIGCONT を送ってやれば良い。 % kill -STOP pidで、suspend。 % kill -CONT pidで、resume。 当然ながら、shell で実行中のプロセスは Ctrl-z で suspend できるし、fg/bg で resume できる。

    プロセスの一時停止と再開 - odz buffer
  • パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita

    これはコマンドの標準出力を1行ずつ f という変数に読み込んで何らかの処理を行うってやつです。 whileの中でやることがファイル操作などの一般的なことならこれで全然問題ないんですが、実行中のシェル環境に対する処理(具体的には変数の設定など)を行おうとすると期待通りにいってくれなくなります。例えばこんな感じ↓ # findで見つけたファイル名をfilesという配列変数に詰め込みたい files=() find -type f | while read -r f; do files+=("$f") done echo "${files[@]}" # 確かにfilesに値を入れた筈なのに空が出力される?? これはパイプで繋げると後ろのwhileがサブシェルで実行されてしまうために起こる現象です。噛み砕いて説明すると… 現在findを実行中のbashとは別に、パイプの後ろでもう一つのbashが起

    パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita
  • 1