我想创建一个命令,它将更改目录,在后台运行一个进程,然后返回到原始目录。从特定目录启动进程非常重要(它使用相对路径的运行目录)。
我尝试过运行此操作,但出现以下错误:
Base64.encodeToString(getBytesFromBitmap(bitmap),Base64.NO_WRAP);
我可以运行以下任一命令。
this.model.UserProfileImageBase64 = Base64.encode(binaryString);
这样做的目的是能够将此命令添加到我的别名中。
答案 0 :(得分:1)
引自此GNU bash页面,
list
是一个或多个管道的序列,由一个运算符;
,&
,&&
或||
分隔,并且可选由;
,&
或换行符之一终止。在这些列表运算符中,
中执行命令&&
和||
具有相同的优先级,其次是;
和&
,它们具有相同的优先级。如果命令由控制操作符&
终止,则shell在子shell中异步执行命令。这称为在background
您可以从上面推断出&
本身就是一个命令分隔符,就像;
一样。你只需要做
cd ~/work; myapp &> /dev/null & cd -
# ^^^ just acting as a command-separator
(或)使用{}
将您的命令分组到复合语句中,如下所示
cd ~/work; { myapp &> /dev/null & }; cd -
答案 1 :(得分:1)
在同一个子shell中运行cd
命令和myapp
,您不需要cd
返回:
( cd ~/work; myapp &>/dev/null ) &
圆括号(...)
创建一个子shell。您可以自由更改目录(cd
)或更改子shell中的环境,它将不会影响父shell。因此,之后不需要cd
。
让我们从目录/tmp/1
:
$ pwd
/tmp/1
现在,让我们在后台shell中运行cd
和示例命令,然后再次检查目录:
$ ( cd work; date &>/dev/null ) &
[1] 11942
$ pwd
/tmp/1