Tag: 庆典

如何从命令行追加文本到/etc/apt/sources.list?

我是linux新手,刚开始学习bash。 我正在使用Ubuntu 9.04,并希望从命令行将存储库添加到/etc/apt/sources.list。 基本上我想这样做: sudo echo "[some repository]" >> /etc/apt/sources.list 但是,即使当我使用sudo,我得到这个错误: bash: /etc/apt/sources.list: Permission denied 我如何避免这个错误?

如何从Bash中的string中删除最后n个字符?

我有一个variablesvar在Bash脚本中持有一个string,如: echo $var "some string.rtf" 我想删除这个string的最后4个字符,并将结果赋给一个新的variablesvar2 ,这样 echo $var2 "some string" 我怎样才能做到这一点?

用于生成ssh密钥的Bash脚本

我想创build脚本,它只是运行ssh-keygen -t rsa 。 但如何传递给它3次进入?

“while:”vs“while true”

当你看看如何实现无限循环时,你大多会看到这种方法: while : do # loop infinitely done 但我只是不明白的使用:在这里。 不是更好使用: while true do # loop infinitely done ?

Bash:当前目录variables

我想要做的是find当前的工作目录,并将其保存到一个variables,以便我可以运行export PATH=$PATH:currentdir+somethingelse 。 :s不完全确定它们是否有一个默认包含cwd的variables。

使用unset与设置一个variables为空

我目前正在编写一个bashtesting框架,在一个testing函数中,标准bashtesting( [[ )以及预定义的匹配器都可以使用。 匹配器是'[''的包装,并且除了返回一个返回码之外,还设置了一些有意义的信息来说明预期的结果。 例: string_equals() { if [[ ! $1 = $2 ]]; then error_message="Expected '$1' to be '$2'." return 1 fi } 所以,当一个匹配器被使用,并且失败时,只有一个error_message被设置。 现在,稍后,我testingtesting是否成功。 如果成功了,如果红色失败,我打印绿色的期望。 此外,可能会有一个error_message集,所以我testing一个消息是否存在,打印出来,然后取消设置(因为下面的testing可能不会设置error_message ): if [[ $error_message ]]; then printf '%s\n' "$error_message" unset -v error_message fi 现在我的问题是,如果最好取消设置variables,或者将其设置为“',就像 error_message='' 哪一个更好? 它实际上有所作为吗? 或者,也许我应该有一个额外的标志,指示消息已设置?

Bash脚本:统计文件中的唯一行

情况: 我有一个很大的文件(数百万行),包含几个小时的networking捕获IP地址和端口,每行一个IP /端口。 行是这种格式: ip.ad.dre.ss[:port] 预期结果: logging时收到的每个数据包都有一个条目,所以有很多重复的地址。 我希望能够通过某种types的shell脚本来运行它,这将能够将其缩减为格式的行 ip.ad.dre.ss[:port] count 其中count是特定地址(和端口)的出现次数。 没有特别的工作要做,把不同的端口视为不同的地址。 到目前为止,我使用这个命令从日志文件中删除所有的IP地址: grep -o -E [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(:[0-9]+)? ip_traffic-1.log > ips.txt 从这个angular度来说,我可以使用一个相当简单的正则expression式来清除由我的地址(我不在乎)发送的所有IP地址, 然后,我可以使用以下来提取唯一的条目: sort -u ips.txt > intermediate.txt 我不知道我怎么可以总结sorting方式。

确定正在执行的BASH脚本的path

可能重复: Bash脚本可以告诉它存储在哪个目录中? 在Windows命令脚本中,可以使用%~dp0来确定当前正在执行的脚本的目录path。 例如: @echo Running from %~dp0 BASH脚本中的等价物是什么?

如何删除bash中的字符后的所有文本?

如何删除一个字符后面的所有文本,本例中是冒号(“:”),在bash中? 我也可以去除结肠吗? 我不知道如何。

并行化最大进程数量的Bash脚本

比方说,我有一个在Bash循环: for foo in `some-command` do do-something $foo done do-something是CPU绑定,我有一个不错的shiny4核心处理器。 我希望能够一次运行多达4 do-something 。 天真的做法似乎是: for foo in `some-command` do do-something $foo & done 这样会同时运行所有的 do-something ,但是有一些缺点,主要是do-something也可能有一些重要的I / O,一次执行可能会减慢一点。 另一个问题是这个代码块会立即返回,所以当所有的do-something完成时都无法做其他的工作。 你将如何编写这个循环,所以总是有X个do-something运行?