X



zsh その7
0001名無しさん@お腹いっぱい。
垢版 |
2012/05/24(木) 16:34:43.03
zshについて語るスレ

http://www.zsh.org/
http://zsh.sourceforge.net/

・過去ログ
zsh その6
http://toro.2ch.net/test/read.cgi/unix/1229010860/
zsh その5
http://pc11.2ch.net/test/read.cgi/unix/1212677877/
zsh その4
http://pc11.2ch.net/test/read.cgi/unix/1107342206/
zsh その3
http://pc5.2ch.net/test/read.cgi/unix/1080002786/
zsh入門 パート2
http://pc3.2ch.net/test/read.cgi/unix/1036324177/
zsh入門
http://pc.2ch.net/test/read.cgi/unix/990283346/
0643名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 09:15:19.48
誰しも失敗はあるし、フェイルセーフはやっぱほしいよ。
>>642
> 補完offにしとくか、HISTSIZEを2-3ぐらいにしとけば
それだと普段の作業がちょっと不便では。

>>641
は毎回mv,sedとかが走るのはパフォーマンス的にどうなんだ
HISTFILE=~/my_history みたいに換えとくのが単純でいいか。
0644名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 09:25:34.17
>>642
ヒストリ展開は便利だけど、ファイル編集した後なんか適当なコマンドを思いつきで打ってしまうとやりにくい。

>>643
いやこのためだけに、$HISTFILEをファンシーな名前にするのはなんだか環境が汚れた感じがする。
0646名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 12:10:26.35
書き直した。ヒストリのバックアップは別でやるべきだわ
function ensure-file-head(){
[[ $(< $1 | read -re) == $2 ]] && return
< =(print -r -- $2;< $1) > $1
} # ensure preventing `source .zsh_history`.
ensure-file-head $HISTFILE 'echo '"'"'Cannot source `'$HISTFILE'`, Abort.'"'"' >&2;return 1'

ファイル直接編集を避けるためにヒストリ関連の組み込み命令 fc -R, -W とかを使ってやる方法も考えてみたが、オプションの具合によってはファイルに追記しかしないし、デフォルトでは詳細なタイムスタンプがつかなかったりするので、
「この指定はsetopt 〜 の後で行う必要がある」のような条件がついて美味しくない。

>>645
補完よく知らないのだが、そっちに手を入れるほうが良さそうだね。
試してみたところその指定では tail .zsh_history のようなものも弾かれてしまわない?
source だけに限定するのは難しいだろうか
0649名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 13:01:33.64
問題の対策は他にもEnterキーのアクションである accept-line ウィジェットを置き換えるとか、
コマンドライン実行前に呼ばれる preexecフックとかで止める方法がある。後者は記事のブックマークコメントの先で紹介されてた。
でも言われてた通り機構をあらたに作る必要があって煩雑になるし、その辺は元々弄りたい需要が多すぎるのでただでさえゴチャついてるところに手を入れがたい。

インタラクティブシェルだけ source を関数で置き換える方針はどうだろう。
.zsh_historyが引数のときだけ実行を警告するように。これも軽い修正になってよさそうじゃないかな
0652名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 14:02:16.19
>>648
いや history じゃなくてわざわざ tail .zsh_history を使うのってどういう時なの?
何にせよ .zsh_history を開きたいときは command $HISTFILE<tab> でもいいと思うけど
0654名無しさん@お腹いっぱい。
垢版 |
2019/08/04(日) 14:15:12.35
>>652
ヒストリ関連のオプションをいじってたとき、内部ヒストリがファイルに保存されているかを確認するために tail .zsh_history と history を見比べてた。
テンポラリのヒストリファイルを複数作って実験していたので、tail $HISTFILE はその用途では使いにくい。

このような需要はあまりないとは思うけど、補完を絞る方法がもしあるならモアベターだと思うんだ。

>>651
ひょっとしてサフィックスエイリアスかな? それはよさそう
$ alias -s zshrc=source
$ ~/.zshrc
(source ~/.zshrc が行われる…)
0658名無しさん@お腹いっぱい。
垢版 |
2019/08/18(日) 23:52:53.56
zshクソ。誰もが使いそうな変数名を特殊扱いすんな

statusとかpathとかsecondsとか
0660名無しさん@お腹いっぱい。
垢版 |
2019/10/19(土) 20:04:44.61
遅レスですまないけど、.zhistoryって行頭が:になってるからsourceしてもスルーするんじゃないの?
:って何もしないって機能だよね
0661名無しさん@お腹いっぱい。
垢版 |
2019/10/20(日) 18:48:22.54
EXTENDED_HISTORY <C>
Save each command's beginning timestamp (in seconds since the epoch) and the duration (in seconds) to the history file. The for‐
mat of this prefixed data is:
`: <beginning time>:<elapsed seconds>;<command>'.

: ... : ... ; rm -rf /

いかんでしょw
0662名無しさん@お腹いっぱい。
垢版 |
2019/10/22(火) 13:36:40.23
>>660
> :って何もしないって機能だよね

なにも "出力しない" 機能であって何もしない機能ではない。
: $(touch /tmp/ttttt)
は実際にファイルを作成する。コメントの代わりには使えない。


そもそも>>661が言ってる通り、;で区切られてるから動く
0663名無しさん@お腹いっぱい。
垢版 |
2019/10/22(火) 13:37:43.51
まあ、: コマンド自体が何もしないってのはそのとおりだけど
一行全体で見ると、引数部分を実行するという話
0664名無しさん@お腹いっぱい。
垢版 |
2019/10/23(水) 06:15:25.06
:はなにもしないし引数をすべて無視するけどシェルが:の引数と解釈しなかった部分が実行される
よって;とか&&とか$()とか<()とかいろいろ実行される
0666名無しさん@お腹いっぱい。
垢版 |
2019/10/26(土) 22:13:29.87
>>665
変数の代入と停止の無効化
0669665
垢版 |
2019/10/27(日) 00:54:52.87
そういや普通にwhile : ;do〜みたいに手癖で使ってたわ
あと昔書いてたシェルスクリプトでも冒頭でset -eを設定しておきつつ
エラーで止まってほしくない箇所で : を使ってた
てかzsh関係ないですねすんません
0670名無しさん@お腹いっぱい。
垢版 |
2019/11/10(日) 00:49:14.12
zshが馴染みすぎるとbash、それも素の設定を使わざるを得ない状況になるとストレスがすごいよね
鯖缶の方とかそういうシチュエーション多そうだけどどうやって折り合いつけてるんだろう
0671名無しさん@お腹いっぱい。
垢版 |
2019/11/10(日) 15:56:08.74
>>670
zshは基本入ってないんで、bashに戻りつつあるw
0672名無しさん@お腹いっぱい。
垢版 |
2019/11/10(日) 23:38:07.15
自作のZpluginプラグインのほぼ全てが壊れたまま運用していて、
むしろスッピンより不便なはずだが、何も感じなくなってしまった
インタラクティブ環境は、慣れやすいものなのかも
0673名無しさん@お腹いっぱい。
垢版 |
2019/11/13(水) 00:02:51.13
Macのデフォルトシェル採用って結構影響でかいような
問題なければ追従するUnixやLinuxの鳥も出てくるじゃないかと
0674名無しさん@お腹いっぱい。
垢版 |
2019/11/13(水) 03:58:48.06
それはないなー
bashとの互換性がね。shwordsplit、あれが最悪だね。
理屈はわかるんだけどね。互換性の点から見れば最悪。
うん。互換モードはあるよ。でもデフォルトじゃないんで代替にできない。
そこまでして変える必要性がない。
0675名無しさん@お腹いっぱい。
垢版 |
2019/11/13(水) 04:02:15.99
そもそもさ、みんな潔癖だからね。POSIX準拠。そっち優先。
debianとかubuntuは bashよりも機能が低いdashとかにしようとしてるぐらい

ログインシェルはまあ自由に使っとくれって感じだろうけど
デフォルトシェルはPOSIX準拠。これ一択なんでzshにはならんよ
遅いしね。
0676名無しさん@お腹いっぱい。
垢版 |
2019/11/13(水) 04:03:39.70
Macのログインシェルは、はたから見ると、あぁ可哀想
bashのライセンスが受け入れられなかったから
消去法でzshなんだね。ぐらいにしか思ってない。
zshを選びたくて選んだなんて誰も思ってないんだよ。
0680名無しさん@お腹いっぱい。
垢版 |
2020/05/03(日) 05:08:47.72
単なる興味なんですがzshの2系より前って手に入らないですかね?
0681名無しさん@お腹いっぱい。
垢版 |
2020/05/03(日) 05:09:03.16
2系を含みます
0683名無しさん@お腹いっぱい。
垢版 |
2020/05/05(火) 22:51:09.69
zshにBASH_ENVに相当する機能はありますか?
つまりzshでシェルスクリプトを非対話型で実行した時に
任意の処理を先立って実行したいのです。
0684名無しさん@お腹いっぱい。
垢版 |
2020/05/06(水) 07:12:37.95
>>683
~/.zshenv かな
http://zsh.sourceforge.net/Doc/Release/Files.html

スクリプト実行時に限らず対話シェル起動時にも読まれるけど
INTERACTIVEオプションの状態をチェックするifで括ればよさそう

if [[ ! -o INTERACTIVE ]]; then
echo non-interactive
fi
0685名無しさん@お腹いっぱい。
垢版 |
2020/05/06(水) 08:45:36.51
>>684
ありがとうございます
既存の ~/zshenvは修正できないという制約があるのでINTERACTIVEの
チェックは出来ませんが、ZDOTDIRを書き換えればなんとかなりそうなきがします

つまりBASH_ENVをセットして起動の代わりに
/tmp以下に一時的にファイルを作ってZDOTDIRをセットして実行
初期化処理の中で一時ファイルを削除したりZDOTDIRを元に戻したりとかです
0686名無しさん@お腹いっぱい。
垢版 |
2020/05/10(日) 02:59:44.09
10より大きいファイルディスクリプタを使うにはどうすればいいの?
0687名無しさん@お腹いっぱい。
垢版 |
2020/05/10(日) 03:14:41.32
事後怪傑しました!
0688名無しさん@お腹いっぱい。
垢版 |
2020/06/09(火) 19:06:54.37
あー、もうやだ、クソzsh。なんでこんなこともできねーんだよクソ
しかも5.5?ぐらいから挙動変わってるし、バグなんかこれ
changelogみてもなにもわからねーしー、どうすればちゃんと取得できるんだよ
0690名無しさん@お腹いっぱい。
垢版 |
2020/06/09(火) 22:18:51.92
うるせーばーか、こっちはzshがクソで困ってるんだ
bashの方がいいな
0693名無しさん@お腹いっぱい。
垢版 |
2020/06/16(火) 00:13:26.25
zshは機能が多すぎて覚えられない
お勧め設定をAI的に徐々に教えてくれたらいいのに
「そのやり方、こんなふうにもできますよ?次回からこうします?」って
0694名無しさん@お腹いっぱい。
垢版 |
2020/06/28(日) 06:13:09.19
fishどう?
0696名無しさん@お腹いっぱい。
垢版 |
2020/06/28(日) 08:56:18.58
互換性を切り捨ててるものは結局デフォルトになることはないしね
zshも互換性が完璧とは言えないから驚かれたぐらい
bashがライセンス上の都合で選択できない以上どうしようもなかったんだろうが
0698名無しさん@お腹いっぱい。
垢版 |
2020/07/07(火) 04:27:47.52
下記はとある本にのってる zsh のプロンプトの設定なんですが、一番右の % はなんなのでしょうか?
いらない気がするのですが? 誤植?

# プロンプトの右はじに、false なら終了ステータスを表示。
RPS1="%(?..(%?%))"
0699名無しさん@お腹いっぱい。
垢版 |
2020/07/07(火) 06:07:17.79
>>698
%( に対応する閉じ括弧だと解釈されるのを防ぐエスケープ
0704名無しさん@お腹いっぱい。
垢版 |
2020/07/08(水) 00:49:54.46
>>703
AT&Tがそれを全て取り消して93u+をベースに最初からやり直し、だがそれも頓挫かな
ksh2020はkshの派生の別物扱い。zshもksh(tchs)の派生だから兄弟のようなもんかw
0710名無しさん@お腹いっぱい。
垢版 |
2020/10/14(水) 06:23:19.65
ksh2020は完全に放棄されてんな
ASTからバグフィックスのためだけにフォークしたおじいちゃんが一番地道に現在活動的
0714名無しさん@お腹いっぱい。
垢版 |
2020/11/05(木) 13:49:41.45
オリジナル : 頓挫、終了
オリジナルのちゃんとしたメンテ : 無い、まだ無い
色々やった 2000 : 頓挫
地道に一人で : 地道に継続中
だけだよ。てか、いい加減過疎ってる ksh スレに行けよw zshなんも関係ないぞ
0717名無しさん@お腹いっぱい。
垢版 |
2020/12/11(金) 13:03:32.87
>>478
oh my zshとかGrmlの話題もまったくなく何話してたんだここ

>>479
使ってないわけないんだが
何故かこんなのしかいなかったからこのざまだったんだろうな
0719名無しさん@お腹いっぱい。
垢版 |
2021/01/03(日) 01:20:30.63
MacでCUIアプリをダブルクリックした際の挙動と、
インタラクティブシェルで起動した際の挙動を変えたいのだけれどフラグとなる
環境変数がなになのかわからん。
0721名無しさん@お腹いっぱい。
垢版 |
2021/01/03(日) 19:34:32.29
>>720
やっぱりそうですかわかりました。
0723名無しさん@お腹いっぱい。
垢版 |
2021/01/05(火) 10:50:40.81
機能が豊富ですから
機能が豊富なzsh固有のに慣れてしまうと他が使えない体質になりそうで使わないけどw
0725名無しさん@お腹いっぱい。
垢版 |
2021/01/24(日) 12:55:43.62
ここzshの本スレですか?随分人いないですね。
どこか別にコミュニティあるんですか?
0726名無しさん@お腹いっぱい。
垢版 |
2021/01/25(月) 16:57:13.71
>>717
今だとzinitがホットかな
でもまぁフレームワークなんて流行り廃りがあるのだし、ライトユーザが無理に使う必要もないよね
0728名無しさん@お腹いっぱい。
垢版 |
2021/01/30(土) 13:28:04.12
一通り環境作り上げて不満なくなると更新とか動向全くチェックしなくなってしまう
せめて数年に一度は見直さないといかんわな
この腰の重さは老化のバロメータか
0731名無しさん@お腹いっぱい。
垢版 |
2021/07/07(水) 06:04:31.45
お前のようにここに書くようなネタが無いだけ
使ってるヤツはそれなりにいる
5chだけが世界の全てのお前にはわからんだろうけど
0732名無しさん@お腹いっぱい。
垢版 |
2021/07/07(水) 06:13:11.87
zshのそのものの更新が一年無いって話か
それでオワコンだって言ってるのか
それもまたあたおかな発想だな
0735名無しさん@お腹いっぱい。
垢版 |
2021/08/29(日) 19:58:48.95
普段のユーザとしては zsh と (pd)ksh しか使ってない。
tcsh から乗り換えて zsh はもう17年だよ…
そろそろ bash 勉強しなきゃダメかな…
0736名無しさん@お腹いっぱい。
垢版 |
2021/12/19(日) 14:28:58.73
zsh を Mac のデフォルトシェルとして使う
https://support.apple.com/ja-jp/HT208050
macOS Catalina から、Mac は zsh をデフォルトのログインシェルおよびインタラクティブシェルとして使うようになります。
それ以前のバージョンの macOS でも、zsh をデフォルトにすることができます。
0738名無しさん@お腹いっぱい。
垢版 |
2022/04/14(木) 10:56:14.78
ZLE使えばコマンドライン入力を編集できますが、
ZLEウィジェットとして登録した関数を直接呼び出して zle を呼び出すとエラーが発生します。
外部からコマンドラインを編集する方法はないのでしょうか?
レスを投稿する


ニューススポーツなんでも実況