Шта је Стдерр?

Стдерр, такође познат као стандардна грешка, је подразумевани дескриптор датотека где процес може да пише поруке о грешци.

У оперативним системима сличним Унику, као што су Линук, МацОС Кс и БСД, стдерр је дефинисан ПОСИКС стандардом. Његов подразумевани број дескриптора датотеке је 2 .

У терминалу, стандардна грешка подразумевана је на корисничком екрану.

Стдерр на Линук командној линији

У басх-у, стандардна грешка се може преусмерити на командну линију. Преусмеравање стдерр-а може бити корисно ако желите да ухватите било коју поруку о грешци у посебну датотеку дневника, или да потпуно скријете поруке о грешкама.

На пример, размотрите следећу наредбу финд :

 финд / -инаме '* сометхинг *' 
 / уср / схаре / доц / сометхинг / уср / схаре / доц / нешто / екамплес / сометхинг_рандом финд: `/ рун / удискс2 ': Дозвола је одбијена:` / рун / впа_супплицант': Дозвола није дозвољена / уср / схаре / сометхинг / уср / игре / нешто 

Добијамо грешке јер финд покушава да претражи неколико системских директоријума које немамо дозволу за читање. Линије које кажу "Пермиссион дениед" су поруке о грешкама и написане су на стдерр . Остале линије су записане у стдоут (стандардни излаз). По дефаулту, оба се приказују на терминалу.

Да бисте сакрили стдерр, можемо да их преусмеримо референцирањем броја дескриптора датотеке стандардне грешке, 2, и оператора "оутпута преусмеравања", > .

 финд / -инаме '* сометхинг *' 2> / дев / нулл 
 / уср / схаре / доц / нешто / уср / схаре / доц / нешто / примјери / сометхинг_рандом / уср / схаре / нешто / уср / игре / нешто 

Грешке се више не приказују, јер је сав излаз на стдерр преусмерен на / дев / нулл, специјални уређај у Линуку који "нигде не иде".

Такође можемо да преусмеримо све грешке у датотеку:

 финд / -инаме '* сометхинг *' 2> оутпут.ткт 
 / уср / схаре / доц / нешто / уср / схаре / доц / нешто / примјери / сометхинг_рандом / уср / схаре / нешто / уср / игре / нешто 

Сада, ако унесете садржај оутпут.ткт, видећете да су тамо сачуване поруке о грешкама:

 цат оутпут.ткт 
 финд: `/ рун / удискс2 ': Дозвола није пронађена:` / рун / впа_супплицант': Дозвола је одбијена 

За детаљне информације о томе како преусмерити токове података, погледајте преусмеравање у басх.

Порука о грешци, изрази оперативног система