2016-03-21 2 views
1

Я хочу распечатать весь вывод из GROMACS 5.1.2.Как распечатать все, что напечатано и видно на терминале

Я знаю, как использовать > и < для станда внутри и вне, также пытался 2>&1 печатать ошибку и выход вместе, пытался по отдельности тоже, он все равно будет не печатать все, особенно некоторые полезные советы в конце концов, когда он говорит мне в чем была проблема, и мне нужна эта информация.

Я думаю, что это не будет сохранено, потому что оно исходит из другого кода, основная программа выполняет подпрограмму, и это приводит к сбоям, и я получаю отчет только на экране. У меня будет на выходе, что что-то пошло не так, и что это такое, но на экране у меня гораздо больше информации.

Если кто-нибудь знает, как я мог это сделать, я был бы очень признателен.

Также я не полный noob, но если вы можете быть явным в своих объяснениях, это очень ценится.

Например, если вы хотели бы попробовать gmx pdb2gmx команду с 3mlj.pdb из базы данных Protein RCBS, на экране я буду читать:

Fatal error: 
Residue 'CU' not found in residue topology database 

Но в стандартный вывод я только для чтения:

This chain does not appear to contain a recognized chain molecule. 

Для мне, что CU - действительно важная информация, и это всего лишь пример.

я делю свою операционную систему здесь:

$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 14.04.4 LTS 
Release: 14.04 
Codename: trusty 

попытался Также на этом с точно такой же результат:

$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 15.10 
Release: 15.10 
Codename: wily 

Мой Баш скрипт, который я хочу запустить для пакетных файлов:

#$ -S /bin/bash 
for infile in *.pdb 
do 
    gmx pdb2gmx -f $infile -o ${infile/pdb/gro} -water spce -ff oplsaa \ 
     -p ${infile/pdb/top} -i ${infile/pdb/itp} 2>&1 > ${infile/pdb/err} 
done 
+3

'command 2> & 1' не работает для вас? Какие os? добавьте пример вашей командной строки –

+0

Я включил мою версию ubuntu в свое описание и мой сценарий bash. – Csongor

+0

Есть ли выход с сообщением «Неустранимая ошибка» (файл, номер строки и т. Д.)? –

ответ

1

Вы должны сделать переадресацию ввода/вывода в правильном порядке (слева направо).

У вас есть:

gmx pdb2gmx … -i ${infile/pdb/itp} 2>&1 > ${infile/pdb/err} 

Это посылает стандартную ошибку в стандартный вывод, где в настоящее время происходит (терминал), а затем отправляет стандартный вывод (но не стандартная ошибка) в файл.

Понадобится:

gmx pdb2gmx … -i ${infile/pdb/itp} > ${infile/pdb/err} 2>&1 

Это посылает стандартный вывод в файл, а затем отправляет стандартную ошибку в том же месте. Обратите внимание, что в обеих системах все еще есть два отдельных дескриптора файла (1 или стандартный вывод и 2 или стандартная ошибка); единственным вопросом является файл, к которому подключен файловый дескриптор.

Если вы используете данные о трубопроводах, труба настроена до того, как будут обработаны другие перенаправления ввода-вывода, но в противном случае перераспределение ввода/вывода для каждой команды обрабатывается слева направо.

См. Также How to pipe stderr and not stdout, а также Bash I/O Redirections.

+0

Большое спасибо, это фактически решило проблему. Я думал, что должен сначала сказать компьютеру, что хочу, чтобы и то, и другое, и сказали, где это, но теперь я понимаю. (И я думал, что знаю, как его использовать) Еще раз спасибо – Csongor

Смежные вопросы