Am un exercițiu pentru a pune într-un fișier unele date (* conf din unele directoare) și trebuie să fac acest lucru în fundal. Am făcut-o și mă întreb care este semnificația mesajelor de ieșire:

[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 & 

Enter crește acest rând:

[1] 2533 

ce înseamnă? După alt Enter, apar alte mesaje

[A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 

Ce înseamnă? Ce este „Ieșirea 2”?

Introduceți rezultatele verificării – pare să fie totul OK.

[A@localhost tests]$ [A@localhost tests]$ ls -l test1_6_conf.txt -rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt [A@localhost tests]$ 

Folosesc CentOS 6.4, Gnome Terminal Emulator.

Răspuns

Ce înseamnă? Ce este „Ieșirea 2”?

Este starea de ieșire a ls. Vezi omul pentru ls:

 Exit status: 0 if OK, 1 if minor problems (e.g., cannot access subdirectory), 2 if serious trouble (e.g., cannot access command-line argument). 

Cred că motivul este că ai o mulțime de * fișiere conf în /etc și nu există * fișiere conf în / usr. De fapt, ls -ld /usr/*conf; ar fi avut același efect.

Deci, dacă fac pe computerul meu ls pentru un existent fișier:

ls main.cpp; echo $? main.cpp 0 

Și pentru un fișier care nu există:

ls main.cppp; echo $? ls: cannot access main.cppp: No such file or directory 2 

Sau ca proces de fundal ls pentru un fișier care nu există:

>ls main.cppp & [1] 26880 ls: cannot access main.cppp: No such file or directory [1]+ Exit 2 ls main.cppp 

Comentarii

  • O! Mulțumiri. Acum am ' am realizat că ls /usr/*conf returnează 2 deoarece nu există nume de fișiere care să conțină " conf ".
  • @ALZ, rețineți că returnează 2 deoarece nu poate găsi fișierul numit /usr/*conf. Și bash îi transmite acel nume de fișier, deoarece nu poate ' să găsească fișiere care se potrivesc cu acel model. Cochilii mai bune precum zsh ar fi returnat o eroare " fără potrivire " și nu ar rula ls deloc.

Răspuns

Această comandă medie sa încheiat cu starea de ieșire diferită de 0 (succes).

Încercați să nu puneți (&) la sfârșit , pentru a vedea ce se întâmplă.

Dacă acea comandă durează mult atunci când rulează, o puteți verifica cu:

lnx #> job -l

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *