Tag: shell

从Bash脚本检查程序是否存在

我将如何validation程序是否存在,以何种方式返回错误并退出,还是继续执行脚本? 这似乎应该很容易,但它一直困在我身上。

为什么一个正确的shell脚本会给出一个包装/截断/损坏的错误信息?

我有一个似乎应该工作的命令的shell脚本,但相反,它失败了一个奇怪的包装/截断/损坏的错误消息。 例: $ ls -l myfile -rw-r—– 1 me me 0 Aug 7 12:36 myfile $ cat myscript ls -l myfile $ bash myscript : No such file or directory 该文件显然存在,但即使我没有,这是我通常会得到的错误消息: $ ls -l idontexist ls: cannot access idontexist: No such file or directory 注意它是如何包含工具名称ls ,消息string和文件名,而我的没有。 这是我得到的,如果我尝试使用mysql 。 错误消息看起来像是已经被包装了,现在开始报价: Command: mysql -h myhost.example.com Expected: ERROR […]

sh和bash之间的区别

在编写shell程序时,我们经常使用/bin/sh和/bin/bash 。 我通常使用bash ,但我不知道它们之间有什么区别。 bash和sh之间的主要区别是什么? 在bash和sh编程时我们需要注意什么?

.bashrc,.bash_profile和.environment有什么区别?

我已经使用了许多不同的基于nix的系统,看起来每个Bash的风格都有不同的algorithm来决定运行哪个启动脚本。 对于设置环境variables和别名以及打印启动消息(例如MOTD)这样的任务而言,哪个启动脚本是适当的位置? 把东西放在.bashrc , .bash_profile和.environment之间有什么区别? 我也看到了其他文件,如.login , .bash_login和.profile ; 这些有关吗? 在物理上login,通过ssh远程login,打开一个新的terminal窗口时,有什么区别呢? 跨平台(包括Mac OS X(及其Terminal.app)和Cygwin Bash)有什么重大差异?

在bash shell脚本中使用getopts来获取长短命令行选项

我希望使用我的shell脚本来调用长短命令行选项。 我知道可以使用getopts ,但是就像在Perl中一样,我还没有能够对shell做同样的事情。 任何想法如何做到这一点,以便我可以使用如下选项: ./shell.sh –copyfile abc.pl /tmp/ ./shell.sh -c abc.pl /tmp/ 在上面,这两个命令对我的shell意味着同样的事情,但使用getopts ,我还没有能够实现这些?

为什么“cd”不能在bash shell脚本中工作?

我正在尝试编写一个小脚本来将当前目录更改为我的项目目录: #!/bin/bash cd /home/tree/projects/java 我将这个文件保存为proj,使用chmod添加执行权限,并将其复制到/usr/bin 。 当我通过proj调用它时,它什么都不做。 我究竟做错了什么?

从Python运行shell命令并捕获输出

我想编写一个函数来执行一个shell命令并将其输出作为一个string返回,不pipe它是一个错误还是成功的消息。 我只想得到和命令行一样的结果。 什么会是一个代码示例,会做这样的事情? 例如: def run_command(cmd): # ?????? print run_command('mysqladmin create test -uroot -pmysqladmin12') # Should output something like: # mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

在shell中,“2>&1”是什么意思?

在Unix shell中,如果我想将stderr和stdout结合到stdoutstream中进行进一步的操作,我可以在我的命令结尾附加以下内容: 2>&1 所以,如果我想在g ++的输出上使用“head”,我可以这样做: g++ lots_of_errors 2>&1 | head 所以我只能看到前几个错误。 我总是记不起这件事,而且我经常不得不去查看它,主要是因为我不完全理解这个特殊技巧的语法。 有人可以把这个分开来解释一个字符是什么“2>&1”的意思吗?

调用Runtime.exec时捕获标准输出

当遇到客户端机器上的networking问题时,我希望能够运行一些命令行并将其结果通过电子邮件发送给我自己。 我发现Runtime.exec将允许我执行任意的命令,但收集一个string的结果更有趣。 我意识到我可以将输出redirect到一个文件,然后从文件中读取,但我的spidey感觉告诉我有一个更优雅的方式。 build议?

为什么人们在Python脚本的第一行编写#!/ usr / bin / env python?

在我看来,这些文件运行相同,没有这一行。