我想通过 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
, $PWD
etc 还包括您定义的任何其他。
我尝试使用以下代码替换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 的选项?打开方式?其他应用...?终端。
如何在终端中打开此文件?