Стандартные дескрипторы файла ввода-вывода

Я новичок в Shell SCripting

Я кодирую это

$ ls -l 1> stdout.txt 

и я получаю результат по желанию,

 1> stdout.txt 

перенаправляет вывод из стандартного вывода в файл stdout.txt.

Я не вижу такого файла на диске. Какая файловая система поддерживает такие файлы, это ramfs ?

Имеет ли это какое-либо сходство с procfs и sysfs ?

  • Как отправить ввод в программу на C с помощью сценария оболочки
  • перенаправление на именованный канал
  • тире: Труба STDIN к нескольким командам и их вывод в STDOUT в определенном порядке
  • Может ли sed сохранить свой вывод в файл?
  • Передайте аргумент скрипту, затем переадресовывайте скрипт как вход в bsub
  • Bash, если скрипт вызывается из терминала echo stdout в терминал, если из cron не выводит эхо-сигнал
  • находить командный вывод пустым при перенаправлении в файл
  • Как читать из двух входных файлов, используя цикл while
  • One Solution collect form web for “Стандартные дескрипторы файла ввода-вывода”

    Если вы работаете в Linux, и я правильно прочитал ваш вопрос, да посмотрите в /proc .

    Для конкретного процесса смотрите /proc/[pid]/fd , например ls -l /proc/123/fd/

    Существует также специальный способ достижения текущего процесса fd: /proc/self/fd .

    Обратите внимание: например, ls -l /proc/self/fd будет для процесса ls а не для вашей текущей оболочки, которую вы можете увидеть:

     cat /proc/self/cmdline | tr '\000' '\n' 

    или

     cat /proc/self/status 

    Для последнего взгляда особенно в PPid который должен быть PID вашей оболочки.

     Name: cat State: R (running) Tgid: 12696 Pid: 12696 PPid: 312 

    В качестве эксперимента вы можете попытаться открыть два окна терминала:

    1. В окне 1 введите echo $$ чтобы получить PID этой оболочки.
    2. В окне 2 скажем, cat /proc/[pid]/fd/1
    3. В окне 1 начните вводить и наблюдайте, что происходит в окне 2.

    • / proc на kernel.org
    • proc на TLDP
    • Файловые системы на man7.org
    Linux и Unix - лучшая ОС в мире.