タグ

shellに関するpick_mugetuのブックマーク (15)

  • お気に入りのコマンドラインツールを淡々と紹介する

    めちゃくちゃ良い記事でした。 「OSS は使っていることを公言するだけでも貢献になる」と songmu さんが言っていたので、私も貢献したいと思います。 僕も貢献したいのでよく使うコマンドラインツールを紹介していきます。 特定のプログラミング言語等に依存するツールは省いています。 actionlint - GitHub Actions の Workflow ファイルの静的検査 GitHub Actions の Workflow ファイルの静的検査ツールです。 かなり精度が高く、色々な設定ミスを検知してくれます。 エラーメッセージも見やすくて助かります。 aicommits - コミットメッセージを自動生成 変更内容を元に自動でコミットメッセージを AI が生成してくれるツールです。 コミットをする前にちゃんと確認してくれるのも安心感があって良いです。 cLive - ターミナル操作を自動化

    お気に入りのコマンドラインツールを淡々と紹介する
  • 環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる

    何だと!? タイトルのまんま。 恥ずかしながらこれ今まで知らなかった。 もしかして常識だったりする? ちなみに確認したのは Linux だけど、glibc の posix サブディレクトリ配下の execl*execvpe の挙動なので glibc 使ってればみんな一緒じゃないかな?知らんけど… 環境変数 PATH が設定されていない時 unset PATH とした状態。 この場合、PATH=/bin:/usr/bin と設定されているのと同じ意味になる(追記も参照のこと)。 当然カレントディレクトリは含まれていない。 環境変数 PATH が空の時 PATH= とした状態。 「PATH 環境変数が設定されていない時」とは異なる事に注意。 この場合、PATH=. と設定されているのと同じ意味になる。 つまり、カレントディレクトリが含まれている。 環境変数 PATH の最後が : で終わってい

    環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる
  • 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
  • [ansible] リモートにあるファイルをリモートにコピーする

    ansibleでファイルをコピーする場合、fileモジュールとcopyモジュールを使いますが、 ローカルからリモートへのコピーだけがサポートされており、 リモートからリモートへファイルをコピーするモジュールがありません。 こういうときはしょうがないのでシェルで直接cpコマンドを叩きます。 単純にcpコマンドを叩くだけだと、タスク実行の度にcpが走ってしまい冪等性が担保されません。 冪等性を担保するためにshellモジュールのcreatesオプションを使います。 shellモジュールはcreatesオプションに指定したファイルが存在する場合、そのコマンドを実行しません。 これで冪等性が担保されます。(commandモジュールでも使えるみたいです) shellモジュール 例えば、リモートにあるファイル/tmp/hoge.confを、リモートの/etc/hoge/hoge.confにコピーする場

    [ansible] リモートにあるファイルをリモートにコピーする
  • ターミナルのディレクトリ移動を高速化する - Qiita

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

    ターミナルのディレクトリ移動を高速化する - Qiita
  • シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌

    シェルスクリプトの中で、スペース区切りもしくはタブ区切りのレコードを扱うことがよくあると思います。 たとえば、前回のエントリ「AWS CLIとjqを使って、AWSのELBボリュームがアタッチされているEC2インスタンス名を出力するワンライナーを書いた - 双六工場日誌」のスクリプトの出力は以下のようになります。 i-ec56a9f5 vol-07d00601 servername i-ec56a9f5 vol-8f550991 servername このようなレコードの特定の列を取り出して、処理する際にどうするのが効率的か、というのがこのエントリのお題です。 非常に古い話題なので、昔からシェルスクリプトを書いている人には自明な話ではありますが、最近、シェルの標準機能の話を聞く機会がなく、失われつつある技術になってきている気がしているので、改めて確認ということで。 例として挙げたレコードから

    シェルスクリプトの中で1行ずつ変数を分割する際には、cutとかawkとか余計なプロセスを起動せずsetを使って分割した方が効率的 - 双六工場日誌
  • vimshellが便利過ぎる件 - ぷろぐらまはっくす MkⅡ

    vimshellとは? vimshellはVimからシェルを起動するVimScript。 ただ起動するだけなら:!コマンドでも足りるけど、こちらは非同期に処理できないので、実行中はVimでコードを書けないとか欠点が多い。 vimshellなら非同期なシェルが使えるし、色分け・補完もきく。 インタプリタを立ち上げれば、コードを書きつつ評価させることもできるよ、Emacsみたいにね! インストール http://github.com/Shougo/vimshell からソースをダウンロード。 解凍したファイルを~/.vim以下に保存。 あと同作者さんのvimprocが必要なので https://github.com/Shougo/vimproc からソースをダウンロード。 こちらは~/.vim以下に保存するだけではダメで、Linuxではコンパイルする必要がある。 Linuxでは、次のコマンドを

    vimshellが便利過ぎる件 - ぷろぐらまはっくす MkⅡ
  • BASHの脆弱性でCGIスクリプトにアレさせてみました

    環境変数に仕込まれたコードを実行してしまうBASHの脆弱性が CGIスクリプトに影響を与えるか試してみたら結果は悲惨な感じに Tweet 2014年9月25日 嶋田大貴 この記事は2014年のものです 朝から Bash specially-crafted environment variables code injection attack なるもので騒ぎになっていたので、さっそく手元の Apacheで試してみました。 /hoge.cgiというURIで実行されるように、一行のメッセージを出力するだけの CGIスクリプトを設置します。いっけん、なんの入力もクライアント側から受け付けていないため危険のありようもなく見えます。 #!/bin/sh echo "Content-type: text/plain" echo echo "Hi! I'm an ordinary CGI script w

    BASHの脆弱性でCGIスクリプトにアレさせてみました
  • tmuxを起動できなくなったこととその対処の備忘録 - Qiita

    tmuxのクリップボードとMacのクリップボードを同期したくて Mac の tmux でクリップボードを使う。 - こせきの技術日記 を見ながら作業してたら、tmuxが突然起動しなくなった。tmuxとコマンドを打つと問答無用で[exited]と言われて動かない。それどころか元々起動してあったtmuxの新規ウィンドウすら開かない。困った。 tmuxが強制終了してしまったウィンドウを上にスクロールすると、一回tmuxが起動していた名残があった。その時のwindow nameがreattach-to-user-namespaceになっていた。.tmux.conf に set-option -g default-command "reattach-to-user-namespace -l zsh" bind C-q run-shell 'reattach-to-user-namespace tmu

    tmuxを起動できなくなったこととその対処の備忘録 - Qiita
  • vimshell のプロンプトで遊んでみた - C++でゲームプログラミング

    関連:VimShellが動的プロンプトに対応しました(やばい) - かなりすごいブログ 実は動的プロンプトとは全く関係ないんですが、vimshell で遊んでみました。 こんな感じでプロンプトがアニメーションします。 [ソース] set updatetime=500 let g:vimshell_prompt = "<po><yo> > " let s:count = 0 let s:last_time = 0 function! s:get() let time = str2float(reltimestr(reltime())) let poyo =[ \ "(´・_・`)", \ "( ´・_・)", \ "( ´・_)", \ "( ´・)", \ "( ´)", \ "( )", \ "( )", \ "(` )", \ "(・` )", \ "(_・` )", \ "(・_・`

    vimshell のプロンプトで遊んでみた - C++でゲームプログラミング
  • VimShellが動的プロンプトに対応しました(やばい) - かなりすごいブログ

    VimAdventCalendar 2012 228日目VimAdventCalendar 2012 228日目の記事になります。昨日227日目は@manga_osyoさんの「Vim script でもラムダを使いたい!」でした。 VimShellが動的プロンプトに対応しました結構要望が多かったと思われます、動的プロンプト。これがついに実装されました。 動的プロンプトとは状況によって内容が変わるプロンプトのことで、例えば現在のディレクトリを表示させたり、現在のユーザー名を表示させたり、といった用途が一般的です。 これまでプロンプトの位置特定などの事情から動的プロンプトはサポートされず、代わりにユーザープロンプトや右プロンプトといった手段が用意され、それらのプロンプトは動的に内容を変更できるようになっていました。しかし、この場合プロンプト全体がどうしても複数行になってしまうため、やはり単一行

  • lessでソースコードに色をつける

    シェルの操作中「テキストファイルをちょこっと覗きたいな」と思ったときに抜群に便利なlessコマンドであるが、普段綺麗に色付けされたソースコードを見慣れていると、モノクロのソースコードの見づらさに愕然としてしまう。結局lessを終了して他のエディタで開きなおすことになるのだが、lessでソースコードに色付け(シンタックスハイライト)できれば便利なのになーっ!と思ったことはないだろうか。そう、あるんです!lessでシンタックスハイライトする方法はあるんです!というわけで、今日はその方法を紹介しよう。 GNU Source-highlight結論から言うと、今日紹介する方法はGNU Source-highlightを使う。GNU Source-highlightを使えばイッパツだ。なのでまずGNU Source-highlightをインストールしよう。UbuntuやFedoraならリポジトリにあ

    lessでソースコードに色をつける
  • データ集計コマンドを極めてシステム処理と業務速度を爆速化するお話 - Y's note

    Index データ集計コマンド 爆速で検索したいぜ! lookを使う LC_ALL=Cを設定する データのランダムサンプリングがしたいぜ! sedを使う awkを使う sortの--random-sortを使う Script言語を使う shufを使う ランダムサンプリング速度比較 合計と平均値を集計したいぜ! 列データ取得 重複行のカウント 合計値出力 平均値出力 複数ファイルのデータ結合がしたいぜ! 共通項目での結合 同じ行数での結合 まとめ データ集計コマンド joinコマンドが便利過ぎて生きるのが辛い - Yuta.Kikuchiの日記 lookコマンドによる二分探索が速すぎて見えない - Yuta.Kikuchiの日記 今日はデータ集計を行う上で絶対に覚えておいた方が良いコマンドと知識を紹介したいと思います。これを身につければシステム処理と業務効率化に大きく繋がると思います。この記

    データ集計コマンドを極めてシステム処理と業務速度を爆速化するお話 - Y's note
  • Big Sky :: grep で文字列を縦書きに変換

    grep の -o オプションを使うとマッチした部分だけ列挙してくれる。 例えば <div>foo</div><div>bar</div> <div>baz</div> というテキストファイル foo.txt に対して grep -o "<div[^>]*>[^<]*<\/div>" foo.txt と実行すると <div>foo</div> <div>bar</div> <div>baz</div> が得られる。これを応用して echo 餃子の王将 | grep -o . とやると 餃 子 の 王 将 が得られる。 便利!!

    Big Sky :: grep で文字列を縦書きに変換
    pick_mugetu
    pick_mugetu 2012/11/30
    grep -o
  • GNU Parallelがすごすぎて生きるのがつらい

    皆さん今日もたくさんのサーバを相手にされていることかと思いますが、いくつかのサーバにアクセスして 1 秒間の統計情報(例えばvmstat 1 2)を集めてパッと表示したい時ってどうやってますかね?shell script を学びはじめたばっかりの僕はこんな感じで書いてました。 $ for i in host1 host2 host3; do ssh $i "vmstat 1 2 | tail -1"; done 0 0 0 329004 210836 14275360 0 0 0 2424 1410 1828 0 0 100 0 0 0 0 0 3716112 587704 25921684 0 0 0 488 1643 2026 0 0 100 0 0 1 0 0 555440 265560 14015548 0 0 0 4204 1534 2392 1 0 99 0 0 vmstatと

    GNU Parallelがすごすぎて生きるのがつらい
  • 1