小编Adr*_*rth的帖子

不要将当前的bash会话保存到历史记录中

我注意到,当打开.bash_history它只包含我上一个会话中的条目时,似乎当前会话仅在退出时附加.有没有办法阻止当前会话保存?bash如果知道如何做到这一点,即使崩溃也是一种选择.我发现我可以完成kill -9这个过程,但是如果有更好的方法我会很高兴知道.

bash

60
推荐指数
7
解决办法
4万
查看次数

如何从bash脚本发送control + c?

我在bash脚本中启动了一些屏幕,然后runserver在每个屏幕中运行django的命令.我希望能够以编程方式阻止它们,这需要我发送Control+crunserver.

如何从我的bash脚本发送这些击键?

bash gnu-screen

57
推荐指数
3
解决办法
10万
查看次数

在Bash函数中使用getopts

我想getopts在我的.bash_profile中定义的函数内部使用.我的想法是,我想将一些标志传递给此函数以改变其行为.

这是代码:

function t() {
    echo $*
    getopts "a:" OPTION
    echo $OPTION
    echo $OPTARG
}
Run Code Online (Sandbox Code Playgroud)

当我这样调用它时:

t -a bc
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

-a bc
?
 
Run Code Online (Sandbox Code Playgroud)

怎么了?我想在bc没有手动移位和解析的情况下获得该值.如何getopts在函数内正确使用?

编辑:纠正我的代码片段尝试$ OPTARG,无济于事

编辑#2:好的事实证明代码没问题,我的shell被搞砸了.打开一个新窗口解决了它.arg值确实在$ OPTARG中.

bash function getopts

43
推荐指数
3
解决办法
2万
查看次数

无法使用sed或grep提取捕获组

我想从键值对语法中提取值对,但我不能.
我试过的例子:

echo employee_id=1234 | sed 's/employee_id=\([0-9]+\)/\1/g'
Run Code Online (Sandbox Code Playgroud)

但这给了employee_id=1234而不是1234实际上是捕获组.

我在这做错了什么?我也尝试过:

echo employee_id=1234| egrep -o employee_id=([0-9]+)
Run Code Online (Sandbox Code Playgroud)

但没有成功.

regex linux grep sed

43
推荐指数
4
解决办法
6万
查看次数

来自Gson的JSON字符串:删除双引号

这是我的Json代码的示例:

array("id" => 0, "navn" => "Vind telefon", "udgiver" => "Telia", "beskrivelse" => utf8_encode("Vind en Iphone 5 ved at gætte 1 spørgsmål"), "tilmeldte" => 89, "startdate" => "10-04-2013", "enddate" => "30-06-2013"),
Run Code Online (Sandbox Code Playgroud)

如果我navn在程序中打印出属性,我会得到以下输出:

"Vind Telefon"
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它保留了双引号.

有什么办法可以避免吗?

我的完整代码:

<?php
header('Content-Type: json; charset=utf-8');
$lottery = array(
    array("id" => 0, "navn" => "Vind telefon", "udgiver" => "Telia", "beskrivelse" => utf8_encode("Vind en Iphone 5 ved at gætte 1 spørgsmål"), "tilmeldte" => 89, "startdate" => "10-04-2013", "enddate" => "30-06-2013"),
    array("id" => 1, "navn" …
Run Code Online (Sandbox Code Playgroud)

java json gson

31
推荐指数
1
解决办法
2万
查看次数

用正则表达式交换字母

我怎样才能调换字母o与字母eeo

我刚试过这个,但我不认为这是一个很好的方法.有没有更好的办法?

my $str  = 'Absolute force';
$str =~ s/e/___eee___/g;
$str =~ s/o/e/g;
$str =~ s/___eee___/o/g;
Run Code Online (Sandbox Code Playgroud)

输出: Abseluto ferco

regex perl replace

23
推荐指数
2
解决办法
2019
查看次数

如何在bash中对十六进制数进行按位运算?

在我的bash脚本中,我有一个包含十六进制数字的字符串,例如hex="0x12345678".是否可以将其视为十六进制数并对其进行位移?

bash shell sh

17
推荐指数
2
解决办法
3万
查看次数

GNU Screen - 在shell或脚本的后台运行命令中创建屏幕

我正在尝试screen从shell 创建一个会话/窗口并在其中启动一个命令.我该怎么办?

bash shell gnu-screen

13
推荐指数
1
解决办法
2万
查看次数

GNU并行"find"和"ls"

我正在尝试将GNU parallel大量文件发布到Web服务器.在我的目录中,我有一些文件:

file1.xml
file2.xml
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的shell脚本:

#! /usr/bin/env bash

CMD="curl -X POST -d@$1 http://server/path"

eval $CMD
Run Code Online (Sandbox Code Playgroud)

脚本中还有其他一些东西,但这是最简单的例子.我试图执行以下命令:

ls | parallel -j2 script.sh {}
Run Code Online (Sandbox Code Playgroud)

这些GNU parallel页面显示为对目录中的文件进行操作的"正常"方式.这似乎将文件的名称传递给我的脚本,但curl抱怨它无法加载传入的数据文件.但是,如果我这样做:

find . -name '*.xml' | parallel -j2 script.sh {}
Run Code Online (Sandbox Code Playgroud)

它工作正常.在我的脚本中传递参数的方式lsfind方法之间是否存在差异?或者我是否需要在该脚本中执行其他操作?

linux parallel-processing bash find gnu-parallel

11
推荐指数
2
解决办法
1万
查看次数

是否可以拥有带通配符证书的有效子子域?

说我有以下域名:

example.com
Run Code Online (Sandbox Code Playgroud)

我有这个域的通配符SSL证书.子域test.example.com正确验证.但是,当我尝试使用类似的域时demo.test.example.com,我在所有主流浏览器中收到错误消息:

demo.test.example.com uses an invalid security certificate.

The certificate is only valid for the following names:
  *.example.com , example.com
Run Code Online (Sandbox Code Playgroud)

是否可以将通配符证书用于"子子域"?

apache ssl ssl-certificate

10
推荐指数
2
解决办法
9405
查看次数