nDiki : Bash

GNU Bash

Bourne Again SHell

メモ

ファイル名拡張子を変更する

 for F in *.JPG ; do mv $F ${F%.JPG}.jpg ; done

関連情報

2012年3月12日 (月)

今日のさえずり: 思わず「おまえら付き合ってるのか?」と言いそうになった

  • 09:52 着席。 @ 株式会社ミクシィ(mixi, Inc.)にタッチ! http://t.co/HjYjRonw
  • 13:55 Bash プロンプトに Git ブランチ名表示するようにしたら「80桁残りわずか!」な状態すぎたので、プロンプト2行にしてみた。
  • 16:04 廊下で男女が談笑していたので思わず「おまえら付き合ってるのか?」と言いそうになった。
  • 19:56 あ、登山サークル、金時山に行くのか。小学生の時に登ったあの山じゃん。
  • 21:18 うは、金時茶屋が食べログに載ってる。
  • 21:36 退勤。マルセイバターサンド食べにウチに帰る。
[ 3月12日全て ]

2012年6月7日 (木)

.bashrc にある Git 関連設定

自分が Bash で設定している Git 関連のもの。

ページャー

lv があれば lv を使う。UTF-8 に変換、ANSI エスケープシーケンスを有効に。

 # pager
 if command -v lv > /dev/null; then
   export GIT_PAGER='lv -Ou8 -c'
 fi

プロンプト

bash-completion が有効なら、ブランチ名をプロンプトに表示するように設定。GIT_PS1_SHOWDIRTYSTATE を設定して unstaged な変更があれば *、staged な変更があれば + をブランチ名の後ろに表示するようにしてる。

 # prompt string
 PS1='\[\033[0;37m\][\[\033[0;32m\]\t \[\033[1;36m\]\u\[\033[0;37m\]@\h \[\033[0;32m\]\w\[\033[0;37m\]]\n$ '
 
 if hash __git_ps1 2> /dev/null ; then
   export GIT_PS1_SHOWDIRTYSTATE=1
   PS1='\[\033[0;37m\][\[\033[0;32m\]\t \[\033[1;36m\]\u\[\033[0;37m\]@\h \[\033[0;32m\]\w\[\033[0;37m\]\[\033[01;33m\]$(__git_ps1 " | %s")\[\033[00m\]]\n$ '
 fi
[ 6月7日全て ]

2012年9月28日 (金)

YAPC::Asia Tokyo 2012 1日目

昨日の前夜祭から一晩明けて、1日目。今年は去年みたいに #yapcasia タイムライン専用スクリーンが無いのかぁ。ちょっと残念。タイムラインとか Growl 芸とか YAPC 名物な気がしてたので。LTソンの方に機材まわしたからかな?

会場は小綺麗だけれど物販 NG 他利用規則がいろいろ厳しくて、ちょっと窮屈な感じかな。そういう意味で、東工大は良かったですねぇ。

ホールのすぐ横が会場ということもあって懇親会もすごい賑いで、どんどん大きなイベントになっているんだなぁ感じた。 懇親会では、ネックストラップに入れておいた Twitter 名刺をみて、声をかけていただいたりして光栄でした。@toku_bass 氏、メガネラボの @issm 氏と直接お会いできました。

トーク・LT

トーク・LT は例年通りレベルが高く濃いもの揃いで素晴しかったですね。

  • Larry Wall 氏のライブリファクタリング芸いつもすごい。
  • 今回は フリークアウト (FreakOut) が元気だなあという印象。トークとか LT とか T シャツ着てる人たちとか。
  • tokuhirom 氏のプレゼンテーション、現在時刻と経過時間が出ててとても良さそげ。
  • 最後に実行したコマンドの終了ステータスに応じて、Bash プロンプトを切り換えるも便利そう。

メモ

ファシリティ系:

  • 伊藤謝恩ホールのテーブル席のコンセントはダミー。

回線系:

  • 伊藤謝恩ホールはNTTドコモつながりにくい。人が多いとほぼ不通。
  • ということで、普段は SSID 詐称とか怖いので使わない会場無線 LAN を スマートフォン・iPad で利用させていただいた。こちらも LT など人が多い時は仕方がないけど途切れ途切れな感じ。
[ 9月28日全て ]

2014年12月3日 (水)

Emacs の helm では prefix を補完するのに TAB を使うんじゃねぇ

Emacs で anything から helm にしてから2週間ほど経つのだけれどなかなか慣れない。特に TAB でのファイル補完のところ。どうするのがいいのかなと Web とか見ていたら「prefix を補完するのに TAB を使うんじゃねぇ。」って書いてあったのを読んでなんとなくわかった気がした。それが helm 使いのならわしらしい。

IMPORTANT: Please remember that, when you use Helm, you never TAB to complete prefixes like vanilla or other packages like Ido and its related packages. In Helm, when you type something, candidates get updated automatically. In vanilla Emacs, you have to TAB to get a/ list of candidate. This is a great feature from Helm, not a miss of feature. You have to forget the mentally of TABBING to get candidates. If you want quick completion of search patterns in Helm prompt, you always have hippie-expand to replace the TAB behaviour, as introduced at the beginning of this section. This is the biggest confusion for new people switching to Helm. When you are used to Helm, you will love it. -- http://tuhdo.github.io/helm-intro.html

なるほど。

そうはいっても Bash とかで手が慣れちゃっているからなかなかねー。

[ 12月3日全て ]

2015年4月30日 (木)

開発ディレクトリ毎に異なる環境変数を設定するのに direnv を使う

シェルで特定の開発ディレクトリ以下に移動すると自動的に設定ファイルで指定された環境変数を設定し、そのディレクトリから別のディレクトリに移動すると戻してくれる direnv が便利。

https://github.com/zimbatm/direnv

Go で開発するのに GOPATH と bin への PATH 追加が面倒だったので導入してみた。

インストール

 git clone https://github.com/zimbatm/direnv
 cd direnv
 make build
 cp -a direnv $HOME/local/bin

なお direnv は Go で書かれているのでソースからビルドするには Go開発環境が必要。

Bash の設定

.bashrc に以下を追加。

 if command -v direnv > /dev/null; then
    eval "$(direnv hook bash)"
 fi

その他のシェルでの設定は https://github.com/zimbatm/direnv 参照。

Go プログラム開発ディレクトリでの設定

 $ cd project_dir
 $ export EDITOR=emacsclient # 次のコマンドで開くエディタ
 $ direnv edit .
   .envrc の編集用にエディタが開くので

   layout go

   と入力して保存。

後は Bash でこのディレクトリ以下(サブディレクトリも含む)に移動するとこの .envrc のあるディレクトリが GOPATH に追加され、また bin ディレクトリが PATH に追加される。便利。

なお direnv edit . しないで直接 .envrc を作った場合は、別途 direnv allow . を実行してこの .envrc を使うことを明示的に許可する必要がある。許可したかどうかは ~/.config/direnv/allow/* に保存される(freedesktop.org の XDG Base Directory Specification っぽくなっているので XDG_CONFIG_HOME 環境変数があれば ~/.config ではなくてその下に保存される)。

その他標準で

  • layout go
  • layout node
  • layout perl
  • layout python
  • layout ruby

などが用意されている。また

 PATH_add bin

のようにして PATH への追加も簡単。

その他コマンドの実行も可能なので開発以外にもいろいろ便利に使える。

[ 4月30日全て ]

2016年8月13日 (土)

今日のさえずり: これ、あれもこれも書きたくなるから結構時間かかるぞ

[ 8月13日全て ]

2017年5月16日 (火)

リモートホストのログインシェルzshEmacsTRAMP がハングアップ

これから利用する開発環境にログインしたら Emacs が入ってなかったので「とりあえず TRAMP を使うかと」とローカルホストの Emacs からファイルを開こうとしました。しかしホスト名の後の : をタイプしたところで止まってしまいます。

ちょっと調べてみたところリモートホストのログインシェルzsh のせいでした。

EmacsWiki の https://www.emacswiki.org/emacs/TrampMode を参考にリモートホストの ~/.zshrc の末尾に以下を追加し、TRAMP が正しく動くようにしました。

 if [[ "$TERM" == "dumb" ]]
 then
   unsetopt zle
   unsetopt prompt_cr
   unsetopt prompt_subst
   unfunction precmd
   unfunction preexec
   PS1='$ '
 fi

デフォルトのログインシェルBash がいいなぁ。

[ 5月16日全て ]

2017年9月1日 (金)

今日のさえずり: ソニー DSC-RX0、ついにビジュアル・ブックマークサイバーショットUの再来では

[ 9月1日全て ]

2023年5月16日 (火)

今日のさえずり: 捨てられたスイカの皮の匂いがどこからともなくする

  • 08:05 link #photography RICOH GR III #GR3 https://t.co/klrBg67KmM
  • 08:24 おはようございます。今日はめちゃめちゃいい天気。
  • 08:33 時刻で 08 と出て欲しいところが 00 となっていてなんだろうと思ったら Bash の printf で %02d しているところで printf: 08: invalid number って出てた。
  • 17:36 捨てられたスイカの皮の匂いがどこからともなくする。
  • 21:25 動作が非常に重たくなるので --user-data-dir を指定した Google Chrome を使うのをやめることにした。
  • 25:26 2023年5月16日 (火) したこと - AmorphousDiskMark を使ってみる - --user-data-dir を指定しない Google Chrome 起動に統一する
[ 5月16日全て ]

2023年5月18日 (木)

今日のさえずり: 今年1本目のデ・オウが届いた。まるごと洗浄していく!

  • 07:15 店先 #photography RICOH GR III #GR3 https://t.co/HyGGj5pjLZ
  • 08:07 西荻北
  • 08:18 『【推しの子】』観てるよって話したら「(他に観ていた作品含め) かわいい系が好きだよね」って言われた。そう。
  • 08:19 『【推しの子】』はもちろんキャラクターだけじゃなくてストーリーも魅力的よ。
  • 09:07 電車冷房入ってる。嬉しい!
  • 11:27 Bash でプチハマりしてた。 $ SECONDS="02"; echo $SECONDS 2
  • 11:28 原因は man bash で分かった。ついでに typeset -p を知った。
  • 12:30 冷えてます #photography RICOH GR III #GR3 https://t.co/he2XO9Pfwi
  • 16:55 久しぶりに HiveQL クエリ書いた。
  • 21:56 今年1本目のデ・オウが届いた。まるごと洗浄していく!
  • 24:53 さっそく頭の上から全身デ・オウして超絶スッキリした。
  • 25:02 2023年5月18日 (木) したこと - HiveQL クエリで集計する - 顧客Twitter フォロワーについての図を書く
[ 5月18日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.022908s / load averages: 0.31, 0.27, 0.26