Puncte:2

De ce „mai puțin” acceptă un nume de fișier gol și arată unele variabile de mediu?

drapel cn

am alergat a Mai puțin comandă pe care mă așteptam să eșueze, deoarece numele fișierului ar fi gol, dar spre surprinderea mea, a tipărit câteva variabile de mediu:

$ mai puțin -XE „$(care inexistent-script)”
export LESSOPEN="| /usr/bin/lesspipe %s";
export LESSCLOSE="/usr/bin/lesspipe %s %s";

(-XE practic îl face să se comporte ca pisică.)

pisică, pe de altă parte, eșuează:

$ cat "$(care script inexistent)"
cat: '': Nu există un astfel de fișier sau director

De ce Mai puțin fa asta? Îmi pot imagina doar că este problematic, deoarece dacă există o eroare în codul dvs. care provoacă un nume de fișier gol, veți obține rezultate false.

În timp ce suntem aici, de ce imprimă acele variabile de mediu? Sunt din mediul meu? Sunt identice:

$ declare -p LESSOPEN LESSCLOSE 
declara -x LESSOPEN="| /usr/bin/lesspipe %s"
declara -x LESSCLOSE="/usr/bin/lesspipe %s %s"

Am verificat barbat mai putin cu exceptia nume de fișier parametrul nu pare a fi documentat în mod explicit. Alte mențiuni despre aceasta nu păreau să aibă legătură cu acest comportament. Am verificat de asemenea Mai puțin FAQ.

drapel hr
Se pare că executarea `lesspipe` cu un nume de fișier gol este o utilizare specială, destinată să fie făcută dintr-un script de configurare shell pentru a seta mediul pentru invocări `leses` ulterioare. Vezi, de exemplu, [Poți explica expresia eval în .bashrc implicit](https://askubuntu.com/questions/724351/can-you-explain-eval-expression-in-the-default-bashrc). Nu stiu unde este documentat asta.
wjandrea avatar
drapel cn
@steeldriver Huh, ai dreptate! Tocmai am încercat `less --no-lessopen ''` și nu a reușit cu `: Nu există un astfel de fișier sau director`. Deci, dacă am înțeles corect, aceasta este o ciudatenie a configurației Ubuntu? (și poate și configurația Debian din amonte?)
user10489 avatar
drapel in
Ei bine, este o ciudatenie a lesspipe cel puțin, iar pagina de manual lesspipe spune că a fost scris pentru Debian.
wjandrea avatar
drapel cn
@steeldriver Se pare că problema rădăcină este că `mai puțin` nu citează corect șirul pe care îl transmite la `LESSOPEN`, în schimb, tot ceea ce face este ["Inserați o bară oblică inversă înainte de fiecare metacaracter"](https://github.com /gwsw/less/blob/1d0e8245cd32b149101039adfc0a379daf778de1/filename.c#L138-L143). Aș prefera să nu încerce deloc să citeze, apoi să cităm numele fișierului în configurație: `LESSOPEN='| /usr/bin/lesspipe "%s"'`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.