Одним центральным различием является намного больше применимой командной строки в системах Linux (подобные UNIX системы в целом, действительно). Таким образом Введение в Командную строку по flossmanuals.net не могло бы быть худшим запуском.
Это покрывает основной (синтаксис, перемещение), усовершенствованный выход (например, передача по каналу, процессы, структура файловой системы) и усовершенствованные темы (например, полномочия, SSH, устанавливая программное обеспечение), а также различные текстовые редакторы, основы о сценариях..., о, и глоссарии, который мог бы быть полезен для начинающего.
Номер команды Bash предназначен только для отображения.
Во-первых, немного предыстории изbashref
:
The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file (*note Bash History Facilities::), while the command number is the position in the sequence of commands executed during the current shell session.
Копаясь в исходниках, вparse.y
мы видим, что '\#'
разрешается в глобальную статическую переменнуюcurrent_command_number
:
case '#':
n = current_command_number;
/* If we have already incremented current_command_number (PS4,
${var@P}), compensate */
if (orig_string != ps0_prompt && orig_string != ps1_prompt && orig_string != ps2_prompt)
n--;
temp = itos (n);
goto add_string;
, который имеет только одно другое использование :в eval.c
, увеличивается при выполнении команды:
#...
current_command_number++;
executing = 1;
stdin_redir = 0;
execute_command (current_command);
Все, что сохраняется, — это число, а не фактическая команда или даже эквивалентный исторический номер. Таким образом, при выполнении каждой команды bash забывает, какая команда связана с каким номером команды, что делает номер команды непригодным для чего-либо, кроме отображения и ссылки на прокрутку.
Насколько я могу сказать (и это, кажется, подтверждено вашим исследованием), нет способа обратиться к этому магическому номеру, или не через Fc
] или ! N
ярлыки. Те, кто, как, кажется, называют только абсолютному положению в списке истории, а не относительное положение, поскольку эта специфическая оболочка началась (что является Waht \ #
относится к, как вы правильно указали).
Единственный способ, которым я обнаружил, что это приятнее здесь - установить следующее:
export HISTFILESIZE=1001
export HISTSIZE=-1
Таким образом:
1000
, что облегчает идентификацию, где я В сеансе в основном, он повернул мою модифицированную подсказку ( PS1 = «\\! $»
) От:
499$
к:
1000$
... Что делает его небольшим уборщиком на старте. Но это, вероятно, не ответ, который вы искали. :)
(Кстати, я также смотрел на ZSH для решения, и кажется, что он просто не имеет эквивалента \ #
, так что это тоже не помогает. )