すいません、嘘つきました。Zsh大好きです。 Bashよりも使いやすい(=勘のいい)Zshが憎いです。 はじめに 先日、FishからZshに乗り換えました。 何故かと言うと、FishがPOSIX非互換だったからです。 とは言えども、 ZshもPOSIX非互換 なんですよね。まあ、POSIXモードもあるし、できうる限り対応させようという気がありそうなので、Zshを選びました。 しかし!そうは言ってもやっぱりPOSIX非互換。Bashと共同のスクリプトを使おうとすると、注意しなければならない点 が他のシェルと比べても数多くあります。 この記事では僕が引っかかったところを中心に、備忘録的にそういう点をまとめていきたいと思います。 何かあれば適宜追加していきます。 いいね、ストック等して頂けると今後の勉強の励みになります。 間違いや不足、書いておくと良いのでは?という項目などあればコメントなどでご
fishからzshに移行する過程を、備忘録的に残したいと思います。 はじめに 僕はfishが大好きです。 今までのbashとは違った、使いやすくて離れづらいシェルです。 bashが使いづらいとは言ってません。 しかし、fishはPOSIX非互換なんですよね。すると、いままでbashで構築してきた知識が半分くらい使えないんです。なんか困ったことがあってググっても、基本的にbash前提の記事ばかりなので、微妙に読み替えなきゃいけないところがあるの。 そこで、zshに乗り換えてフレンドリーでインタラクティブにして、fishのような使い勝手に仕立て上げようと思います。(元々インタラクティブではある件は気にせんといて) (よく考えると、POSIX非互換でそれなりにユーザーがいて有名なシェルって、fishとpwsh(PowerShell)くらいしかないよね。fishすごい。ash含めるかは意見が分かれ
tl;dr fig starship zsh fzf sheldon なぜ vscode の .vscode/tasks.json が fishと非常に相性が悪い。とくに fish-nvm を使っていると、fish 経由のパス実行時に node と npm へパスが通らない。 そもそも fish を使っていた理由は autocomplete を快適にするためだったが、1年ぐらい Fig を使っていて、補完はこれを任せていいと気づいた。 Fig はこういうやつ そもそも fish の拡張コマンドを使わないように生活していた。方言を覚えたくない。というか bash 拡張や zsh 拡張もあんまり覚えたくない。
alias show-ssl-cert='openssl s_client -connect $1:443 -showcerts' まあ関数定義にしちゃえば解決するんですけども、「これはエイリアスであって、断じて関数ではない」という気持ちのときもあるでしょう。 解決する Zsh では無名関数が使えるようなので、こうします。
How often do you make a directory (or series of directories) and then change into it to do whatever? 99% of the time that is what I do. This BASH function 'md' will make the directory path then immediately change to the new directory. By using the 'mkdir -p' switch, the intermediate directories are created as well if they do not exist. Show Sample Output
Linux/Mac で複数ファイルをリネームする場合 rename コマンドとかリネームソフト使うって手もありますがZsh使いなら zmv ですよねってことで man zsh-lovers からよく使うものをまとめてみました。 ## 準備 # zmv を使用する前には `autoload zmv` する必要がある # `man zshexpn` の PARAMETER EXPANSION とかも見ておくと捗る # zmv の使用例については `man zsh-lovers` にたくさんあります ## 便利なオプション ## zmv のオプションについては `man zshcontrib` で調べることができる。 # zmv -n (実際にリネームする前に結果を確認) zmv -n '*' '$f[5,-1]' # 例は頭4文字削除 # zmv -W ('(*)' '$1' を '*' で済
以下のワンライナーは、カレントディレクトリ以下のflvをmp4に一括変換します。 コードを短くするためにzshの機能を使っています。 for f (*.flv) ffmpeg -i $f:r{*,.mp4} 一般化した表現は以下のようになります。 CODEC_FROM=flv CODEC_TO=mp4 for f (*.$CODEC_FROM) ffmpeg -i $f:r{*,.$CODEC_TO} なぜ動くのか for文とffmpegの組み合わせ for name ... ( word ... ) sublistはzshの短縮for文 $val:rのように変数に:rを付加するとfilename($val)と同じ意味になる グループ識別子の{}を使って部分的に異なる引数を記述している。通常ならffmpeg -i video.flv video.mp4と書くべきところをffmpeg -i
自分が使っている便利な機能を紹介 $ rm */(-@) ファイル修飾子は使っている人も多いはず。 zsh で find を使わずに簡単にファイルを絞り込む *(@) でシンボリックリンク *(-@) でリンクが切れたシンボリックリンク rm **/*(-@) で下位階層含めたリンク切れのシンボリックリンクの削除 修飾子で他に便利なのは *(-ch-1) シンボリックリンクのリンク先が1時間以内に作られたファイル *(U) 自分のファイル *(u:hoge:) ユーザ hoge のファイル *(/^F) 空のディレクトリ $ tkdiff =(zcat xxx.gz | cut -f 1) =(zcat xxx.gz | cut -f 2) プロセス置換 <(zcat xxxx.gz | grep yyyy | cut -f 2 ) みたいな形でわざわざ一時ファイルにしなくても、ファイル指
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
X-seq: zsh-users 20374 From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> To: Kurtis Rader <krader@xxxxxxxxxxxxx>, Zsh Users <zsh-users@xxxxxxx> Subject: Re: PSA: Mac OS X El Capitan upgrade might break your $PATH Date: Fri, 31 Jul 2015 10:22:05 -0700 In-reply-to: <CABx2=D-TXjJpoN8pQOR6nswM4J3xxwgm8aoFn8ZyE-o2DZw9pQ@mail.gmail.com> List-help: <mailto:zsh-users-help@zsh.org> List-id: Zsh Users List <z
zshというシェルはデフォルトでも素晴らしいのですが、あまりに拡張性が高いので全ての機能を使いこなすのは逆に難しいと思います。 特にzstyleというコマンドの文脈に応じた補完候補への設定関数は、使用するとどうなるのかヘルプを見てもWeb上を見てもよく分かりません。 そんなわけでzstyleの挙動について調べてみました。 参考にしたサイト http://www.gentei.org/~yuuji/rec/pc/zsh/zshcompsys.txt http://wiki.fdiary.net/zsh/?ColoredCompletion http://grml.org/zsh/zsh-lovers.html http://www.dna.bio.keio.ac.jp/~yuji/zsh/zshrc.txt http://q-eng.imat.eng.osaka-cu.ac.jp/~ippe
tl;dr よく使われるコマンドの一つに cd コマンドがあります。ターミナル生活の 80% 近くは cd と ls である、という英文記事を何処かで見かけました。それを効率化しようという Tips です。 目的 cd はよく使われるのに使い勝手が悪いコマンドである気がしてなりません。cd コマンドは有効なパス(相対パス、絶対パスは問わず)しか解釈してくれないからです。つまり、存在していて尚且つパスが解決できるものに限るのです。例えば、ホームディレクトリにいるときに、/home/lisa/work/dir に行こうとして cd dir とだけタイプしても no such file or directory (そんなディレクトリは見当たらないよ!)と言われてしまいます。きちんとした経路でなければならないのです。いちいちパスを覚えていない場合や、部分的にしか思い出せない場合には結構面倒ですよね
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く