класть stdout для первого удара к stderr?

Причина, почему Вы видели версию удара вместо имени пользователя после файлов профиля, была удалена, был то, что командная строка (часто содержащий имя пользователя) установлена в этих файлах. Вы видели бы точно то же после вызова bash --norc.

Интересно, никакая командная строка не установлена в Вашем/etc/profile, который часто имеет место в современных системах; обычно, у Вас есть что-то как

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
        . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi
18
30.04.2014, 12:23
3 ответа

tee может дублировать текущую консоль, используя tee /dev/tty

git status --short | cut -b4- | tee /dev/tty | xargs gvim --remote

Альтернативно, вы можете использовать /dev/stdoutили /dev/stderr, но они могут быть перенаправлены, если ваша команда находится внутри скрипта. Обратите внимание, что /dev/tty всегда будет консолью (и может не существовать в неинтерактивной оболочке). Это неверно, читайте комментарии.

14
27.01.2020, 19:46

Более общее решение, чем / dev / tty :

start cmd:> echo foo | tee /dev/stderr 
foo
foo
4
27.01.2020, 19:46

Вы можете использовать команду tee , просто загрузив ее с помощью файла STDERR , например:

tee /dev/stderr
tee /proc/self/fd/2

, так что в этом случае ваш псевдоним может быть:

git status --short | \
    cut -b4- | tee /dev/stderr | \
    xargs gvim --remote
3
27.01.2020, 19:46

Теги

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