Puncte:10

De ce nu funcționează comanda „watch” pe un alias?

drapel sh

Așa că am creat comanda mea de alias personalizată și am încercat să o folosesc cu alias, dar pseudonimul meu nu a fost recunoscut în timp ce era concatenat cu ceas comanda.

Așa că am încercat să fac un fir din el și, din fericire, acest unul m-a ajutat.

Dar care este motivul pentru asta?

Am creat un alias în mine .bashrc care funcționează perfect.

alias gpu='senzori nouveau-pci-0100'
alias cpu='senzori coretemp-isa-0000'

iar când concatenez ceas și GPU ca aceasta:

ceas GPU

Primesc asta mai jos la fiecare 2 secunde:

sh: 1: gpu: nu a fost găsit

Și am rezolvat-o în legătură cu threadul menționat mai sus astfel:

alias = watchh='watch'
uita-te la GPU

Dar de ce se întâmplă asta? De ce nu poate folosi comanda mea alias definită cu siguranță?

Presupun că este ceva legat de utilizator pentru că am făcut root odată și nu mi-am putut folosi aliasul, dar cu siguranță am nevoie de un expert care să răspundă la asta.

Puncte:17
drapel hr

Nu are nimic de-a face cu utilizatorii.

Aliasurile sunt extinse doar în interactiv shell pentru care sunt definite - deci un shell bash interactiv dacă le-ați definit prin ~/.bashrc, sau un shell zsh interactiv dacă le definiți în ~/.zshrc de exemplu.

The ceas comanda invocă comenzi prin a non-interactiv /bin/sh coajă.

Prin aliasing ceas în sine, ca alias watchh='watch' (cu un spațiu în urmă) și apoi folosind uita-te la GPU, forțați shell-ul interactiv actual să se extindă gpu inainte de i s-a transmis ceas.

Rețineți că în zsh, aliasurile pot fi definite ca global ceea ce le permite să fie extinse oriunde într-o comandă - evitând necesitatea de a alia ceas cu un spatiu tras.

Karl Bielefeldt avatar
drapel jp
Puteți numi aliasul „ceas” fără „h” suplimentar. Fac asta și pentru `sudo` în .bashrc-ul meu.
Puncte:4
drapel in

The ceas comanda nu localizează aliasuri, ci doar comenzi în calea de căutare. Ca alternativă, definiți GPU și Procesor ca scripturi shell în loc de aliasuri și plasați-le în calea dvs. de căutare. Apoi a ta ceas gpu și ceas CPU comenzile vor funcționa bine.

De exemplu, dacă $HOME/bin este un director în calea de căutare, creați un fișier $HOME/bin/gpu care contine linia:

senzori nouveau-pci-0100

Faceți fișierul executabil:

$ chmod +x $HOME/bin/gpu

și ești gata de plecare!

$ watch gpu

Apoi faceți același lucru pentru Procesor.

YoloWex avatar
drapel sh
Pare legitim, omule, dar nu există niciun ```/bin``` în directorul meu de acasă. dacă ai vrut să spui ```~/bin``` prin ```$HOME/bin```
drapel br
@YoloWex te împiedică să faci unul?
Peter Cordes avatar
drapel fr
@YoloWex: Da, `~` se extinde la `$HOME`, directorul tău de acasă. Scripturile implicite .profile de pe majoritatea sistemelor vor adăuga acel director la `$PATH` dacă există.
YoloWex avatar
drapel sh
@hobbs Am încercat să fac unul și am urmat instrucțiunile și a FUNCȚIONAT. Mulțumiri
David Z avatar
drapel es
Aș sugera în schimb `~/.local/bin`, pentru coerență cu [specificația directorului de bază XDG](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html), dar nu contează _chiar_.

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.