Или, если все, что Вы хотите сделать, выбирают, какой исполняемый файл исчерпать, можно сделать это:
executable=$(type -P tmux)
executable=${executable:-xterm} # For example
exec $executable
Расширение var=${var:-string}
присваивает значению "строку" var
если и только если ничему не присвоили var
прежде.
Вам просто нужно прочитать его слева направо:
> file
--> перенаправить все из stdout
в file
.(Вы можете себе представить, что у Вас есть ссылка, точка-точка из stdout
на
file
)2>&1
--> перенаправить все вещи из stderr
в stdout
, который теперь указан на file
.Итак, вывод:
stderr --> stdout --> file
Здесь можно увидеть хорошую ссылку .
. Что ты упускаешь? Кажется, вы все поняли. Файл > файл
отправляет вывод в файл
, а 2>&1
отправляет стандартную ошибку в стандартный вывод. В результате и stderr, и stdout отправляются в файл .
Для иллюстрации рассмотрим этот простой Perl скрипт:
#!/usr/bin/env perl
print STDERR "Standard Error\n";
print STDOUT "Standard Output\n";
Теперь посмотрим на его вывод:
$ foo.pl ## Both error and out are printed to the terminal
Standard Error
Standard Output
$ foo.pl 2>file ## Error is redirected to file, only output is shown
Standard Output
$ foo.pl 1>file ## Output is redirected to file, only error is shown
Standard Error
$ foo.pl 1>file 2>&1 ## Everything is sent to file, nothing is shown.