我想通过 ssh 或 bash 进入正在运行的 docker 容器。请看例子:
$ sudo docker run -d webserver
webserver is clean image from ubuntu:14.04
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
665b4a1e17b6 webserver:latest /bin/bash ... ... 22/tcp, 80/tcp loving_heisenberg
Run Code Online (Sandbox Code Playgroud)
现在我想得到这样的东西(进入正在运行的容器):
$ sudo docker run -t -i webserver(或者也许665b4a1e17b6相反)
$ root@665b4a1e17b6:/#
但是,当我运行上面的行时,我得到了新的 CONTAINER ID:
$ root@42f1e37bd0e5:/#
Run Code Online (Sandbox Code Playgroud)
我使用了 Vagrant,我想获得与vagrant ssh.
我曾尝试使用这两种方法来增加数值变量var=$var+1,var=($var+1)但都没有成功。该变量是一个数字,尽管 bash 似乎将其作为字符串读取。
Ubuntu 13.10 上的 Bash 版本 4.2.45(1)-release (x86_64-pc-linux-gnu)。
在教程和操作指南中,我经常看到命令组合在一起。例如,
sudo apt-get update && sudo apt-get install pyrenamer
Run Code Online (Sandbox Code Playgroud)
似乎有四种可能的连接器:&,&&,||和;。尽管& 连接器对我来说很清楚(它将进程发送到后台并使终端可用),但不清楚&&和之间的区别;。||直到 Kaya 发表评论我才知道。
以下问题涉及两个连接器之间的区别,但主要在评论中进行:
所以这里有一些相关的问题:
;和 和有&&什么区别?cd /somewhere_else; rm -Rf *如果命令链中的第一个元素失败,则类似命令可能会产生破坏性后果。我正在运行 Ubuntu 11.04。我使用终端启动 bash 会话,并且我想添加一个环境变量:
$r@hajt:~$ env THEVAR=/example
Run Code Online (Sandbox Code Playgroud)
但它不起作用。它显示了所有变量,其中 THEVAR 是最后一个,但另一个调用env不再显示 -THEVAR不env | grep THEVAR返回任何内容。
同样,带有导出 ( export THEVAR=/example) 或其他变量赋值 ( THEVAR=/example) 的脚本不会添加环境变量。
我知道我做错了什么,我知道它应该很简单,但我就是找不到什么。
更新:我的问题的真正含义是这个:https : //stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(无论如何,我会选择投票最多的答案并保留编辑过的标题 - 这不是我要问的)
env 在修改后的环境中运行程序,然后取消所有更改。
我想编写一个 bash 脚本来解码 base64 字符串。例如,我输入decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==并打印Aladdin:open sesame并返回提示。
到目前为止,我已经尝试了一个简单的 bash 文件,python -m base64 -d $1但该命令需要一个文件名而不是一个字符串。是否有另一个非交互式命令(不一定在 Python 模块中)可以从命令行运行以实现此目的,而无需安装任何额外的软件包?(或者,如果我这样做了,那就是极少的东西。)
我想为rm命令创建一个别名,以便在执行此命令后收到确认消息。所以我正在创建一个这样的别名alias rm='rm -i'。但据我所知,这是一个临时别名,它会一直存在,直到您关闭终端。
正如这里解释的永久保存别名,我需要在终端中执行~/.bash_aliases或~/.bashrc命令并在那里添加我的别名。但是当我执行时,~/.bashrc我收到以下错误消息:
bash: /home/bakhtiyor/.bashrc: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我运行时,~/.bash_aliases我收到另一条错误消息,如下所示:
bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.
Run Code Online (Sandbox Code Playgroud)
实际问题是什么,我该如何解决?
假设我在 bash shell 中有一个别名。是否有一个简单的命令来打印别名将运行的命令?
如何列出所有变量名称及其当前值?
不仅包括$HOME, $PWDetc 还包括您定义的任何其他。
我尝试使用以下代码替换QQ为ZZ,但它没有做我想要的:
var1=QQ
sed -i 's/$var1/ZZ/g' $file
Run Code Online (Sandbox Code Playgroud)
但是,此代码执行我想要的操作:
sed -i 's/QQ/ZZ/g' $file
Run Code Online (Sandbox Code Playgroud)
我如何在 中使用变量sed?
每当我打开一个 .sh 文件时,它都会在 gedit 而不是终端中打开它。我找不到任何类似于Right Click 的选项?打开方式?其他应用...?终端。
如何在终端中打开此文件?