Терминал петък: Стандартен поток

Добре дошли в друг петък ...

Време е да опознаете малка част от терминала. След дълги размисли реших да създам публикация за стандартни потоци; Въпреки че ще бъде повърхностно, мисля, че това е нещо, което всеки трябва да знае.

Стандартен поток

Стандартен поток Състои се от няколко комуникационни канала между потребителя и терминала. Тези входни / изходни „канали“ показват или улавят информация при изпълнение на команда.

Бърза диаграма на стандартни потоци.

Бърза диаграма на стандартни потоци.

3-те I / O връзки са: стандартния вход Стандартен вход, стандартния изход Стандартен изход, STDERR Стандартна грешка.

stdin: Стандартен вход

Стандартният вход е начинът, по който улавяме информация от команда, или чрез тръби, пренасочване, клавиатура и т.н. Идентифицираме го с дескриптора на файла 0.

Дескрипторът е индикатор за достъп - в този случай - до входните и изходните канали. Това са int стойности, обикновено 0, 1 и 2.

Пример за stdin би бил:

сортиране <списък

Взема цялата информация, която е в списъка - в този случай числата, написани на случаен принцип, и когато пренасочва файла към командата ls, сортира числовия списък по азбучен ред. В този пример флаговете са неявни.

stdout: Стандартен изход

Стандартният изход, както подсказва името му, показва изхода на команда чрез конзолата. Ако напишем ls, цялата информация, която ни показва на екрана, е стандартният изход. Той е представен от дескриптор 1.

Сега ще се опитам да създам stdin и stdout със скрипт, написан на bash, просто защото обичам bash hahaha. 🙂

тест.ш

#! / bin / bash ако [-t 0]; след това echo "Използвате stdout" elif [-t 1]; след това echo "Използвате stdin" else echo "Brutal error" fi

Сега екранна снимка, която показва как да използвате скрипта. При пренасочване или използване на канал с използване на скрипта тест -t за да се знае дали се изпълнява само stdout скриптът и ако не, очевидно е stdin.

bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Въпросният скрипт и резултатите от него ...

Въпросният скрипт и резултатите от него ...

Не забравяйте да модифицирате командата и да практикувате, за да научите.

stderr: Стандартна грешка

Стандартна грешка е начинът, по който програмите показват грешки или диагностика. Той е представен от дескриптор 2.

За да разберем концепцията, това е ситуацията: когато искаме да запазим грешка в командата, първото нещо, за което мислим, е пренасочването на изхода към обикновен текст.

ls> info.txt

Това би работило, информацията за командата ще се съхранява в обикновен текстов файл. Но когато записва грешката, тя не я съхранява, а я показва на екрана и обикновеният текстов файл е празен.

Вместо това, ако използваме 2>, за да посочим за запис на stderr във файла:

ls foo 2> info.txt

Сега ще запази информацията за грешката в текстовия файл.

най-много Черупка позволяват stderr и stdout да се съхраняват в една командна команда с &> където Foo е несъществуваща директория

ls Downloads Foo &> info.txt

Този файл ще съдържа информацията за грешката при стартиране на ls на Foo и ще изброи директориите под Downloads.

И накрая, какво означава този известен 2> & 1?

Просто, пренасочете stderr към stdout. Това & в средата на> и 1 означава, че ще пренасочи към stdout. Ако не беше там, щеше да е нещо като ... "пренасочете грешката към файл 1".

И с това е възможно да се пренасочи:

  • stdout към файл
  • stderr към файл
  • stdout към stderr
  • stderr към stdout
  • stderr и stdout към файл
  • между другото

Това е всичко за днешните хора. Четем и ви благодарим, че се отбихте. 😀


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   eliotime3000 каза той

    Интересно. Благодарение на вашите уроци, много повече харесвам Bash.

  2.   Куинси Магу каза той

    Уважаеми, интересно, но имате грешка в следния ред:

    "И при пренасочване на файла към командата ls", трябва да бъде "и при пренасочване на файла към командата за сортиране".

    За поздрав.

  3.   Мигел каза той

    Има грешка в началото на текста, когато посочите командата «ls», тя трябва да бъде «сортиране»:
    "Взема цялата информация, която е в списъка - в този случай числата, написани произволно - и при пренасочване на файла към командата ls (тук ще бъде сортиране)"

    Поздрави и благодарности, че споделихте работата си

  4.   пътник каза той

    Това е чудесно за cron, където искате изходът да се изчисти (/ dev / null), но грешките да се съхраняват във файлове. Също така, когато правя това, обикновено използвам командата date, за да посоча точно кога не са успели.

    Bash (sh) разполага с тези инструменти, така разработени от философията на Unix "направете едно нещо и го направете добре"

  5.   Лоло каза той

    Ами нищо не съм открил

    1.    Глас каза той

      Хаха добре обяснено е доста добре, какво не сте разбрали?