有没有办法在 bash 中内联扩展别名?
$bash>alias ll='ls -l '
$bash>ll<tab>
$bash>ls -l
Run Code Online (Sandbox Code Playgroud) 我需要用替换来替换文本文件中的一些文本。通常我会做类似的事情
sed -i 's/text/replacement/g' path/to/the/file
Run Code Online (Sandbox Code Playgroud)
问题是text和replacement都是包含破折号、斜线、黑斜线、引号等的复杂字符串。如果我转义所有必要的字符text,东西很快就会变得不可读。另一方面,我不需要正则表达式的强大功能:我只需要按字面意思替换文本即可。
有没有办法在不使用某些 bash 命令的正则表达式的情况下进行文本替换?
编写一个执行此操作的脚本会相当简单,但我认为应该已经存在一些东西。
我想在我的雪豹机器上安装 rvm。
它说我需要在我的.bashrc文件中添加一行(我正在使用 bash)但是我的.bashrc文件在哪里?
考虑以下代码
外部作用域.sh
#!/bin/bash
set -e
source inner-scope.sh
echo $(inner)
echo "I thought I would've died :("
Run Code Online (Sandbox Code Playgroud)
内部作用域.sh
#!/bin/bash
function inner() { echo "winner"; return 1; }
Run Code Online (Sandbox Code Playgroud)
我试图outer-scope.sh在调用inner()失败时退出。由于$()调用子外壳,这不会发生。
如何在保留函数可能以非零退出代码退出的事实的同时获得函数的输出?
是否有任何内置的 Linux 命令允许输出一个输入字符串的 n 倍的字符串??
我正在尝试编写一个脚本,我想检查传递给 bash 脚本的任何参数是否与字符串匹配。我现在设置的方式是
if [ "$3" != "-disCopperBld" -a "$4" != "-disCopperBld" -a "$5" != "-disCopperBld" -a "$6" != "-disCopperBld"]
Run Code Online (Sandbox Code Playgroud)
但可能有大量参数,所以我想知道是否有更好的方法来做到这一点?
谢谢
编辑:我尝试了这段代码,并使用选项 -disableVenusBld 调用了脚本,但它仍然打印出“开始构建”。难道我做错了什么?提前致谢!
while [ $# -ne 0 ]
do
arg="$1"
case "$arg" in
-disableVenusBld)
disableVenusBld=true
;;
-disableCopperBld)
disableCopperBld=true
;;
-disableTest)
disableTest=true
;;
-disableUpdate)
disableUpdate=true
;;
*)
nothing="true"
;;
esac
shift
done
if [ "$disableVenusBld" != true ]; then
echo "Starting build"
fi
Run Code Online (Sandbox Code Playgroud) 我有一个到一台机器的 ssh 连接,该连接在 30 分钟没有用户输入后被该机器断开。但是,如果我开始类似的操作top,连接将保持活动状态。由于这是客户端的机器,我无法重新配置该机器的 SSH 服务器。所以我正在寻找一种方法来自动检测空闲并启动类似top. 一种 Bash 的“屏幕保护程序”。
我知道我可以用 来做到这一点screen,但不幸的screen是没有安装,而且我无法安装软件。所以我需要使用 Bash 提供的东西。
明确地说:我正在寻找一种解决方案,我在登录后启动一次,然后我想使用该终端,走开,两小时后回来继续工作,在走开之前不输入任何内容。此外,我不希望隧道的东西(为此我推荐伟大的工具sshuttle)
有任何想法吗?
我已经按照http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without添加git-completion.bash到我的/opt/local/etc/bash_completion.d/git-completion
然后我输入PS1='\h:\W$(__git_ps1 "(%s)") \u\$ '了我的 .bashrc_profile
但现在我得到了-bash: __git_ps1: command not found我所做的一切cd。
你能告诉我我错过了什么吗?
我编写了一个小脚本,可以对目录 + 文件列表进行 tar 和压缩。
该脚本似乎成功运行,因为在脚本运行后创建了一个可用的 .tar.gz 文件。
但是,脚本完成后我收到了这条烦人的消息:
tar:由于先前的错误而以失败状态退出
脚本运行时我没有看到任何错误消息,就像我说的那样,生成的文件可以在没有警告/错误的情况下解压缩。由于我将此用作备份的一部分,因此我想确保我没有忽略一些严重的事情。
产生此错误/警告消息的可能原因是什么 - 我可以安全地忽略它吗?。如果我不能忽略它,诊断和解决错误的步骤是什么?
我在 Ubuntu 10.0.4 上运行