Tag: shell

处理除第一个之外的所有参数(在bash脚本中)

我有一个简单的脚本,第一个参数是为文件名保留的,所有其他可选参数都应该传递给脚本的其他部分。 使用谷歌我发现这个wiki ,但它提供了一个字面的例子: echo "${@: -1}" 我无法得到任何其他工作,如: echo "${@:2}" 要么 echo "${@:2,1}" 我从terminal得到“坏代换”。 什么问题,我怎样才能处理除了传递给bash脚本的第一个参数?

shell脚本可以设置调用shell的环境variables吗?

我正在尝试编写一个shell脚本,在运行时将设置一些环境variables,这些variables将保留在调用者的shell中。 setenv FOO foo 在csh / tcsh中,或者 export FOO=foo 在sh / bash中只在脚本执行期间设置它。 我已经知道了 source myscript 将运行脚本的命令,而不是启动一个新的shell,这可能导致设置“调用者”的环境。 但是这是一个难题: 我希望这个脚本可以从bash或者csh中调用。 换句话说,我希望任何一个shell的用户都能够运行我的脚本并改变shell的环境。 所以'源'不适合我,因为运行csh的用户不能获得bash脚本,而运行bash的用户不能获得csh脚本。 是否有任何合理的解决scheme,不涉及编写和维护脚本上的两个版本?

如何将多行文件名join自定义分隔符?

我想把ls -1的结果合并成一行,并用我想要的来划分它。 有没有我可以用来实现这个标准的Linux命令?

如何将命令的输出直接复制到我的剪贴板?

如何将命令的输出传输到我的剪贴板并在使用terminal时将其粘贴回来? 例如: cat file | clipboard

如果任何命令返回一个非零值,则中止shell脚本?

我有一个Bash shell脚本来调用一些命令。 如果任何命令返回一个非零值,我希望shell脚本自动退出,返回值为1。 这可能没有明确检查每个命令的结果? 例如 dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi

在shell中获取程序执行时间

我想在几个不同的条件下在linux shell中执行一些东西,并且能够输出每个执行的执行时间。 我知道我可以写一个perl或python脚本来做到这一点,但有没有办法在shell中做到这一点? (这恰好是bash)

如何保存一个Python交互式会话?

我发现自己经常使用Python的解释器来处理数据库,文件等 – 基本上是大量的半结构化数据的手动格式化。 我没有正确地保存和清理有用的部分。 有没有办法将我的input保存到shell(数据库连接,variables赋值,循环和逻辑) – 一些交互式会话的历史? 如果我使用类似script东西,我会得到太多的stdout噪音。 我并不需要腌制所有的东西,但是如果有解决scheme,那就可以了。 理想情况下,我只剩下一个与我交互创build的脚本一样的脚本,我可以删除不需要的位。 有没有这样的包装,或DIY方法? 更新 :我真的很惊讶这些软件包的质量和实用性。 对于那些有类似的痒: IPython – 应该已经使用了很多年了,我心里想的那种 reinteract – 非常令人印象深刻,我想了解更多关于可视化,这似乎将闪耀在那里。 排列内嵌graphics的gtk / gnome桌面应用程序。 想象一下混合shell+graphics计算器+迷你月蚀。 来源分布在这里: http : //www.reinteract.org/trac/wiki/GettingIt 。 在Ubuntu上构build得很好,也集成到gnome桌面,Windows和Mac安装程序中。 bpython – 非常酷,很多不错的function,自动完成(!),快退,一个按键保存到文件,缩进,做得好。 Python源代码分发,从sourceforge拉了一些依赖关系。 我被转换了,这些真正填补了翻译和编辑之间的需求。

set -e在bash脚本中是什么意思?

我正在研究该脚本在Debian档案(.deb)文件解压缩之前执行的preinst文件的内容。 该脚本具有以下代码: #!/bin/bash set -e # Automatically added by dh_installinit if [ "$1" = install ]; then if [ -d /usr/share/MyApplicationName ]; then echo "MyApplicationName is just installed" return 1 fi rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf rm -Rf $HOME/.local/share/file-manager/actions/* fi # End automatically added section 我的第一个查询是关于行: set -e 我认为脚本的其余部分非常简单:它检查Debian / Ubuntu包pipe理器是否正在执行安装操作。 如果是,它会检查我的应用程序是否刚安装在系统上。 如果有,脚本打印出消息“MyApplicationName刚刚安装”并结束( return 1表示以“错误”结束,不是吗?)。 如果用户要求Debian / […]

在Linux中追加一个文件到另一个文件

我有两个文件,file1和file2。 如何将file2的内容附加到file1,而不覆盖当前的file1。 我如何在Ubuntu Linux上执行此操作?

使用bash中的单个命令将默认值分配给shellvariables

我在bash(3.00)shell脚本中对variables进行了大量testing,如果未设置variables,那么它会分配一个默认值,例如: if [ -z "${VARIABLE}" ]; then FOO='default' else FOO=${VARIABLE} fi 我似乎记得在一行中有这样的语法,类似于三元运算符,例如: FOO=${ ${VARIABLE} : 'default' } (虽然我知道这是行不通的) 我疯了吗,还是有这样的事情存在?