如何确定我正在使用的当前shell?
ps仅仅命令的输出是否足够?
如何在不同版本的UNIX中完成?
我想通过命令行在HTML文件上运行查找和替换.
我的命令看起来像这样:
sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html > index.html
Run Code Online (Sandbox Code Playgroud)
当我运行它并在之后查看该文件时,它是空的.它删除了我的文件的内容.
当我再次恢复文件后运行它:
sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html
Run Code Online (Sandbox Code Playgroud)
这stdout是文件的内容,并且已执行查找和替换.
为什么会这样?
如何在脚本本身中确定Bash脚本文件的名称?
就像我的脚本在文件中一样runme.sh,那么我怎么能让它显示"你正在运行runme.sh"的消息而没有硬编码?
我一直在编写一些shell脚本,如果能够在任何命令失败的情况下暂停执行所述shell脚本,我会发现它很有用.请参阅下面的示例:
#!/bin/bash
cd some_dir
./configure --some-flags
make
make install
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,如果脚本无法更改为指示的目录,那么如果失败,它肯定不会在之后执行./configure.
现在我很清楚我可以对每个命令进行if检查(我认为这是一个无望的解决方案),但是如果其中一个命令失败,是否有全局设置使脚本退出?
对于Linux中的sudo权限,这是一个非常简单的问题,至少看起来应该是这样.
有很多的时候,我只是想将一些东西附加到/etc/hosts或类似的文件,但最终没有能够因为两者>并>>不准,甚至有根.
有没有必要让这项工作无需su或sudo su进入root?
我有一个web目录,我存储一些配置文件.我想使用wget来拉下这些文件并保持它们当前的结构.例如,远程目录如下所示:
http://mysite.com/configs/.vim/
Run Code Online (Sandbox Code Playgroud)
.vim拥有多个文件和目录.我想使用wget在客户端上复制它.似乎找不到正确的wget标志组合来完成这项工作.有任何想法吗?
我无法弄清楚如何确保传递给我的脚本的参数是否为数字.
我想做的就是这样:
test *isnumber* $1 && VAR=$1 || echo "need a number"
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
这样做是否有"规范"方式?我一直在使用head -n | tail -1哪种技巧,但我一直想知道是否有一个Bash工具专门从文件中提取一行(或一系列行).
"规范"是指一个程序,其主要功能就是这样做.
几个月前,我在手臂上纹了一个叉形炸弹,我跳过了空白,因为我觉得没有它们看起来更好.但令我沮丧的是,有时(并不总是)当我在shell中运行它时它不会启动一个fork炸弹,但它只是给出了一个语法错误.
bash: syntax error near unexpected token `{:'
Run Code Online (Sandbox Code Playgroud)
昨天它发生在我试图在朋友的Bash shell中运行它,然后我添加了空白,它突然工作,:(){ :|:& };:而不是:(){:|:&};:
空白是否重要; 我的胳膊上有语法错误吗?!
它似乎总是在zsh中工作,但在Bash中不起作用.
一个相关的问题没有解释关于空白的任何事情,这确实是我的问题; 为什么Bash需要的空白能够正确解析它?