使用sed
如何用NULL替换\ N.
如何替换空白区域|| 用NULL.
|200|0||0|\N||^A|0|\N||
Run Code Online (Sandbox Code Playgroud)期望的输出
|200|0|NULL|0|NULL|NULL|^A|0|NULL|NULL|
Run Code Online (Sandbox Code Playgroud) 我做回购的SVN导出到一个临时位置,然后我删除一些目录之前我的代码库复制到部署目录.
有没有办法在"导出"命令期间"排除"目录列表?
这样做的原因是导出更快(不需要获取我在此部署中删除的东西)尾部,因此部署脚本更快.
当我运行一个bash脚本时,我看到一些对我没有意义的行为,该-e选项有多个命令与&&s 串在一起,其中一个失败.我希望脚本停止在失败的命令上并返回退出状态,但它只是愉快地执行脚本的其余部分.
以下是对我有意义的例子:
$ false && true; echo $?
1
$ bash -xe -c "false && true"; echo $?
+ false
1
$ bash -xe -c "false; true"; echo $?
+ false
1
Run Code Online (Sandbox Code Playgroud)
这是对我没有意义的那个:
$ bash -xe -c "false && true; true"; echo $?
+ false
+ true
0
Run Code Online (Sandbox Code Playgroud)
这是我不明白发生了什么的地方.false && true返回状态1所以脚本不应该停止执行并返回状态1,就像脚本一样false; true?
在进行实验的过程中,我发现如果用括号括起命令链,它会按照我的预期方式工作:
$ bash -xe -c "(false && true); true"; echo $?
+ false
1
Run Code Online (Sandbox Code Playgroud)
有人能解释一下吗?
我从http://libspatialindex.github.com/下载了R tree
自从运行./autogen.sh后,我找不到文件/文件夹,因此我从github存储库下载了文件autogen.sh,如下所示:
现在当我运行./autogen.sh时,我得到"权限被拒绝"如果我运行sh ./autogen.sh我得到:
glibtoolize or libtoolize not found. Giving up!
Run Code Online (Sandbox Code Playgroud)
请建议我现在该怎么做
编辑:我也想在我的C++项目中使用libspatialindex.我正在使用netbeans.我的意思是我想在我的netbeans项目中使用libspatialindex中的函数.我应该如何使用相同的.现在我在一个单独的目录中运行config和make命令.我不知道如何在我的项目中使用它们.
我有很多名为相同的文件,目录结构(简化)如下:
../foo1/bar1/dir/file_1.ps
../foo1/bar2/dir/file_1.ps
../foo2/bar1/dir/file_1.ps
.... and many more
Run Code Online (Sandbox Code Playgroud)
由于通过转到相应的目录来查看所有这些ps文件是非常低效的,我想将它们全部复制到另一个目录中,但是包括前两个目录的名称(与我的目的相关的那些)在文件名中.
我之前尝试过这样,但是我无法从哪里获取文件,因为它们都是连续命名的:
#!/bin/bash -xv
cp -v --backup=numbered {} */*/dir/file* ../plots/;
Run Code Online (Sandbox Code Playgroud)
哪里../plots是我复制它们的文件夹.但是,它们现在的格式为file.ps.~x~(x是一个数字),所以我摆脱了".ps.〜*〜"并只留下ps扩展名:
rename 's/\.ps.~*~//g' *;
rename 's/\~/.ps/g' *;
Run Code Online (Sandbox Code Playgroud)
然后,由于ps文件有时会有数百个点并且需要很长时间才能打开,我只需将它们转换为jpg.
for file in * ; do convert -density 150 -quality 70 "$file" "${file/.ps/}".jpg; done;
Run Code Online (Sandbox Code Playgroud)
这不是一个真正有效的bash脚本,因为我必须手动更改目录.
我想最好的方法是从开头复制文件,并在复制的文件名中包含前两个目录的名称.
我怎么能做到这一点呢?
我parse_input.py从bash 调用一个python脚本
parse_input.py采用一个包含许多'\n'字符的命令行参数.
输入示例:
$ python parse_input.py "1\n2\n"
import sys
import pdb
if __name__ == "__main__":
assert(len(sys.argv) == 2)
data = sys.argv[1]
pdb.set_trace()
print data
Run Code Online (Sandbox Code Playgroud)
我可以在pdb上看到`data = "1\\n2\\n"我想要的东西data="1\n2\n"
我看到类似的行为只是\ (没有\n)被替换为\\
如何删除额外的\?
我不希望脚本处理额外的内容,\因为也可以从文件接收相同的输入.
bash版本:GNU bash,版本4.2.24(1)-release(i686-pc-linux-gnu)
python版本:2.7.3
为什么以下代码会在标题中给出错误?
_say_hey()
{
echo "hey"
}
echo "$(_say_hey())"
Run Code Online (Sandbox Code Playgroud) 我喜欢有一个方便的命令行计算器.要求是:
由于tcsh支持别名位置参数,并且由于别名扩展优先于除历史扩展之外的所有其他扩展,因此可以直接在tcsh中实现接近我理想的东西.
我用过这个:
alias C 'echo '\''\!*'\'' |tr -d '\'',\042-\047'\'' |bc -l'
Run Code Online (Sandbox Code Playgroud)
现在我可以通过最少的输入来完成以下内容:
# the basic stuff:
tcsh> C 1+2
3
# dollar signs, multiplication, exponentiation:
tcsh> C $8 * 1.07^10
15.73721085831652257992
# parentheses, mixed spacing, zero power:
tcsh> C ( 2+5 ) / 8 * 2^0
.87500000000000000000
# commas in numbers, no problem here either:
tcsh> C 1,250.21 * 1.5
1875.315
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,没有必要引用任何东西来使所有这些工作.
现在出现了问题.试图在bash中做同样的事情,其中不支持参数别名迫使我将计算器实现为shell函数并使用"$ @"传递参数
function C () { echo …Run Code Online (Sandbox Code Playgroud) 请考虑以下bash脚本:
#!/bin/bash
function foo {
echo -n $1
echo $2
}
foo 'Testing... ' 'OK' # => Testing...OK
# Whitespace --^ ^
# Missing whitespace -----------------^
Run Code Online (Sandbox Code Playgroud)
第一个参数中的尾随空格发生了什么?怎么能保存它?
作为尝试在root ssh会话中实施安全措施的一部分,我试图设计一种在root用户登录n秒后启动脚本的方法,并更改用户密码并自动注销用户。
我陷入尝试静默更改密码的困境。我有以下代码:
echo -e "new\nnew" | passwd -q
Run Code Online (Sandbox Code Playgroud)
这不是在手册页中提到的“悄悄地”更改密码,而是输出:
~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Run Code Online (Sandbox Code Playgroud)
这没有太大帮助。
我尝试使用stdout和stderr进行管道传输,但是我认为我对管道传输有误解。
~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q > /dev/null
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
~/php-pastebin-v3 #echo -e "new\nnew" | passwd -q /dev/null 2>&1
passwd: user '/dev/null' does not exist
Run Code Online (Sandbox Code Playgroud)
悄悄地通过脚本更改密码的正确方法是什么?