タグ

Shellに関するkazuph1986のブックマーク (37)

  • シェルの弱点を補おう!"まさに"なCLIツール、egzact - Qiita

    egzactというコマンドの詰め合わせセットを作ってみました。 → Github きっかけ zipで多重圧縮するのに、$ zip ファイル | zip | tee zip1 | zip | tee zip2 | zip | tee zip3 。。みたいなの出来ない? #シェル芸 #usptomo — ぱぴろん (@papiron) 2016年3月25日 これはあるシェル芸界隈1の方の発言です。アンチウイルスソフトの動作確認で、多重ZIPされたテストウイルスファイルが必要だったとのことです。何人かの方からアドバイスを頂いていたようですが、残念ながらシェルでサクッっとは結局できなかったご様子でした2。 この事例は、シェル上でのワンライナー(a.k.a シェル芸3)の弱点の一つを如実に表しています。文字列を切り出したり、変換したりというフィルタリングの処理は得意ですが、パターン生成が比較的苦手で

    シェルの弱点を補おう!"まさに"なCLIツール、egzact - Qiita
    kazuph1986
    kazuph1986 2016/05/04
    は、はい・・・(すごい)
  • ターミナルのディレクトリ移動を高速化する - Qiita

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

    ターミナルのディレクトリ移動を高速化する - Qiita
    kazuph1986
    kazuph1986 2015/10/31
    zが死ぬほど遅くなっていたので、こっちに乗り換えた。cdしたときに毎回fzfが起動してしまうのがうざい以外は良いので、ちょっと我慢して使ってみる。
  • 初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita

    ここ最近、沢山シェルスクリプトを書くようになりました。 元々あまりシェルスクリプトを書いたこと無かったので、色々と勉強しつつ書いてるのですが、 他のプログラミング言語とはちょっと違って独特なクセというか、発見の度におぉー!ってなることが沢山あって楽しいです。 そんなわけで、最近学んだり参考にした中で特に感動したシェルの上手い書き方をまとめてみます。 きっとまだ知らないこととかもっと上手くやる方法なんかが沢山見つかりそうなので、 もっといいやり方あるよ!って方はコメントください 何もしない : (コロン)コマンド シェルを書いていた時に非常に欲しかったコマンドがこれ!何もしない! : というコマンド(?)を利用すると、何もせずに終了ステータス0(つまり正常終了)を返します。 これが様々な事に使える万能コマンドで、これによって面倒なエラー処理を簡潔にできたり、 入力や出力のリダイレクト元/先と

    初心者向け、「上手い」シェルスクリプトの書き方メモ - Qiita
    kazuph1986
    kazuph1986 2015/02/02
    このまとめ良い
  • cron上でのコマンド実行を再現する - Qiita

    シェル上だと動くのにcron上だと動かない。 よく聞くお話ですよね。 大体はcron上と普段のシェル上で環境変数が違うために起こる問題です。 そういう時に使えるtipsを共有します。 個人のマシン上で適当に動かすようなcronだと みたいにしてログインシェルを間に噛まして環境変数を上書きして実行することでごまかしたりもできます。 これまた別の依存する箇所を増やすので 個人のマシンかrcファイルがちゃんと管理されているような状況以外ではオススメできません。 なのでcron上で実行される状況とほぼ同じ状況でスクリプトを実行してみましょう。 cron上では環境変数はほぼ空なので環境変数を空にしてみましょう。

    cron上でのコマンド実行を再現する - Qiita
    kazuph1986
    kazuph1986 2014/07/15
    ん、あ、なるほど!!!
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

  • Pythonで作られた便利なコマンドラインツール MySQL Utilities

    MySQL Utilitiesならではの注意点 MySQL Utilitiesは従来のコマンドラインツール群とは違い、以下のような記述で接続先を指定します。 これは、従来のコマンドラインツール群が主に1つのMySQLサーバーを対象として動作するものなのに対して、MySQL Utilitiesは2つ以上のMySQLサーバーを対象として動作するものが多いため、このような記法になっています。 [MySQL Utilitiesの記法] --server=ユーザ名:パスワード@ホスト名:ポート番号 [MySQL コマンドラインツール群の記法] --user=ユーザ名 --password=パスワード --host=ホスト名 --port=ポート番号 なおWindows環境ではローカルホストとしてlocalhostと127.0.0.1のどちらを指定しても同じですが、LinuxやUNIXではホスト名に対

    Pythonで作られた便利なコマンドラインツール MySQL Utilities
    kazuph1986
    kazuph1986 2014/02/11
    色々な意味でよさ気。
  • コマンド:tee: UNIX/Linuxの部屋

    % ls | tee sample.log total 954 -rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1 -rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2 % cat sample.log total 954 -rw-rw-r-- 1 user1 user1 684 Feb 26 15:11 sample1 -rw-r--r-- 1 user1 user1 422 Feb 26 10:24 sample2

    コマンド:tee: UNIX/Linuxの部屋
  • https://qiita.com/geta6/items/199faca823e84026c10a

    kazuph1986
    kazuph1986 2013/12/27
    お手軽並列化!
  • gitで管理しているファイルを大文字から小文字へ一括変換 - Qiita

    #!/bin/bash # 実行方法: sh henkan.sh <dirname> # こんな感じで拡張子の指定などもできるでしょうね # FILES=`find $1 -type f -name "*.gif"` FILES=`find $1 -type f` echo "$FILES" read -p "こいつら変換する? [y/N]" -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "やるよー" for FILE in $FILES; do LOWER=`echo $FILE | tr A-Z a-z`; if [ $FILE != $LOWER ]; then git mv -f $FILE $LOWER fi; done; echo "だん!" else echo "やんない" fi

    gitで管理しているファイルを大文字から小文字へ一括変換 - Qiita
  • Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強→command -vも - Qiita

    コマンドのパスを知りたいんじゃなく、コマンドの存在をチェックしたいだけならwhichよりhashを使ったほうが良いかもっていう話。→追記: typeが最強っぽい。 追記: command -vも良い。プログラムの存在チェックorパスを探したいだけなら互換性を考えると一番良いかも。 比較してみる whichよりhashよりtype=command -vが高速→typeまたはcommand -vの勝ち whichは実ファイルという実体があるプログラムです。hashとtypeはbashの組み込みコマンドです。なので当然ですがプログラムの起動コストがない分hashやtypeの方が速いです。 $ time bash -c 'for((i=0;i<10000;i++));do which perl; done >/dev/null' real 0m7.739s user 0m2.928s sys 0m

    Bashでコマンドの存在チェックはwhichよりhashの方が良いかも→いやtypeが最強→command -vも - Qiita
    kazuph1986
    kazuph1986 2013/10/02
    おもしろい!
  • 私が他人のシェルスクリプトから学んだこと | Yakst

    私はシェルスクリプトの大ファンで、他人のスクリプトから面白い方法を学ぶのが大好きだ。最近、SSHサーバの2要素認証を簡単にするためのauthy-sshスクリプトに出会った。このスクリプト群を見まわしていて、みんなと共有したいたくさんのクールなことを見つけた。 出力に色付けする 出力文字列を、成功した時は緑に、失敗した時は赤に、警告は黄色に色づけしたいと思うことはたくさんあるだろう。 NORMAL=$(tput sgr0) GREEN=$(tput setaf 2; tput bold) YELLOW=$(tput setaf 3) RED=$(tput setaf 1) function red() { echo -e "$RED$*$NORMAL" } function green() { echo -e "$GREEN$*$NORMAL" } function yellow() { e

    私が他人のシェルスクリプトから学んだこと | Yakst
  • linuxディレクトリ中のファイルサイズ合計値を バイト表示

    Landscape トップページ | < 前の日 2004-05-25 2004-05-26 次の日 2004-05-27 > Landscape - エンジニアのメモ 2004-05-26 ディレクトリ中のファイルサイズ合計値を バイト表示 当サイト内を Google 検索できます * ディレクトリ中のファイルサイズ合計値を バイト表示この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト] [unix] Windows では、ディレクトリのアイコンを右クリックしてプロパティを表示させると、そのディレクトリ以下のファイルのサイズの合計値がバイト単位で表示される。併せて、ファイル数やクラスタギャップを含めたディスク上のサイズも表示される。ちなみに、プロパティは ALT + ディレクトリアイコンのダブルクリックでも表示される。 Linux や Uni

  • zshでサブコマンドとファイル名を手抜き補完する - Glide Note

    hoge[tab]でサブコマンドが補完され、 サブコマンドの後はファイル、ディレクトリが補完されるように。 サブコマンドとファイル名を補完する 下記を.zshrcに記載してexec $SHELL やっていることは compdefで_hogecmdという補完用functionを定義し、hogeコマンドを実行したときに呼び出されるように。 function内のcmdsで補完したいサブコマンドを列挙 CURRENT == 2でhogeのあとに補完されるのはサブコマンドだけと指定 _describeで補完候補で表示されるときにsubcommandというグループになるようにしている サブコマンドのあとは_filesでファイルとディレクトリが補完されるように 参考になるサイト zshの補完関数の書き方がまとまっているところがほとんど無いので下記が非常参考になります。 zsh補完関数を自作すると便利 -

  • Command Lineで使用しているツールまとめ vol.1 - Qiita

    Command Lineで使用しているツールを簡単にではありますが、まとめてみようと思います。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。 この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。 また、私は基的にパソコンのことは何もわかっていないので、記事内には誤りを含む可能性があります。よって、できる限り自分の環境を把握した上で、適時読み換えてもらえればと思います。特に、設定ファイルの場所については気をつけてください。また、GitやHomebrew、MacPortの導入説明などは省略していますので、注意が必要です。 zsh Shellであるzshを拡張する設定の数々を紹介していきたいと思います。簡易にではありますが、もっと良い設定が

    Command Lineで使用しているツールまとめ vol.1 - Qiita
    kazuph1986
    kazuph1986 2013/02/06
    かなりの良記事(しかも連載)だと思う。かなりの良記事だと思うよ。
  • ファイルを行ごとに読み込んで、各行ごとにスペース区切り配列に入れるスクリプト - cameong’s blog

    ファイルを行ごとに読み込み、各行ごとにスペース区切りの配列に入れたい。 $ cat sample.txt AAA EEE III BBB FFF JJJ CCC GGG KKK DDD HHH LLL ファイルをcatしてfor文で回すスクリプトに読ませてみる。 $ cat cat_for.sh #/bin/zh [ -f $1 ] || exit 1 for i in $(cat $1) do echo $i donecatしてforするスクリプトを実行 $ ./cat_for sample.txt AAA EEE III BBB FFF JJJ CCC GGG KKK DDD HHH LLL スペース区切りで読みやがる。行ごとじゃないんだ。 今度は、よくあるread lineをwhileで回すスクリプトで試す $ cat readline1.sh #/bin/zh [ -f $1 ]

    ファイルを行ごとに読み込んで、各行ごとにスペース区切り配列に入れるスクリプト - cameong’s blog
  • Shell Script での文字列操作 - Qiita

    #!/bin/bash FILE="/usr/local/var.piyo/hoge.piyo" # 先頭から = # # 文字列の先頭から、最初に一致するパターンを取り除く (${VAR#pattern}) echo ${FILE#*.} # => piyo/hoge.piyo echo ${FILE#*/} # => usr/local/var.piyo/hoge.piyo echo ${FILE#*a} # => l/var.piyo/hoge.piyo # 文字列の先頭から、最後に一致するパターンを取り除く (${VAR##pattern}) echo ${FILE##*.} # => piyo echo ${FILE##*/} # => hoge.piyo echo ${FILE##*a} # => r.piyo/hoge.piyo # 末尾から = % # 文字列の末尾から、最

    Shell Script での文字列操作 - Qiita
    kazuph1986
    kazuph1986 2013/01/30
    この辺全く別の調べ物をしている時に初めて発見した。なんだこれ便利すぎだろう。
  • 複数のファイル拡張子を一括で変更するには

    複数のファイル拡張子を一括変更するには、bashのコマンドを使うのが簡単だ。例えば、*.tiffというファイルを*.tifに一括変更するには、以下のように行う。 $ ls 01.tiff  02.tiff  03.tiff  04.tiff  05.tiff ←拡張子はすべて.tiff $ for fname in *.tiff; do ←拡張子がtiffのファイルが存在する限り、以下の命令を繰り返す > mv $fname ${fname%.tiff}.tif; > done $ ls 01.tif  02.tif  03.tif  04.tif  05.tif

  • PDLで数値計算 - Articles Advent Calendar 2012 Casual

    こんにちは、週末海でマンボウを獲っていたらラギアクルスに襲われた@hirataraです。今回はPerl Data Languageについて紹介します。 Perl Data LanguageとはMATLABやNumpy、Rなどと同様に、多次元配列を効率よく扱って数値計算を実現するためのライブラリです。cpanmで普通にインストールすれば使えますが、グラフを描画したり格的な数値計算のライブラリであるGSLのバインディングを利用したりする場合はhomebrewでゴニョゴニョしたりする必要があるので、多少頑張って下さい。 基的にはpdl関数でオブジェクトに変更してから使います。 use PDL; my $pdl = pdl [[1, 0, 0], [0, 1, 0], [0, 0, 1]]; print $pdl; 【実行結果】 [ [1 0 0] [0 1 0] [0 0 1] ] pdlが

    PDLで数値計算 - Articles Advent Calendar 2012 Casual
    kazuph1986
    kazuph1986 2012/12/11
    比較してみたい
  • Mosh: the mobile shell

    (mobile shell) Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes. Mosh is a replacement for interactive SSH terminals. It's more robust and responsive, especially over Wi-Fi, cellular, and long-distance links. Mosh is free software, available for GNU/Linux, BSD, macOS, Solaris, Android, Chrom

    kazuph1986
    kazuph1986 2012/11/23
    そういえば使ったことない。
  • mintty を使えるようにする - dogmap.jp

    Cygwinのターミナルエミュレータ mintty が MSYS に対応したため、cygwin なしでも MSYS のパッケージマネージャからインストールできるようになったとのことなので、早速インストールしてみました。 Windows 上でのターミナルエミュレータとしては、今まで PuTTY とか Tera Term とか使ってたんですが、これは良いっすね。 もう、乗り換え確定です。 via. tanakh.jp – Windowsで最高のターミナルを構築する方法 Windows に mintty を入れて、とりあえず使えるようにするための設定をメモ代わりに書いておきます。 MinGW/MSYSのインストール MSYS はインストーラからのインストールできます。 以下のURLから新しいものをダウンロードしてください。 http://sourceforge.net/projects/ming

    mintty を使えるようにする - dogmap.jp