gpt4 book ai didi

bash - 在Docker中使用sed替换路径

转载 作者:行者123 更新时间:2023-12-02 20:48:59 26 4
gpt4 key购买 nike

我知道这可能是一个愚蠢的问题...
我想从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命令:RUN sed -i 's+#if ! shopt -oq posix; then+if ! shopt -oq posix; then+g' /etc/bash.bashrc,但不能替换包含路径的行(我得到的错误是sed:-e表达式#1,字符75:未终止的“s”命令)。

我也尝试了RUN sed -i 's+\# if [ -f \/usr\/share\/bash-compl+ if [ -f \/usr\/share\/bash-compl+g' /etc/bash.bashrc,但是得到了相同的结果。

在dockerfile中使用sed的好方法是什么,或者在将来的dockerfile中从dockerfile更新文件的好方法是什么?

-------------编辑------------

抱歉,我忘了分享我的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

我想在docker中编辑文件/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

最佳答案

's+# if \[ -f /usr/share/bash-compl+ if \[ -f /usr/share/bash-compl+g'应该解析。

您需要将方括号[转义为\[。方括号允许对sed中的字符进行分组,因此除非进行转义,否则它们将不匹配文字括号。

如果继续使用s+++而不是s///,则无需转义正斜杠。

关于bash - 在Docker中使用sed替换路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com