Je! Ninaokoaje kipato cha faili kwenye faili?


Nenda kwa jibu lililokubaliwa


Je! Ninaokoaje utoaji wa amri kwa faili?

Je! Kuna njia bila kutumia programu yoyote? Ningependa kujua jinsi.


746





2014-02-14




Idadi ya majibu: 7


Ndio inawezekana, tu kuelekeza pato kwa faili:

 SomeCommand > SomeFile.txt  
 

Au ikiwa unataka kuongeza data:

 SomeCommand >> SomeFile.txt
 

Ikiwa unataka stderr vile vile tumia hii:

 SomeCommand &> SomeFile.txt  
 

au hii ya kuongezea:

 SomeCommand &>> SomeFile.txt  
 

ikiwa unataka kuonyeshwa zote mbili stderr na mazao kwenye koni na kwenye faili tumia hii:

 SomeCommand 2>&1 | tee SomeFile.txt
 

(Ikiwa unataka pato tu, teremsha 2 kilicho hapo juu)


823


2014-02-14

Kuandika matokeo ya amri kwa faili, kimsingi kuna njia 10 zinazotumika kawaida.

Maelezo ya jumla:

Tafadhali kumbuka kuwa n.e. katika safu ya syntax inamaanisha "haipo".
Kuna njia, lakini ni ngumu sana kutoshea kwenye safu. Unaweza kupata kiunga kinachosaidia katika sehemu ya Orodha juu yake.

           || visible in terminal ||   visible in file   || existing
  Syntax  ||  StdOut  |  StdErr  ||  StdOut  |  StdErr  ||   file   
==========++==========+==========++==========+==========++===========
    >     ||    no    |   yes    ||   yes    |    no    || overwrite
    >>    ||    no    |   yes    ||   yes    |    no    ||  append
          ||          |          ||          |          ||
   2>     ||   yes    |    no    ||    no    |   yes    || overwrite
   2>>    ||   yes    |    no    ||    no    |   yes    ||  append
          ||          |          ||          |          ||
   &>     ||    no    |    no    ||   yes    |   yes    || overwrite
   &>>    ||    no    |    no    ||   yes    |   yes    ||  append
          ||          |          ||          |          ||
 | tee    ||   yes    |   yes    ||   yes    |    no    || overwrite
 | tee -a ||   yes    |   yes    ||   yes    |    no    ||  append
          ||          |          ||          |          ||
 n.e. (*) ||   yes    |   yes    ||    no    |   yes    || overwrite
 n.e. (*) ||   yes    |   yes    ||    no    |   yes    ||  append
          ||          |          ||          |          ||
|& tee    ||   yes    |   yes    ||   yes    |   yes    || overwrite
|& tee -a ||   yes    |   yes    ||   yes    |   yes    ||  append
 

Orodha:

  • command > output.txt

    Utiririshaji wa kiwango cha pato utaelekezwa kwa faili tu, haitaonekana kwenye terminal. Ikiwa faili tayari ipo, inaandikwa tena.

  • command >> output.txt

    Utiririshaji wa kiwango cha pato utaelekezwa kwa faili tu, haitaonekana kwenye terminal. Ikiwa faili tayari ipo, data mpya itasisitizwa hadi mwisho wa faili.

  • command 2> output.txt

    Utiririshaji wa kosa la kawaida utaelekezwa kwa faili tu, haitaonekana kwenye terminal. Ikiwa faili tayari ipo, inaandikwa tena.

  • command 2>> output.txt

    Utiririshaji wa kosa la kawaida utaelekezwa kwa faili tu, haitaonekana kwenye terminal. Ikiwa faili tayari ipo, data mpya itasisitizwa hadi mwisho wa faili.

  • command &> output.txt

    Pato la kawaida na mtiririko wa makosa ya kawaida utaelekezwa kwa faili tu, hakuna kitu kitaonekana kwenye terminal. Ikiwa faili tayari ipo, inaandikwa tena.

  • command &>> output.txt

    Pato la kawaida na mtiririko wa makosa ya kawaida utaelekezwa kwa faili tu, hakuna kitu kitaonekana kwenye terminal. Ikiwa faili tayari ipo, data mpya itasisitizwa hadi mwisho wa faili ..

  • command | tee output.txt

    Utiririshaji wa kawaida wa pato utakiliwa kwa faili, utaonekana bado kwenye terminal. Ikiwa faili tayari ipo, inaandikwa tena.

  • command | tee -a output.txt

    Utiririshaji wa kawaida wa pato utakiliwa kwa faili, utaonekana bado kwenye terminal. Ikiwa faili tayari ipo, data mpya itasisitizwa hadi mwisho wa faili.

  • (*)

    Bash haina syntax ya shorthand inayoruhusu kuweka tu StdErr kwa amri ya pili, ambayo ingehitajika hapa pamoja na tee kukamilisha jedwali. Ikiwa unahitaji kitu kama hicho, tafadhali angalia "Jinsi ya kupiga bomba, na sio kuteleza?" kwenye kufurika kwa njia kwa njia kadhaa jinsi hii inaweza kufanywa kwa mfano kwa kubadilishana kwa mito au kutumia njia mbadala.

  • command |& tee output.txt

    Aina zote mbili za utoaji na kiwango cha kawaida cha kosa zitakiliwa kwa faili wakati bado zinaonekana kwenye terminal. Ikiwa faili tayari ipo, inaandikwa tena.

  • command |& tee -a output.txt

    Aina zote mbili za utoaji na kiwango cha kawaida cha kosa zitakiliwa kwa faili wakati bado zinaonekana kwenye terminal. Ikiwa faili tayari ipo, data mpya itasisitizwa hadi mwisho wa faili.


920


2016-02-08

Unaweza kutumia pia tee kupeleka mazao kwa faili:

 command | tee ~/outputfile.txt
 

Marekebisho kidogo yatashika pia:

 command 2>&1 | tee ~/outputfile.txt
 

au mfupi mfupi na ngumu kidogo:

 command |& tee ~/outputfile.txt
 

tee ni muhimu ikiwa unataka kuwa na uwezo wa kukamata pato la amri wakati pia unaangalia moja kwa moja .


111


2014-06-20

Unaweza kuelekeza pato la amri kwa faili:

 your_command >/path/to/file
 

Ili kuongeza kipengee cha amri kwa faili badala ya kuiboresha, tumia:

 your_command >>/path/to/file
 

20


2014-02-14

Kuongeza kwa kuzingatia -

Maandishi anuwai yataingiza nambari za rangi ndani ya pato ambalo hutaki kutatanisha faili yako ya logi.

Ili kurekebisha hili, unaweza kutumia programu sed kuwateka nje codes hizo. Mfano:

 command 2>&1 | sed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' | tee ~/outputfile.txt
 

15


2014-07-08

Kwa cron kazi nk unataka kuzuia upanuzi wa Bash. sh Waendeshaji sawa wa Urekebishaji wa POSIX ni

 Bash          POSIX
------------  --------------
foo &> bar    foo >bar 2>&1
foo &>> bar   foo >>bar 2>&1
foo |& bar    foo 2>&1 | bar
 

Utagundua kuwa kituo cha POSIX kwa maana fulani ni rahisi na wazi zaidi. &> Syntax ilikopwa kutoka csh ambayo lazima tayari kuwashawishi kwamba ni wazo baya.


6


2018-04-11

some_command | tee command.log na some_command > command.log uwe na suala kwamba hawahifadhi pato la amri kwenye command.log faili kwa wakati wa kweli.

Kuepuka suala hilo na kuhifadhi pato la amri kwa wakati halisi, unaweza kuongezea unbuffer , ambayo inakuja na expect kifurushi.


Mfano:

 sudo apt-get install expect
unbuffer some_command | tee command.log
unbuffer some_command > command.log
 

Kuzingatia log.py ina:

 import time
print('testing')
time.sleep(100) # sleeping for 100 seconds
 

unaweza kukimbia unbuffer python log.py | tee command.log au unbuffer python log.py > command.log

Habari zaidi: Ninawezaje kuokoa pato la amri kwa faili katika muda halisi?


1


2018-07-04