Как я могу перенаправить и добавить как stdout, так и stderr в файл с помощью Bash?

, если ваша установка

myApp
  |
  |__ public
  |     |
  |     |__  stylesheets
  |     |     |
  |     |     |__ style.css
  |     |
  |     |___ img
  |           |
  |           |__ logo.png
  |
  |__ app.js

, затем введите app.js

app.use('/static', express.static('public'));

и обратитесь к вашему style.css: (в каком-то файле .pug):

link(rel='stylesheet', href='/static/stylesheets/style.css')
1384
задан Jahid 17 December 2015 в 16:27
поделиться

4 ответа

cmd >>file.txt 2>&1

Bash выполняет перенаправления слева направо следующим образом:

  1. >> file.txt : Открыть файл .txt в режиме добавления и перенаправить туда stdout .
  2. 2> & 1 : перенаправить stderr на "где stdout в настоящее время идет ". В данном случае это файл, открытый в режиме добавления. Другими словами, & 1 повторно использует дескриптор файла, который в настоящее время использует stdout .
1874
ответ дан 22 November 2019 в 20:19
поделиться

Я удивлен, что за почти десять лет никто еще не опубликовал этот подход:

Если вы используете более старые версии bash, где &>> недоступно, вы также можете сделать:

(cmd 2>&1) >> file.txt

Это порождает подоболочку, поэтому она менее эффективна, чем традиционный подход cmd >> file.txt 2>&1, но этот подход кажется мне более естественным и понятным:

  1. Перенаправить stderr в stdout.
  2. Перенаправьте новый стандартный вывод, добавив в него файл.

Кроме того, скобки убирают любую двусмысленность порядка, особенно если вы хотите вместо этого передать stdout и stderr другой команде.

5
ответ дан jamesdlin 17 December 2015 в 16:27
поделиться

В Bash вы также можете явно указать свои перенаправления в разные файлы:

cmd >log.out 2>log_error.out

Добавление будет:

cmd >>log.out 2>>log_error.out
83
ответ дан Aaron R. 17 December 2015 в 16:27
поделиться

полу-псевдокод:

public Font scaleFont(String text, Rectangle rect, Graphics g, Font pFont) {
    float fontSize = 20.0f;
    Font font = pFont;

    font = g.getFont().deriveFont(fontSize);
    int width = g.getFontMetrics(font).stringWidth(text);
    fontSize = (rect.width / width ) * fontSize;
    return g.getFont().deriveFont(fontSize);
}

я не уверен, почему вы передаете pFont, поскольку он не используется ...

- это просто более короткий синтаксис - он не вводит никаких новых функций или чего-либо подобного.

Синтаксис (помимо другого синтаксиса перенаправления) описан здесь: http://bash-hackers.org/wiki/ doku.php / syntax / redirection # appending_redirected_output_and_error_output

346
ответ дан 22 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: