Ctrl-p和Ctrl-n在Docker

时间:2017-01-24 04:37:08

标签: linux bash docker

对于我的生活,我似乎无法弄清楚为什么 ctrl - p ctrl - n 不要像我们一直在使用的Docker图像那样工作。 ctrl - p 应该像 up 箭头一样工作但我通常必须按两次才能得到我运行的最后一个命令。它以似乎是随机的方式在历史中循环。

也许有人可以帮助我理解这一点。

docker run -it buildpack-deps:trusty # run a Linux based image

root@74cbcf321fae:/# ls
bin  boot  dev  etc  home  lib  lib64  ...
root@74cbcf321fae:/# touch hello

如果我在此处按 ,则应显示touch命令,然后显示ls。 如果我按 Ctrl - p 但是,第一次没有任何事情发生。当我再次按它时,ls显得神奇。

有人可以帮我理解这些。没有 Ctrl - p Ctrl - n ,我无法生存。

1 个答案:

答案 0 :(得分:21)

它似乎已在文档中删除(或移动),但它过去住在这里:https://docs.docker.com/engine/reference/commandline/attach/

修改:看起来他们在Configuration Files文档中引用了以下内容。

从docker容器中分离的命令序列是 ctrl - p ctrl - q ,这是为什么 ctrl - p 没有按预期工作。当你点击 ctrl - p 时,docker正在等待 ctrl - q ,所以没有任何反应。

您可以使用新--detach-keys参数docker run来覆盖此序列,使其不是 ctrl - p

docker run -ti --detach-keys="ctrl-@" ubuntu:14.04 bash

$# ls
$# <--- Ctrl-P here will display ls now
$# <--- Ctrl-@ here will detach from the running container

如果需要,可以将其添加到~/.docker/config.json文件中以保留此更改:

{
    ...
    "detachKeys": "ctrl-@",
    ...
}

有关详细信息,请访问:https://github.com/docker/docker/pull/15666,因为我无法在文档中找到它。