Сравнение командных оболочек

Поделись знанием:
Перейти к: навигация, поиск

Командная оболочка — это компьютерная программа с интерфейсом командной строки операционной системы.





Общие характеристики

Обычное окружение (или среда) Обычно вызывается Появление Платформо-независимое Default login shell in Default script shell in Лицензия Unicode Перенаправление потоков Встроенная поддержка CIM/WBEM Блокирование неподписанных скриптов доступно как статически связанный, один независимый исполняемый файл
Bourne shell 7th Ed. UNIX sh 1977 Нет 7th Ed. UNIX 7h Ed. UNIX AT&T prop.[1] С SVr4[2] Да (произвольные файловые дескрипторы) Нет Нет Да
POSIX shell[3] POSIX sh 1992[4] Да N/A POSIX N/A Да, если используется настроенной локалью Да (произвольные файловые дескрипторы) Нет Нет N/A
bash (v4.0) POSIX bash, sh 1989[5] Да GNU, Mac OS X 10.3+ GNU,
Haiku, Mac OS X
GPL Да Да (произвольные файловые дескрипторы) Нет Нет Да
csh POSIX csh 1978 Да SunOS ? BSD Нет Да (stdin, out, out+err) Нет Нет Да
tcsh POSIX tcsh, csh 1983[6] Да FreeBSD, ранее Mac OS X ? BSD Да Да (stdin, out, out+err) Нет Нет Да
Scsh POSIX scsh 1994 Да ? ? BSD-style [[{{{1}}}|?]] Да Нет Нет Да
ksh (ksh93t+) POSIX ksh 1983[7][8] Да AIX, HP-UX OpenSolaris Common Public License С SVr4[9] Да (произвольные файловые дескрипторы) Нет Нет Да
pdksh POSIX ksh, sh 1989 [[{{{1}}}|?]] Да OpenBSD[10] OpenBSD[10] Общественное достояние Нет Да (произвольные файловые дескрипторы) Нет Нет Да
zsh POSIX zsh 1990 Да Grml, GoboLinux Grml BSD-подобная Да Да (произвольные файловые дескрипторы) Нет Нет Да
ash POSIX sh 1989 Да Minix, BusyBox based systems FreeBSD, NetBSD, Minix, BusyBox based systems BSD-style Да Да (произвольные файловые дескрипторы Нет Нет Да
Windows
cmd.exe[11]
Win32, Win64 cmd 1993 Нет Windows NT, 2000, XP, Server 2003, Vista/Server 2008, Windows 7/Server 2008 R2, Windows 8/Server 2012, Windows 8.1/Server 2012 R2 Windows NT, 2000, XP, Server 2003, Vista/Server 2008, Windows 7/Server 2008 R2, Windows 8/Server 2012, Windows 8.1/Server 2012 R2 MS-EULA[12] Да Да Нет Нет Да
TCC (ранее 4NT) Win32 ? 1993 Нет ? ? Shareware Да Да (stdin, out, err) Нет Нет Нет
Windows PowerShell .NET powershell 2006 No
(3rd party in dev[13])
Windows Server 2008, 7, Vista, XP[14] Windows Server 2008, 7 MS-EULA[12]
или BSD/GPL (PASH)
Да Да Да Да Нет
COMMAND.COM DOS command 1980 Нет
(3rd party available[15])
DOS, Windows 95, 98, ME DOS, Windows 95, 98, ME MS-EULA[16]
или BSD/GPL (свободные клоны)
Нет Да (только stdin, out, COMn/LPT) Нет Нет Да
4DOS DOS ? 1989 Нет ? ? Лицензия MIT, с ограничениями Нет Да (stdin, out, err) Нет Нет Нет
OS/2
cmd.exe
OS/2 cmd 1987 Нет OS/2 OS/2 IBM-EULA[17] Нет Да (stdin, out, err) Нет Нет [[{{{1}}}|?]]
rc Plan 9, POSIX rc 1989 Да Plan 9, Version 10 Unix Plan 9, Version 10 Unix Lucent Public License Да Да Нет Нет Да
BeanShell Java bsh 2005 Да ? ? LGPL Да Да [[{{{1}}}|?]] Нет Да (bsh.jar)
Python shell Python python, ipython 1991 Да ? ? Python Да Да [[{{{1}}}|?]] Нет Да, на Windows через py2exe
Ruby shell Ruby irb 1995 Да ? ? Ruby, BSD 1.9: Да
1.8: ограниченно
Да [[{{{1}}}|?]] Нет Да с помощью rubyscript2exe.rb
VMS DCL[18] OpenVMS ? 1977 [[{{{1}}}|?]] Нет VMS VMS ? Нет Да (присваивание sys$input, sys$output) Нет Нет Нет
Обычное окружение (или среда) Обычно вызывается Introduced Платформо-независимое Default login shell in Default script shell in Лицензия Unicode Перенаправление потоков Встроенная поддержка CIM/WBEM Блокирование неподписанных скриптов доступно как статически связанный, один независимый исполняемый файл

Интерактивные возможности

Completion Directory stack (pushd/popd) Directory History Window (popup) Implicit Directory Change — If command is dir name changes to it История команд History completion Проверка правописания Default user prompt[19] Custom command prompt Aliases Binary prefix notation Job control Startup scripts
Bourne shell Нет Нет Нет Нет Нет Нет Нет Да (переменная: $PS1) Через функции Нет С SVr4 Да
POSIX shell Нет Нет Нет Нет Да Нет Нет Да (переменная: $PS1) Да Нет Да Да
bash (v4.0) Да (расширяемое) Да Нет Да
(опциональное)
Да Да Нет bash-<version number>$ Да (переменная: $PS1) Да Нет Да Да
csh Да (через клавишу ESC) Да Нет Да
(опциональное)
Да Да Нет % Да (переменная: $prompt Да Нет Да Да
tcsh Да (расширяемое) Да Нет Да
(опциональное)
Да Да экспериментальное > Да (переменная: $prompt Да Нет Да Да
Scsh Нет Нет Нет Нет Нет Нет Нет > Нет Да (macro and procedure definitions) Да Да Да
ksh (ksh93t+) Да (расширяемое) Нет Нет Нет Да Да Нет $ Да (переменная: $PS1, и больше) Да Нет Да Да
pdksh Да Нет Нет Нет Да [[{{{1}}}|?]] Нет $ Да (переменная: $PS1) Да Нет Да Да
zsh Да (расширяемое) Да Нет Да
(опционально)
Да Да Да <hostname>% Да (переменная: $PS1, и больше) Да Нет Да Да
ash Нет Да Нет Нет Да Да Нет $ Да (переменная: $PS1) Да Нет Да Да
Windows
cmd.exe
Да (частично) Да Нет Нет Да (F7) Да (F8) Нет <path>> Да (переменная окружения: %PROMPT%) Да ("macros", через doskey) Нет Нет Да
TCC (ранее 4NT) Да (частично) Да Да Да Да Да Нет [<path>] Да (переменная окружения: %PROMPT) Да [[{{{1}}}|?]] Нет Да (4start)
Windows PowerShell Да (extendable) Да (all location types)[20] Да Нет Да Да (F8) Нет PS <path> Да (функция: prompt) Да Да Да Да
COMMAND.COM Нет Нет Нет Нет Нет[21][22] Нет[21][22] Нет <path or drive name>> Да (переменная окружения: %PROMPT%) Да (используя SET или реестр) Нет Нет Нет[23]
4DOS Да Да Да Да Да Да Нет <path>> Да (переменная окружения: %PROMPT) Да [[{{{1}}}|?]] Нет Да (4start)
OS/2
cmd.exe
Да [[{{{1}}}|?]] Нет Нет Да [[{{{1}}}|?]] Нет [<path>] Да (переменная окружения: %PROMPT%) Нет Нет Нет Нет
rc Да[24] [[{{{1}}}|?]] Нет Нет Да[24] Да[24] Нет term%, ; Да (функция: prompt, или переменная: $prompt) Да (функции) Нет Handled by rio Да
BeanShell Да [[{{{1}}}|?]] Нет Нет Да [[{{{1}}}|?]] Нет bsh % Да (переменная: bsh.prompt, или метод: getBshPrompt()) [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да (.bshrc)
Python shell Да (предоставляется модулем rlcompleter или IPython) Да (предоставляется IPython) Нет Нет Да Да (предоставляется IPython) Нет >>> Да (переменная: sys.ps1) Да (функции) [[{{{1}}}|?]] Да Да ($PYTHONSTARTUP или ipythonrc)
Ruby shell Да Да (передать блок методу Dir.chdir()) Нет Нет Да Да (with UtilityBelt gem) Нет irb(main):001:0> Да Да [[{{{1}}}|?]] Да Да (.irbrc)
VMS DCL Нет Нет Нет Нет Да Нет Нет $ Да (команда SET PROMPT) Да Да Да Да (login.com)
Completion Directory stack (pushd/popd) Directory History Window (popup) Implicit Directory Change — If command is dir name changes to it История команд History completion Проверка правописания Default user prompt[19] Custom command prompt Aliases Binary prefix notation Job control Startup scripts

Программные возможности

Функции Обработка исключений Поиск и замена по переменным Параллельное присваивание Variadic functions Аргументы по умолчанию Именованные параметры Лямбда-функции функция eval Генератор псевдослучайных чисел Байт-код
Bourne shell Да с SVr2 Да (via trap) Нет Нет С SVr2 Нет Нет Нет Да Нет Нет
POSIX shell Да Да (via trap) Нет Нет Да Нет Нет Нет Да Нет Нет
bash (v4.0) Да Да (via trap) Да (через ${//} синтаксис) Нет Да Да Нет Нет Да Да ($RANDOM) Нет
csh Нет Нет Нет Нет Нет Нет Нет Нет Да Нет Нет
tcsh Нет Нет Да (через ${:s//} синтаксис Нет Нет Нет Нет Нет Да Нет Нет
Scsh Да [[{{{1}}}|?]] Да (через строковые функции и регулярные выражения) Нет Да Нет Нет Да Да Да (random-integer, random-real) Да (компилятор представляет собой Scheme48 виртуальную машину, "scshvm")
ksh (ksh93t+) Да Да (via trap) Да (через ${//} синтаксис и встроенные команды) [[{{{1}}}|?]] Да Да Да (для определяемых пользователем "типов") Нет Да Да ($RANDOM) Да (компилятор называется "shcomp")
pdksh Да Да (via trap) Нет [[{{{1}}}|?]] Да Да Нет Нет Да Да ($RANDOM) Нет
zsh Да Да Да (через ${:s//} и ${//} синтаксис) [[{{{1}}}|?]] Да Да Нет Нет Да Да ($RANDOM) Да (встроенная команда "zcompile")
ash Да Да (via trap) Нет Нет Да Да Нет Нет Да Нет Нет
Windows
cmd.exe
Да (через "call :label") Нет Да (via set %varname:expression syntax) Нет Нет Нет Нет Нет Нет Да (%random%) Нет
TCC (ранее 4NT) Да Нет Да (через функцию %@replace[ ]) Нет Нет Нет Нет Нет Да Да (функция %@random[ ]) Нет
Windows PowerShell Да Да Да (-replace operator) Да Да Да Да Да Да Да Да, автоматически
COMMAND.COM Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
4DOS Да Нет Да (через функцию %@replace[ ]) Нет [[{{{1}}}|?]] Нет [[{{{1}}}|?]] Нет Да Да (функция %@random[ ]) Нет
OS/2
cmd.exe
Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
rc Да Да Нет [[{{{1}}}|?]] Да Да [[{{{1}}}|?]] Нет Да Нет Нет
BeanShell Да Да [[{{{1}}}|?]] [[{{{1}}}|?]] Нет Нет Нет Нет Да Да Да
Python shell Да Да Да (через строковые методы и регулярные выражения) Да Да Да Да Да Да Да Да (стандартный CPython, IronPython или Jython)
Ruby shell Да Да Да (через строковые функции и регулярные выражения) Да Да Да Да Да Да Да Да (NetRuby, JRuby, version 1.9/YARV)
VMS DCL Да Да Нет Нет Нет Нет Нет Нет Нет Нет Нет
Функции Обработка исключений Поиск и замена по переменным Параллельное присваивание Variadic functions Аргументы по умолчаниюs Именованные параметры Лямбда-функции функция eval Генератор псевдослучайных чисел Байт-код

Поиск соответствий строк и имён файлов

Pattern Matching (regular expressions built-in) Pattern Matching (globbing) Globbing qualifiers (создание имён файлов по их атрибутам) Recursive globbing (создание файлов с любого уровня подкаталогов)
Bourne shell Нет Да (*, ?, [...]) Нет Нет
POSIX shell Нет Да (*, ?, [...]) Нет Нет
bash (v4.0) Да Да (*, ?, [...], {...}) Нет Да (**/…)
csh Нет Да Нет Нет
tcsh Да Да Нет Нет
Scsh Да Да Нет Нет
ksh (ksh93t+) Да Да (*, ?, [...]) Нет Да (with set -G, no following of symlinks)
pdksh Нет Да Нет Нет
zsh Да Да (*, ?, [...],
ext'd globbing[25])
Да Да (**/… or ***/… для следования по символическим ссылкам)
ash Нет Да Нет Нет
Windows
cmd.exe
Да (через команду findstr /r) Да (*, ?) [[{{{1}}}|?]] Нет
TCC (ранее 4NT) Ограниченная поддержка Да (*, ?, [...]) [[{{{1}}}|?]] Да (через FOR /R)
Windows PowerShell Да (полная поддержка регулярных выражений)[26] Да (*, ?, [...]) [[{{{1}}}|?]] [[{{{1}}}|?]]
COMMAND.COM Нет Да (*, ?) [[{{{1}}}|?]] Нет
4DOS Нет Да (*, ?, [...]) [[{{{1}}}|?]] Да (через FOR /R)
OS/2
cmd.exe
Нет Да (*, ?) [[{{{1}}}|?]] [[{{{1}}}|?]]
rc Нет Да Нет Нет
BeanShell Да [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]]
Python shell Да Да Да (через модуль glob) Да (через модуль glob)
Ruby shell Да Да (через метод Dir.glob()) [[{{{1}}}|?]] Да (через метод Dir.glob())
VMS DCL Нет Да Нет Да (через [SUBDIR…])

Межпроцессное взаимодействие

Pipes Подстановка команд Подстановка процессов Подоболочки TCP/UDP соединения в виде потоков
Bourne shell байты
concurrent
Да Нет Да Нет
POSIX shell байты
concurrent
Да Нет Да Нет
bash (v4.0) байты
concurrent
Да Да (если система поддерживает /dev/fd/<n> или именованные каналы Да Да (только клиент)
csh байты
concurrent
Да Нет Да Нет
tcsh байты
concurrent
Да Нет Да Нет
Scsh текст [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да
ksh (ksh93t+) байты
(может содержать сериализованные объекты, если используется print -C)
concurrent
Да ($(...) and ${<space>...;}) Да (если система поддерживает /dev/fd/<n> Да Да (и поддержка SCTP, client only)
pdksh байты
concurrent
Да Нет Да Нет
zsh байты
concurrent
Да Да Да Да (клиент и сервер, но только TCP)
ash байты
concurrent
Да Нет Да Нет
Windows
cmd.exe
текст
concurrent
Да (via FOR /F command) Нет Да (Backtick: ` in for /f usebackq) Нет
TCC (ранее 4NT) текст Да (через команду FOR /F) [[{{{1}}}|?]] Ограниченно, через %@execstr[ ] и %@exec[ ] Нет
Windows PowerShell объекты
concurrent
Да Нет Да Да
COMMAND.COM текст
sequential
временные файлы
Нет Нет Нет Нет
4DOS текст
sequential
временные файлы
Да (через команду FOR /F) [[{{{1}}}|?]] Ограниченно, через %@execstr[ ] и %@exec[ ] Нет
OS/2
cmd.exe
текст
concurrent
Нет Нет [[{{{1}}}|?]] Нет
rc текст
concurrent
Да Да (через: <{cmd} если система поддерживает /dev/fd/<n>) Да Нет
BeanShell не поддерживается [[{{{1}}}|?]] [[{{{1}}}|?]] [[{{{1}}}|?]] Да
Python shell объекты (при использовании IPython+IPipe) Да Да (через модуль subprocess) Да Да
Ruby shell не поддерживается Да Да Да (Backtick: `) Да
VMS DCL текст
(через команду PIPE)
Нет Нет Да (spawn) Да (server TCP only)
Pipes Подстановка команд Подстановка процессов Подоболочки TCP/UDP соединения в виде потоков

Напишите отзыв о статье "Сравнение командных оболочек"

Примечания

  1. В настоящее время доступно в соответствии под [minnie.tuhs.org/Archive/Caldera-license.pdf BSD-подобной лицензией] через Unix Heritage Society и другие.
  2. SVr4 Bourne Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
  3. IEEE. 1003.1™ Standard for Information Technology — Portable Operating System Interface (POSIX®): Shell and Utilities, Issue 6.
  4. As part of IEEE Std.1003.2-1992 (POSIX.2); integrated into IEEE Std.1003.1 with the 2001 revision.
  5. Brian Fox (forwarded by Leonard H. Tower Jr.) (Jun 7 1989). "Bash is in beta release!". gnu.announce. [groups.google.com/group/gnu.announce/msg/a509f48ffb298c35?hl=en (Google Groups)]. Retrieved on Oct 28 2010.
  6. Ken Greer (Oct 3 1983). "C shell with command and filename recognition/completion". net.sources. [groups.google.com/group/net.sources/msg/7073bf41cc5da330?hl=en (Google Groups)]. Retrieved on Dec 29 2010.
  7. Ron Gomes (Jun 9 1983). "Toronto USENIX Conference Schedule (tentative)". net.usenix. [groups.google.com/group/net.usenix/msg/fa6e1f7de3b63bba?hl=en (Google Groups)]. Retrieved on Dec 29 2010.
  8. Guy Harris (Oct 10 1983). "csh question". net.flame. [groups.google.com/group/net.flame/msg/4f868085b65af530?hl=en (Google Groups)]. Retrieved on Dec 29 2010.
  9. SVr4 Korn Shell включает в себя поддержку многобайтовых символов, позже в libc была добавлена поддержка UNICODE в качестве конкретной многобайтовой кодировки
  10. 1 2 [www.openbsd.org/faq/faq10.html#rootshell Default shell in OpenBSD] is ksh (pdksh).
  11. Command extensions enabled, or «cmd /x».
  12. 1 2 Windows component — covered by a valid license or Microsoft Windows
  13. PASH, a third-party remake, is in development and [pash.sourceforge.net/ almost half-finished]. Activity seems to have [igorshare.wordpress.com/2008/04/06/pash-cross-platform-powershell-is-out-in-the-wild-announcement/#comment-456 stagnated] [launchpad.net/pash/+announcement/1912 early 2009].
  14. Windows PowerShell is installed with Windows 7, however, it is an optional download for users of Windows Vista or Windows XP.
  15. Доступны сторонние повторные реализации, такие как DosBox, Wine и FreeDOS.
  16. MS-DOS and Windows component — covered by a valid license for MS-DOS or Microsoft Windows
  17. OS/2 component — covered by a valid license for OS/2
  18. [h71000.www7.hp.com/doc/732final/9996/9996pro_contents.html HP OpenVMS DCL Dictionary]. Проверено 23 марта 2009. [www.webcitation.org/6Ak0OGUyG Архивировано из первоисточника 17 сентября 2012].
  19. 1 2 Many shells in *nix environments change the root user's prompt to '#'.
  20. PowerShell exposes more than just the file system as a navigable system: Windows Registry, functions, aliases, variables, certificate store, credential store etc. The location types are extensible through a provider architecture. Common commands will work with any compliant provider
  21. 1 2 Добавлено резидентными программами, такими как DOSKey
  22. 1 2 Доступно в DR-DOS через команду «history» в config.sys; см. [www.drdos.com/dosdoc/usergeng/09ugch9.htm#1309 эту ссылку]
  23. Ограниченная поддержка через AUTOEXEC.BAT.
  24. 1 2 3 Handled by rio, GNU readline, editline или vrl
  25. Zsh offers an almost overwhelming variety of [zsh.sourceforge.net/Guide/zshguide05.html#l135 globbing options].
  26. PowerShell leverages the full .NET regular expression engine which features named captures, zero-width lookahead/-behind, greedy/non-greedy, character classes, level counting etc.

Литература

  • Нейл Ботвик [www.linuxformat.ru/download/93.pdf Сравнение: командные оболочки] (рус.) // Linux Format. — СПб., 2007. — Июнь (№ 6 (93)). — С. [wiki.linuxformat.ru/wiki/LXF93:Сравнение 18-23].

Отрывок, характеризующий Сравнение командных оболочек

Утром, когда камердинер, внося кофе, вошел в кабинет, Пьер лежал на отоманке и с раскрытой книгой в руке спал.
Он очнулся и долго испуганно оглядывался не в силах понять, где он находится.
– Графиня приказала спросить, дома ли ваше сиятельство? – спросил камердинер.
Но не успел еще Пьер решиться на ответ, который он сделает, как сама графиня в белом, атласном халате, шитом серебром, и в простых волосах (две огромные косы en diademe [в виде диадемы] огибали два раза ее прелестную голову) вошла в комнату спокойно и величественно; только на мраморном несколько выпуклом лбе ее была морщинка гнева. Она с своим всёвыдерживающим спокойствием не стала говорить при камердинере. Она знала о дуэли и пришла говорить о ней. Она дождалась, пока камердинер уставил кофей и вышел. Пьер робко чрез очки посмотрел на нее, и, как заяц, окруженный собаками, прижимая уши, продолжает лежать в виду своих врагов, так и он попробовал продолжать читать: но чувствовал, что это бессмысленно и невозможно и опять робко взглянул на нее. Она не села, и с презрительной улыбкой смотрела на него, ожидая пока выйдет камердинер.
– Это еще что? Что вы наделали, я вас спрашиваю, – сказала она строго.
– Я? что я? – сказал Пьер.
– Вот храбрец отыскался! Ну, отвечайте, что это за дуэль? Что вы хотели этим доказать! Что? Я вас спрашиваю. – Пьер тяжело повернулся на диване, открыл рот, но не мог ответить.
– Коли вы не отвечаете, то я вам скажу… – продолжала Элен. – Вы верите всему, что вам скажут, вам сказали… – Элен засмеялась, – что Долохов мой любовник, – сказала она по французски, с своей грубой точностью речи, выговаривая слово «любовник», как и всякое другое слово, – и вы поверили! Но что же вы этим доказали? Что вы доказали этой дуэлью! То, что вы дурак, que vous etes un sot, [что вы дурак,] так это все знали! К чему это поведет? К тому, чтобы я сделалась посмешищем всей Москвы; к тому, чтобы всякий сказал, что вы в пьяном виде, не помня себя, вызвали на дуэль человека, которого вы без основания ревнуете, – Элен всё более и более возвышала голос и одушевлялась, – который лучше вас во всех отношениях…
– Гм… гм… – мычал Пьер, морщась, не глядя на нее и не шевелясь ни одним членом.
– И почему вы могли поверить, что он мой любовник?… Почему? Потому что я люблю его общество? Ежели бы вы были умнее и приятнее, то я бы предпочитала ваше.
– Не говорите со мной… умоляю, – хрипло прошептал Пьер.
– Отчего мне не говорить! Я могу говорить и смело скажу, что редкая та жена, которая с таким мужем, как вы, не взяла бы себе любовников (des аmants), а я этого не сделала, – сказала она. Пьер хотел что то сказать, взглянул на нее странными глазами, которых выражения она не поняла, и опять лег. Он физически страдал в эту минуту: грудь его стесняло, и он не мог дышать. Он знал, что ему надо что то сделать, чтобы прекратить это страдание, но то, что он хотел сделать, было слишком страшно.
– Нам лучше расстаться, – проговорил он прерывисто.
– Расстаться, извольте, только ежели вы дадите мне состояние, – сказала Элен… Расстаться, вот чем испугали!
Пьер вскочил с дивана и шатаясь бросился к ней.
– Я тебя убью! – закричал он, и схватив со стола мраморную доску, с неизвестной еще ему силой, сделал шаг к ней и замахнулся на нее.
Лицо Элен сделалось страшно: она взвизгнула и отскочила от него. Порода отца сказалась в нем. Пьер почувствовал увлечение и прелесть бешенства. Он бросил доску, разбил ее и, с раскрытыми руками подступая к Элен, закричал: «Вон!!» таким страшным голосом, что во всем доме с ужасом услыхали этот крик. Бог знает, что бы сделал Пьер в эту минуту, ежели бы
Элен не выбежала из комнаты.

Через неделю Пьер выдал жене доверенность на управление всеми великорусскими имениями, что составляло большую половину его состояния, и один уехал в Петербург.


Прошло два месяца после получения известий в Лысых Горах об Аустерлицком сражении и о погибели князя Андрея, и несмотря на все письма через посольство и на все розыски, тело его не было найдено, и его не было в числе пленных. Хуже всего для его родных было то, что оставалась всё таки надежда на то, что он был поднят жителями на поле сражения, и может быть лежал выздоравливающий или умирающий где нибудь один, среди чужих, и не в силах дать о себе вести. В газетах, из которых впервые узнал старый князь об Аустерлицком поражении, было написано, как и всегда, весьма кратко и неопределенно, о том, что русские после блестящих баталий должны были отретироваться и ретираду произвели в совершенном порядке. Старый князь понял из этого официального известия, что наши были разбиты. Через неделю после газеты, принесшей известие об Аустерлицкой битве, пришло письмо Кутузова, который извещал князя об участи, постигшей его сына.
«Ваш сын, в моих глазах, писал Кутузов, с знаменем в руках, впереди полка, пал героем, достойным своего отца и своего отечества. К общему сожалению моему и всей армии, до сих пор неизвестно – жив ли он, или нет. Себя и вас надеждой льщу, что сын ваш жив, ибо в противном случае в числе найденных на поле сражения офицеров, о коих список мне подан через парламентеров, и он бы поименован был».
Получив это известие поздно вечером, когда он был один в. своем кабинете, старый князь, как и обыкновенно, на другой день пошел на свою утреннюю прогулку; но был молчалив с приказчиком, садовником и архитектором и, хотя и был гневен на вид, ничего никому не сказал.
Когда, в обычное время, княжна Марья вошла к нему, он стоял за станком и точил, но, как обыкновенно, не оглянулся на нее.
– А! Княжна Марья! – вдруг сказал он неестественно и бросил стамеску. (Колесо еще вертелось от размаха. Княжна Марья долго помнила этот замирающий скрип колеса, который слился для нее с тем,что последовало.)
Княжна Марья подвинулась к нему, увидала его лицо, и что то вдруг опустилось в ней. Глаза ее перестали видеть ясно. Она по лицу отца, не грустному, не убитому, но злому и неестественно над собой работающему лицу, увидала, что вот, вот над ней повисло и задавит ее страшное несчастие, худшее в жизни, несчастие, еще не испытанное ею, несчастие непоправимое, непостижимое, смерть того, кого любишь.
– Mon pere! Andre? [Отец! Андрей?] – Сказала неграциозная, неловкая княжна с такой невыразимой прелестью печали и самозабвения, что отец не выдержал ее взгляда, и всхлипнув отвернулся.
– Получил известие. В числе пленных нет, в числе убитых нет. Кутузов пишет, – крикнул он пронзительно, как будто желая прогнать княжну этим криком, – убит!
Княжна не упала, с ней не сделалось дурноты. Она была уже бледна, но когда она услыхала эти слова, лицо ее изменилось, и что то просияло в ее лучистых, прекрасных глазах. Как будто радость, высшая радость, независимая от печалей и радостей этого мира, разлилась сверх той сильной печали, которая была в ней. Она забыла весь страх к отцу, подошла к нему, взяла его за руку, потянула к себе и обняла за сухую, жилистую шею.
– Mon pere, – сказала она. – Не отвертывайтесь от меня, будемте плакать вместе.
– Мерзавцы, подлецы! – закричал старик, отстраняя от нее лицо. – Губить армию, губить людей! За что? Поди, поди, скажи Лизе. – Княжна бессильно опустилась в кресло подле отца и заплакала. Она видела теперь брата в ту минуту, как он прощался с ней и с Лизой, с своим нежным и вместе высокомерным видом. Она видела его в ту минуту, как он нежно и насмешливо надевал образок на себя. «Верил ли он? Раскаялся ли он в своем неверии? Там ли он теперь? Там ли, в обители вечного спокойствия и блаженства?» думала она.
– Mon pere, [Отец,] скажите мне, как это было? – спросила она сквозь слезы.
– Иди, иди, убит в сражении, в котором повели убивать русских лучших людей и русскую славу. Идите, княжна Марья. Иди и скажи Лизе. Я приду.
Когда княжна Марья вернулась от отца, маленькая княгиня сидела за работой, и с тем особенным выражением внутреннего и счастливо спокойного взгляда, свойственного только беременным женщинам, посмотрела на княжну Марью. Видно было, что глаза ее не видали княжну Марью, а смотрели вглубь – в себя – во что то счастливое и таинственное, совершающееся в ней.
– Marie, – сказала она, отстраняясь от пялец и переваливаясь назад, – дай сюда твою руку. – Она взяла руку княжны и наложила ее себе на живот.
Глаза ее улыбались ожидая, губка с усиками поднялась, и детски счастливо осталась поднятой.
Княжна Марья стала на колени перед ней, и спрятала лицо в складках платья невестки.
– Вот, вот – слышишь? Мне так странно. И знаешь, Мари, я очень буду любить его, – сказала Лиза, блестящими, счастливыми глазами глядя на золовку. Княжна Марья не могла поднять головы: она плакала.
– Что с тобой, Маша?
– Ничего… так мне грустно стало… грустно об Андрее, – сказала она, отирая слезы о колени невестки. Несколько раз, в продолжение утра, княжна Марья начинала приготавливать невестку, и всякий раз начинала плакать. Слезы эти, которых причину не понимала маленькая княгиня, встревожили ее, как ни мало она была наблюдательна. Она ничего не говорила, но беспокойно оглядывалась, отыскивая чего то. Перед обедом в ее комнату вошел старый князь, которого она всегда боялась, теперь с особенно неспокойным, злым лицом и, ни слова не сказав, вышел. Она посмотрела на княжну Марью, потом задумалась с тем выражением глаз устремленного внутрь себя внимания, которое бывает у беременных женщин, и вдруг заплакала.
– Получили от Андрея что нибудь? – сказала она.
– Нет, ты знаешь, что еще не могло притти известие, но mon реrе беспокоится, и мне страшно.
– Так ничего?
– Ничего, – сказала княжна Марья, лучистыми глазами твердо глядя на невестку. Она решилась не говорить ей и уговорила отца скрыть получение страшного известия от невестки до ее разрешения, которое должно было быть на днях. Княжна Марья и старый князь, каждый по своему, носили и скрывали свое горе. Старый князь не хотел надеяться: он решил, что князь Андрей убит, и не смотря на то, что он послал чиновника в Австрию розыскивать след сына, он заказал ему в Москве памятник, который намерен был поставить в своем саду, и всем говорил, что сын его убит. Он старался не изменяя вести прежний образ жизни, но силы изменяли ему: он меньше ходил, меньше ел, меньше спал, и с каждым днем делался слабее. Княжна Марья надеялась. Она молилась за брата, как за живого и каждую минуту ждала известия о его возвращении.


– Ma bonne amie, [Мой добрый друг,] – сказала маленькая княгиня утром 19 го марта после завтрака, и губка ее с усиками поднялась по старой привычке; но как и во всех не только улыбках, но звуках речей, даже походках в этом доме со дня получения страшного известия была печаль, то и теперь улыбка маленькой княгини, поддавшейся общему настроению, хотя и не знавшей его причины, – была такая, что она еще более напоминала об общей печали.
– Ma bonne amie, je crains que le fruschtique (comme dit Фока – повар) de ce matin ne m'aie pas fait du mal. [Дружочек, боюсь, чтоб от нынешнего фриштика (как называет его повар Фока) мне не было дурно.]
– А что с тобой, моя душа? Ты бледна. Ах, ты очень бледна, – испуганно сказала княжна Марья, своими тяжелыми, мягкими шагами подбегая к невестке.
– Ваше сиятельство, не послать ли за Марьей Богдановной? – сказала одна из бывших тут горничных. (Марья Богдановна была акушерка из уездного города, жившая в Лысых Горах уже другую неделю.)
– И в самом деле, – подхватила княжна Марья, – может быть, точно. Я пойду. Courage, mon ange! [Не бойся, мой ангел.] Она поцеловала Лизу и хотела выйти из комнаты.
– Ах, нет, нет! – И кроме бледности, на лице маленькой княгини выразился детский страх неотвратимого физического страдания.
– Non, c'est l'estomac… dites que c'est l'estomac, dites, Marie, dites…, [Нет это желудок… скажи, Маша, что это желудок…] – и княгиня заплакала детски страдальчески, капризно и даже несколько притворно, ломая свои маленькие ручки. Княжна выбежала из комнаты за Марьей Богдановной.
– Mon Dieu! Mon Dieu! [Боже мой! Боже мой!] Oh! – слышала она сзади себя.
Потирая полные, небольшие, белые руки, ей навстречу, с значительно спокойным лицом, уже шла акушерка.
– Марья Богдановна! Кажется началось, – сказала княжна Марья, испуганно раскрытыми глазами глядя на бабушку.
– Ну и слава Богу, княжна, – не прибавляя шага, сказала Марья Богдановна. – Вам девицам про это знать не следует.
– Но как же из Москвы доктор еще не приехал? – сказала княжна. (По желанию Лизы и князя Андрея к сроку было послано в Москву за акушером, и его ждали каждую минуту.)
– Ничего, княжна, не беспокойтесь, – сказала Марья Богдановна, – и без доктора всё хорошо будет.
Через пять минут княжна из своей комнаты услыхала, что несут что то тяжелое. Она выглянула – официанты несли для чего то в спальню кожаный диван, стоявший в кабинете князя Андрея. На лицах несших людей было что то торжественное и тихое.
Княжна Марья сидела одна в своей комнате, прислушиваясь к звукам дома, изредка отворяя дверь, когда проходили мимо, и приглядываясь к тому, что происходило в коридоре. Несколько женщин тихими шагами проходили туда и оттуда, оглядывались на княжну и отворачивались от нее. Она не смела спрашивать, затворяла дверь, возвращалась к себе, и то садилась в свое кресло, то бралась за молитвенник, то становилась на колена пред киотом. К несчастию и удивлению своему, она чувствовала, что молитва не утишала ее волнения. Вдруг дверь ее комнаты тихо отворилась и на пороге ее показалась повязанная платком ее старая няня Прасковья Савишна, почти никогда, вследствие запрещения князя,не входившая к ней в комнату.
– С тобой, Машенька, пришла посидеть, – сказала няня, – да вот княжовы свечи венчальные перед угодником зажечь принесла, мой ангел, – сказала она вздохнув.
– Ах как я рада, няня.
– Бог милостив, голубка. – Няня зажгла перед киотом обвитые золотом свечи и с чулком села у двери. Княжна Марья взяла книгу и стала читать. Только когда слышались шаги или голоса, княжна испуганно, вопросительно, а няня успокоительно смотрели друг на друга. Во всех концах дома было разлито и владело всеми то же чувство, которое испытывала княжна Марья, сидя в своей комнате. По поверью, что чем меньше людей знает о страданиях родильницы, тем меньше она страдает, все старались притвориться незнающими; никто не говорил об этом, но во всех людях, кроме обычной степенности и почтительности хороших манер, царствовавших в доме князя, видна была одна какая то общая забота, смягченность сердца и сознание чего то великого, непостижимого, совершающегося в эту минуту.
В большой девичьей не слышно было смеха. В официантской все люди сидели и молчали, на готове чего то. На дворне жгли лучины и свечи и не спали. Старый князь, ступая на пятку, ходил по кабинету и послал Тихона к Марье Богдановне спросить: что? – Только скажи: князь приказал спросить что? и приди скажи, что она скажет.
– Доложи князю, что роды начались, – сказала Марья Богдановна, значительно посмотрев на посланного. Тихон пошел и доложил князю.
– Хорошо, – сказал князь, затворяя за собою дверь, и Тихон не слыхал более ни малейшего звука в кабинете. Немного погодя, Тихон вошел в кабинет, как будто для того, чтобы поправить свечи. Увидав, что князь лежал на диване, Тихон посмотрел на князя, на его расстроенное лицо, покачал головой, молча приблизился к нему и, поцеловав его в плечо, вышел, не поправив свечей и не сказав, зачем он приходил. Таинство торжественнейшее в мире продолжало совершаться. Прошел вечер, наступила ночь. И чувство ожидания и смягчения сердечного перед непостижимым не падало, а возвышалось. Никто не спал.

Была одна из тех мартовских ночей, когда зима как будто хочет взять свое и высыпает с отчаянной злобой свои последние снега и бураны. Навстречу немца доктора из Москвы, которого ждали каждую минуту и за которым была выслана подстава на большую дорогу, к повороту на проселок, были высланы верховые с фонарями, чтобы проводить его по ухабам и зажорам.
Княжна Марья уже давно оставила книгу: она сидела молча, устремив лучистые глаза на сморщенное, до малейших подробностей знакомое, лицо няни: на прядку седых волос, выбившуюся из под платка, на висящий мешочек кожи под подбородком.
Няня Савишна, с чулком в руках, тихим голосом рассказывала, сама не слыша и не понимая своих слов, сотни раз рассказанное о том, как покойница княгиня в Кишиневе рожала княжну Марью, с крестьянской бабой молдаванкой, вместо бабушки.
– Бог помилует, никогда дохтура не нужны, – говорила она. Вдруг порыв ветра налег на одну из выставленных рам комнаты (по воле князя всегда с жаворонками выставлялось по одной раме в каждой комнате) и, отбив плохо задвинутую задвижку, затрепал штофной гардиной, и пахнув холодом, снегом, задул свечу. Княжна Марья вздрогнула; няня, положив чулок, подошла к окну и высунувшись стала ловить откинутую раму. Холодный ветер трепал концами ее платка и седыми, выбившимися прядями волос.
– Княжна, матушка, едут по прешпекту кто то! – сказала она, держа раму и не затворяя ее. – С фонарями, должно, дохтур…