2017-07-27 17 views
0

私はそれが愚かな質問かもしれないことを知っています... ドッカーファイルからドッカーをしたいです。問題は、docker run -it docker_name/bin/bashを使用してドッカーに入っているときにコマンドライン補完ができないことです。 は、だから私はこのhttps://docs.docker.com/machine/completion/(まだ動作していない)を行なったし、事は、私がドッキングウィンドウファイルからいくつかの行を交換することはできませんよということである。このhttps://linuxconfig.org/tab-does-not-automatically-complete-docker-commands-solutionドッカーでsedを使用してパスを置き換えます

をしたいです。私はこのようなコマンドsedを使用したかった:RUN sed -i 's+#if ! shopt -oq posix; then+if ! shopt -oq posix; then+g' /etc/bash.bashrcしかし、パスを含む行を置き換えることはできません(私はエラーsed:-e式#1、char 75:unterminated `s 'コマンドを得ています)。

私はまたRUN sed -i 's+\# if [ -f \/usr\/share\/bash-compl+ if [ -f \/usr\/share\/bash-compl+g' /etc/bash.bashrcを試しましたが、同じ結果が得られました。

dockerfileでsedが使用される良い方法、または将来のdockerのファイルをdockerfileから更新するにはどうすればよいですか?

------------- EDIT ------------

私は私のdockerfileを共有することを忘れて申し訳ありません。

最初の行は、次のとおりです。

FROM nvidia/cuda:8.0-devel-ubuntu14.04 

RUN apt-get update && apt-get install --yes --force-yes \ 
    software-properties-common build-essential wget curl git pkg-config cmake-curses-gui vim nano doxygen libboost-all-dev libeigen3-dev libflann-dev freeglut3-dev libglew-dev 
# to get cmake3.0 
RUN add-apt-repository ppa:george-edison55/cmake-3.x 
RUN apt-get update && apt-get install --yes --force-yes \ 
    cmake 

RUN apt-get install --yes --force-yes \ 
    g++ python 

# Intall some basic GUI tools 
RUN apt-get install --yes --force-yes \ 
     cmake-qt-gui gnome-terminal 

私はので、私がやったドッキングウィンドウでファイル/etc/bash.bashrcを編集する:

RUN sed -i 's+#if ! shopt -oq posix; then+if ! shopt -oq posix; then+g' /etc/bash.bashrC#this works 
RUN sed -i 's+\# if [ -f \/usr\/share\/bash-compl+ if [ -f \/usr\/share\/bash-compl+g' /etc/bash.bashrC#this does not work and provide the previous error 
+0

可能であれば、Dockerfileを親切に共有してください。あなたが使用しているベースイメージではない場合は? – t6nand

+0

確かに、私はそれを提供するために私の質問を編集しました。 – Bastienm

答えて

3

's+# if \[ -f /usr/share/bash-compl+ if \[ -f /usr/share/bash-compl+g'を解析しなければなりません。

角括弧から\[をエスケープする必要があります。角括弧はsedの文字をグループ化することができるため、エスケープされていない限り、文字は大括弧と一致しません。

s///ではなく、s+++を引き続き使用する場合は、スラッシュをエスケープする必要はありません。

+0

Thxそれは今働いています:-) – Bastienm

関連する問題