Answers:
您是在谈论经典历史记录扩展还是Readline处理?cd !$
在接下来的输入线将在上一行的最后一个参数替代,或M-.或M-_将使用的Readline进行粘贴。
cd !$
。“经典的历史记录扩展或Readline处理”我无法完全理解您的意思……
如果您的问题是关于访问命令历史记录的,请尝试使用此命名良好的命令
history
您也可以尝试Ctrl+ r,然后开始键入您想记住您最近键入的命令。
(reverse-i-search)`cd ': cd mydir/data/
点击ESC以选择命令或退出。这至少对我在SuSE上有效;不确定其他发行版。
history | grep ...
!
vi
用于管理命令行的信息。看起来超级酷。 使用vi编辑外壳命令
就像Alt+.
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
<kbd></kbd>
标签来包围键。
<kbd>
如果您使用bash,我建议pushd
和popd
。您可以创建目录堆栈并快速浏览。请参阅以下示例:
PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$
$
演示的时候是很有用的pushd
,等等)
在相关说明中,我建议在bash中使用histverify。把它放在你的〜/ .bashrc中:
shopt -s histverify
这将导致bash在扩展!$或其他历史记录功能后打印出命令,并让您有机会先查看它,然后再次按Enter才能真正运行它。对我而言,偶尔进行额外的按键检查是值得的。想要确保我正在运行cd foo
命令,而不是命令rm -rf foo
...
我也经常使用这种Ctrl-R方法,以及Alt-.(这非常适合您描述的场景)。我会偶尔使用!$。
这些是非常有用的通用技术。
但是要解决您的特定问题:
建立目录并直接将其复制到CD中是一种常见的组合,因此具有将其包装起来的功能很有用。
function mcd {
local newdir='_mcd_command_failed_'
if [ -d "$1" ]; then # Dir exists, mention that
echo "$1 exists..."
newdir="$1"
else
if [ -n "$2" ]; then # We've specified a mode
command mkdir -p -m $2 "$1" && newdir = "$1"
else # Plain old mkdir
command mkdir -p "$1" && newdir="$1"
fi
fi
builtin cd "$newdir" # No matter what, cd into it
}
用法: mcd thisismyfolder
如果您的外壳使用readline(是的情况bash
),您可以执行一些操作,例如一起按ATL+ .?
yank-last-arg(M-或M-_)
将上一个参数插入上一个命令(上一个历史记录条目的最后一个单词)。带有一个参数,其行为与yank-nth-arg完全相同。对yank-last-arg的连续调用将返回历史记录列表,依次插入每行的最后一个参数。
cd this<TAB>