Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seems to expand glob patterns like "*" and "?", even in "quoted" or "\"-escaped command line arguments #432

Closed
juggler999 opened this issue Jun 4, 2023 · 6 comments

Comments

@juggler999
Copy link

(1) Csh などの仕様とは異なり,現在のNyagos はクォートされた,または""でエスケープされたコマンドライン引数においても"*"や"?" のような glob パターンを展開するようです(nyagos-4.4.13_1 で確認しました).

echo /usr/bin/*.exe
echo "/usr/bin/*.exe"
echo /usr/bin/\*.exe

これは以前からのNyagosの仕様なのでしょうか?

(2) またグロブ展開の際にパス名の区切り文字を""で返すようですが,これを"/"に統一する予定はないでしょうか?

@hymkor
Copy link
Collaborator

hymkor commented Jun 4, 2023

(1)
\ がサポートしている記号のエスケープは今のところ二重引用符だけになります。set -o glob で有効になる外部コマンド向けワイルドカード展開の *? のエスケープはサポートしていません。

(というのも、Windows は基本「生の(無加工の)コマンドライン」をコマンド側に引き渡すのが原則なので、エスケープした後のテキストとして \ を付けた状態で渡して、コマンド側の方がそれをどう解釈するか分からないというのもあるからです。\" については処理の仕方が Microsoft のガイダンスで決まっているみたいなので )

二重引用符で囲まれた引数のワイルドカード展開は仕様としては未定義でしたが、展開されるべきではないと思います。自分は set -o glob を日常的に使用していなかったため、気づいていませんでした。二重引用符を配慮するよう対応します。

(2)
ワイルドカード展開において、パス区切りを \ ではなく / にするかどうかですが、今のところ予定はありません
(が、要望があればオプションとしてはありかなと思います)

hymkor added a commit that referenced this issue Jun 4, 2023
… wildcards (They should not be)
@juggler999
Copy link
Author

わたしは set -o glob を常用しています.
(1)
\ によるエスケープにつきましては理解しました.
二重引用符によるワイルドカード展開の抑制の方は対応いただけるとたいへんにありがたいです.

(2)
Nyagos の内部コマンドの ls などもパス区切りを \ としているようですね.オプションにより / とする対応を今後検討いただけないでしょうか?

@hymkor
Copy link
Collaborator

hymkor commented Jun 4, 2023

(1)

二重引用符によるワイルドカード展開の抑制の方は対応いただけるとたいへんにありがたいです

こちらについては了解です(一応、もうソース的には対応しましたので、次回リリースに反映予定です)

(2)

オプションにより / とする対応を今後検討いただけないでしょうか?

承知しました。切り替えて使えるようなオプションを用意いたします。

@juggler999
Copy link
Author

ありがとうございます.
現在はワイルドカード展開する/しないを set -o glob と set +o glob で切り替えているため,たいへんに助かります.
set -o glob せずに,必要に応じて wildcardコマンドを使えばいいのはわかっているのですが,ちょっと億劫でしたので...

hymkor added a commit that referenced this issue Sep 3, 2023
@hymkor
Copy link
Collaborator

hymkor commented Oct 6, 2023

おまたせいたしました。4.4.14_0 にて、バイナリにも修正を反映いたしました。

#432 set -o glob 時、二重引用符内の*,? がワイルドカードとして展開されていた(本来されるべきではない)
#432 新オプション glob_slash を追加。設定されている時(起動オプション:--glob-slash, lua関数: nyagos.option.glob_slash=true、コマンドライン:set -o glob_slash)、ワイルドカード展開で / を使う

あと、場合によっては、こちらも役にたつかもしれません。

nyagos.d/suffix.lua: 環境変数 NYAGOSEXPANDWILDCARD にリストされているコマンドのパラメータはワイルドカードを自動展開するようにした(例:nyagos.env.NYAGOSEXPANDWILDCARD="gorename;gofmt"

以上、よろしくお願いいたします。

@hymkor
Copy link
Collaborator

hymkor commented Oct 17, 2023

本件、クローズさせていただきます。
何か問題などありましたら、再オープンください。

@hymkor hymkor closed this as completed Oct 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants