Реальный пример (где стандартный вывод игнорируется, стандартная ошибка перенаправляется на стандартный вывод, а данные из файлового дескриптора 10 перенаправляются на стандартный вывод), для которого я потерял документацию / контекст для:
0 Standard Input (stdin) 1 Standard Output (stdout) 2 Standard Error (stderr)
но что такое дескриптор файла 10?
Это использовалось в системе Linux (возможно, Red Hat).
Половина команды не имеет смысла. Он пытается запустить скрипт из каталога, который он просто `mkdir`'d ...
grawity 12 лет назад
1
@grawity: mkdir и т. д. выполнялись на каждом из числовых узлов в кластере Linux - команда, заключенная в 's'.
Peter Mortensen 12 лет назад
0
Я знаю об этом. Я говорил конкретно о части `mkdir / home / mortense / sambapub; cd / home / mortense / sambapub; ./ runcola.sh`.
grawity 12 лет назад
0
@ Grawity: да, вы правы. Это не было хорошо продумано (вероятно, сочетание двух разных этапов).
Peter Mortensen 12 лет назад
0
3 ответа на вопрос
3
Paul
Помимо стандартных файловых дескрипторов есть 3-1024. Они могут быть созданы в сценариях с
exec 10<> afilename
С этого момента все, что записано в файловый дескриптор 10, записывается в afilename
Когда у тебя есть
./script.sh 10>&1
Вы перенаправляете все, что пошло бы в файловый дескриптор 10, в стандартный вывод.
Вы захотите просмотреть runcola.shсценарий, чтобы понять, почему он это делает.
Синтаксис `exec 10> afilename` в * sh *.
grawity 12 лет назад
0
@grawity: невозможно перенаправить на другой дескриптор файла в * sh *?
Peter Mortensen 12 лет назад
0
@Paul: возможно, это было произвольное соглашение, которое использовалось, но, учитывая, что оно использовалось для выполнения команды на каждом из нескольких узлов в кластере Linux, разве это не могло быть как-то связано с этим (сетевые каналы?) , В любом случае, я постараюсь найти два сценария.
Peter Mortensen 12 лет назад
0
@Peter: Да, с `10> & 1` или подобным.
grawity 12 лет назад
0
0
grawity
Файловые дескрипторы не исправлены; программа может использовать их по своему усмотрению. (Даже fd's 0-2 можно закрыть, открыть, использовать повторно.)
В этом случае, fd 10, кажется, выбран произвольно; возможно, ./runcola.shчто он сможет записать в него дополнительную информацию. Вы должны будете прочитать сам сценарий, чтобы знать наверняка.
0
Erik Bennett
Дескриптор 10 используется для комментариев.
В Wikipedia есть хорошая стартовая статья в File descriptor . Сказать, что shсинтаксис «перенаправляет» один дескриптор на другой, немного обманчиво . Надежные источники информации можно найти в разделе «Дизайн операционной системы UNIX». Документация по системным вызовам dup(2)и dup2(2)раскрытие выгодной сделки.
Гравити, Пол и другие (вы знаете, кто вы есть) могут также знать о некоторых дополнительных ресурсах. Ребята?