2017-07-27 193 views
0

我知道這可能是一個愚蠢的問題... 我想從docker文件中執行docker。問題是,當我使用docker run -it docker_name/bin/bash進入docker時,我沒有完成命令行。 所以我做了這個https://docs.docker.com/machine/completion/(仍然不工作),並想要這樣做https://linuxconfig.org/tab-does-not-automatically-complete-docker-commands-solution在docker中使用sed替換路徑

事情是,我無法從泊塢窗文件中取代幾行。我想使用這樣的命令sed:RUN sed -i 's+#if ! shopt -oq posix; then+if ! shopt -oq posix; then+g' /etc/bash.bashrc,但它不工作以替換包含路徑的行(我得到錯誤sed:-e表達式#1,字符75:未終止的'命令)。

我也試過RUN sed -i 's+\# if [ -f \/usr\/share\/bash-compl+ if [ -f \/usr\/share\/bash-compl+g' /etc/bash.bashrc但得到了同樣的結果。

在dockerfile中使用sed的好方法是什麼,或者在dockerfile的未來docker中更新文件的好方法是什麼?

------------- ------------編輯

對不起,我忘了分享我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