bashに関するrcmdnkのブックマーク (13)

  • Bashの補完について

    B! 25 0 1 0 BashのTabを押した時に出る補完の自作等について。 Bash補完 complete 補完補助関数 COMPREPLY compgen COMP_WORDS, COMP_CWORD Bash-Completion MacのHomebrewでBash補完のファイルをインストールするFormulaを作る Bash補完 complete Bashであるコマンドに対して補完を出来るようにしてあげるには complete -F _comp_func cmd とcompleteコマンドを使います。 これでcmdというコマンドに対する補完を_comp_funcという関数で与えます。 -Fで関数を指定。 この_comp_funcという関数は別で定義しないといけませんが、 この関数は通常ダイレクトに使われてほしくないもの(使っても意味無いもの) なので_を最初に付けたりして通常のコ

    Bashの補完について
  • シェルスクリプトで対話的な選択を出来るようにするスクリプトを作った:sentaku

    B! 25 0 0 0 最近作り直してた multi_clipboard、 sd_cl、 trashで使っていた シェルスクリプトでの対話的な選択画面を他でも簡単に使える様にしてみました。 sentaku 単体で使う ライブラリみたいに使う Examples スニペットツールみたいに使う ファイルエクスプローラー メニュープログラム ゲーム まとめ sentaku 名前に困ったので日語で。 Bash (3.X以降)とZsh (4.X以降)で動くことは確認してあります。 (何かおかしかったら教えてください。) 単体で使う スクリプト単体だとそのまま実行しても何もしませんが、 lsなんかの出力をパイプで渡してあげる下のgifみたいな感じで選んで、 選んだものを出力できます 1。 最後に返される値だけが標準出力で、 他の選択画面は直接端末(/dev/tty)に送られるので、 上にある例のように

    シェルスクリプトで対話的な選択を出来るようにするスクリプトを作った:sentaku
  • ターミナルでのディレクトリ移動を保存、取り出しする #screen

    B! 8 0 0 0 だいぶ前に書いた ターミナルでのディレクトリ移動 にも書いていたターミナル移動用の関数のアップデート。 multi_clipboard をアップデートしている時に導入した画面上で選択する方法が便利だったので こちらにも入れてみたのと、タブ補完など色々付け足し。 前までの設定 新しい設定: sd_cl インストール 基的な使い方 Pre-defined directory list Window directory list タブ補完 Vim file explorerライクな移動 その他設定される関数、エイリアス cd/chpwdを自分で設定する 前までの設定 ターミナルでのディレクトリ移動 ここにあるようにsd(save directory)というコマンドで現在のディレクトリを保存しておいて、 cl(change to the last directory)でその

    ターミナルでのディレクトリ移動を保存、取り出しする #screen
    rcmdnk
    rcmdnk 2013/12/30
  • BashとZshの違いでのハマりどころ

    B! 12 0 0 0 環境的にBashが前提になってる所がほとんどなので Zshに完全移行するつもりはないんですが、 なんとなく色々書いてたスクリプトとかをZshでも使えるようにしてみようとしたら 結構面倒だったので取り敢えず詰まったところとかについてまとめておきたいと思います。 配列の番号 グロブ展開 typeset/localでの配列の初期化 readの引数 readにReturnを渡した時 (ダブル)クォート command/builtin まとめ 配列の番号 基的な部分にして最大のやっかいもの。 Bashは通常0番から配列が詰められますが、Zshでは1番から詰められます。 Bashの場合 1 2 3 4 5 6 7 8 $ bash $ arr=(a b c d) $ for ((i=0; i<5; i++));do echo "arr[$i]=${arr[$i]}";done

    BashとZshの違いでのハマりどころ
  • ターミナル操作を録画して公開する: Asciinema

    B! 14 0 0 0 昨日のGNU screenでクリップボードの履歴を使えるようにする の中で載せてみたターミナル操作の様子は Asciinemaと言うサービスを使っています。 簡単に録画して直ぐに公開できる様になってるので その紹介です。 Asciinema Asciinemaの導入 Asciinemaの使い方 まとめ Asciinema Asciinemaはターミナル操作を録画して、 そのままWebにアップして即座に公開できる様にするツールです。 Gyazoのターミナル操作版みたいなものです。 前まではターミナル操作もgifとして録画して公開してましたが、 ターミナル上のコマンドで直接ターミナルだけを 簡単に録画出来る様になるので特に長い操作を撮りたい時なんかは便利です。 Asciinemaの導入 Docsにある通りにすれば簡単にインストール出来ます。 pythonで書かれてる物で

    ターミナル操作を録画して公開する: Asciinema
  • Bashでの一時ファイルの取り扱い

    B! 10 0 0 0 Bashでシェルスクリプトを書い居ると特に 適当に一時ファイルにコマンド結果を書き出して後で参照したりすることがよくありますが、 今まで適当にカレントディレクトリに.tmpとかのファイルを作ったりしてましたが、 今更ながらmktempというコマンドを知ったのでちょっと整理してみました。 これまでの一時ファイル TMP/TEMDIR mktemp 途中でスクリプトを止めた時の一時ファイルの処理 これまでの一時ファイル ざっとスクリプトを見たところ、今までにやったことがあるのは 単純にf=/tmp/tmpfileなど、/tmpに適当なファイルを作る。 これだと違うプロセスから同じコマンドを使うと競合してしまう。 また、/tmp直下に置くことが良いのか、と言う問題。 f=/tmp/$USER/tmpfileとすればLinuxだとOKだが、Macだと 一時ディレクトリは別に

    Bashでの一時ファイルの取り扱い
    rcmdnk
    rcmdnk 2013/12/10
  • Bashでのコロンコマンドや二重括弧について

    B! 6 0 0 0 Bashでの数の取り扱いについて で出てきたコロンコマンドや二重括弧等について 適当に試して分かったりしたことやよく分かってないこと。 コロンコマンド 二重括弧についてさらに コロンコマンド :より先に書かれたものは通常無視されますが、 サブシェルを呼ぶ様なコマンドはそのコマンドが実行される様です。 $ : ps > ps.log $ cat ps.log では何も出ませんが(ps.logには:の実行結果、つまり空白が出力される)、 $ : $(ps > ps.log) $ cat ps.log PID TTY TIME CMD 16406 pts/197 00:00:00 bash 27787 pts/197 00:00:00 bash 27788 pts/197 00:00:00 ps と言った感じ。 $ : sleep 10 $ : $(sleep 10) でも

    Bashでのコロンコマンドや二重括弧について
    rcmdnk
    rcmdnk 2013/11/18
  • Bashでの数の取り扱いについて

    B! 6 0 0 0 Bashでの数の取り扱いについて今更ながら知ったことがあったのでまとめ。 特にスクリプトなどで数値をインクリメントしたいときなどにどうするか、について。 expr let 二重括弧 コロン+二重括弧 さらに短縮 小数を取り扱いたい時 expr 恐らく最初に最初に覚える方法。 というか純粋なBourn Shell (sh)だと下のletや二重括弧記号が使えないのでこれが基。 今やshもほとんどbashへのリンクになったりしてるので 問題ないかもしれませんが、移植性を高くしたければexprにしておくのが無難。 $ a=1 $ a=`expr $a + 1` $ echo $a 2 と言った感じ。 扱える数値は整数のみ。exprに与える式は演算子の両側に必ずスペースが必要です。 exprで四則演算などに文字列を渡すとエラーになります。 $ expr a + 1 expr:

    Bashでの数の取り扱いについて
    rcmdnk
    rcmdnk 2013/11/18
  • ファイル名やディレクトリ名の大文字小文字

    B! 9 0 2 0 最近WindowsMacでディレクトリ(フォルダ)名をちょっと整理しようと思って 大文字や小文字も統一したりしようとしたんですが、 なんか上手くいかない所があって、ちょっと調べたら 今更ながらWindowsMacでは大文字小文字の区別をしないことを知ったので 一応その辺のまとめ。 Windows Mac Linux コマンドライン タブ補完 git mv Dropbox まとめ Windows 最近のWindowsでは大概ディスクがNTFSにフォーマットされていると思いますが、 NTFS自体は大文字小文字を区別します。 どのシステムにフォーマットされてるかは各ディスクを 右クリックプロパティで出てくる情報の ファイルシステムの項目にあります。 ただ、通常のWindowsシステムではアプリケーション側で 区別しないようになっています 1。 ですので通常はWindow

    ファイル名やディレクトリ名の大文字小文字
    rcmdnk
    rcmdnk 2013/06/19
    ファイル名やディレクトリ名の大文字小文字
  • ターミナルキーバインドの設定等

    B! 11 0 0 0 前回、 前々回 で色々調べてた所で readlineのキーバインドとかを全く活用してなかった事に今更ながら気付いたので まとめと改めて設定したものなど ここでは主にBashについての設定についてです。 端末コマンドの削除 よく使う&覚えておきたい端末コマンド/bashキーマップ 制御、端末 コマンド 履歴 移動系 削除、貼り付け、変更 キーバインド設定 .inputrcでのreadline環境設定 キーバインド設定 set editing-mode vi 端末コマンドの削除 いくつかstty 1 で設定されている端末コマンドで 余計な物を削除するため(readlineでのkeymapで使ったりするため) .bashrcに以下の様にしてあります。 tty -s && stty stop undef # C-s tty -s && stty start undef #

    ターミナルキーバインドの設定等
    rcmdnk
    rcmdnk 2013/06/02
    ターミナルキーバインドの設定等
  • メタキー/ESCについて: iTermでそれらのキーを送る設定も

    B! 5 0 0 0 前回 コマンドラインで文字化けしてたのは\M-cを.inputrcで設定してたからだ、 という話を書きましたが、 ついでにメタキーやらエスケープ入力やらを少し調べたので まとめておきたいと思います。 MaciTerm(ターミナル)でのメタキー、エスケープシーケンスの設定 メタプレフィックスとエスケープシーケンス、それからAltキー convert-metaがonの場合 convert-metaがoffの場合 input-meta/output-metaについて Emacsでのキーバインド Happy Hacking Keyboardのメタキー? MaciTerm(ターミナル)でのメタキー、エスケープシーケンスの設定 まず、Macの場合ちょっと特殊なので、iTerm(ここではiTerm2)等で メタキープレフィックス状態やエスケープシーケンスを送る方法をまとめておき

    メタキー/ESCについて: iTermでそれらのキーを送る設定も
    rcmdnk
    rcmdnk 2013/05/31
    メタキー/ESCについて: iTermでそれらのキーを送る設定も
  • コマンドラインでの文字化け解決?: '\M-c'とは...

    B! 1 0 0 0 前にMacでの文字化け対策用のGNU screenのインストールで書いた様に日語ファイルの表示は出来る様にしてあったのですが、 コマンドラインから日語を打つと化けると言う現象に悩まされてました。 普段は殆ど必要としないので特に調べないで居たんですが、 色々設定をいじっているうちにとりあえず何が悪いかは分かりました。 \M-c in .inputrc meta in inputrc LANG \M-c in .inputrc 問題は.inputrcの中で "\M-c": capitalize-word と設定してあることでした。 この設定いつ書いたかうる覚えですが、 .inputrcに一通りreadline 1 のショートカットが 再定義してあって、恐らくこれはMacに移った時にCommand ボタンがMeta Keyとして効かない、と思った時に 取り敢えず、と言う

    コマンドラインでの文字化け解決?: '\M-c'とは...
    rcmdnk
    rcmdnk 2013/05/30
    コマンドラインでの文字化け解決?
  • コマンドラインからEvernoteへ送るスクリプト

    B! 3 0 0 0 メモを取ることが出来るウェブサービスは沢山出来てきましたが、 なんだかんだでEvernoteが一番安定して使いやすいので メインのメモ帳となっています。 ターミナルで作業している時に、たまにちょっとしたメモとか 一次的に作ったスクリプトとか、どうしても、では無いけど もしかしたら後で見れたら便利かな、という様なものが出てきた時、 さくっとEvernoteに送れたら便利だと思ったので そんなスクリプトを書いてみました。 Evernote evernote.sh スクリプト 使い方 Macでmailコマンドを使う まとめ Evernote 今更説明不要かもしれませんが、Evernoteは “すべてを記憶する”と題打っているようにテキストは勿論、 画像や音声、動画等も記憶させておくことが出来、 後から編集も簡単に出来ます。 Webクリップなんかも簡単に出来るアドオンがあって

    コマンドラインからEvernoteへ送るスクリプト
    rcmdnk
    rcmdnk 2013/05/24
    コマンドラインからEvernoteへ送るスクリプト
  • 1