Questions tagged «shell»

术语“外壳”是指通常与Unix和Linux操作系统相关联的一类基于文本的交互式命令解释器。对于有关shell脚本的问题,请使用更具体的标签,例如'bash','powershell'或'ksh'。没有特定标签的情况下,应该假定使用便携式(符合POSIX的)解决方案,尽管最好另外使用“ posix”或“ sh”。


7
在Bash中的命令中单引号内的变量扩展
我想从bash脚本运行一个命令,该脚本具有单引号,并且在单引号内还有一些其他命令和一个变量。 例如 repo forall -c '....$variable' 在这种格式下,$将转义,并且变量不会扩展。 我尝试了以下变体,但被拒绝了: repo forall -c '...."$variable" ' repo forall -c " '....$variable' " " repo forall -c '....$variable' " repo forall -c "'" ....$variable "'" 如果我用值代替变量,则命令执行得很好。 请告诉我我要去哪里错了。
393 bash  shell  variables  quotes 

6
在shell的一行中运行多个命令
说我有一个文件/templates/apple,我想 放在两个不同的地方,然后 删除原件。 因此,/templates/apple将其复制到/templates/usedAND /templates/inuse ,然后在此之后,我想删除原始文件。 是cp这样做的最好方法,其次是rm?或者,还有更好的方法? 我想一行完成所有操作,所以我认为它看起来像: cp /templates/apple /templates/used | cp /templates/apple /templates/inuse | rm /templates/apple 这是正确的语法吗?
388 bash  shell 

18
PowerShell是否准备好在Windows上替换我的Cygwin Shell?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 我正在辩论是否应该学习PowerShell,还是只坚持使用Cygwin / Perl脚本/ Unix shell脚本等。 PowerShell的好处是可以使没有Cygwin的队友更容易使用脚本;但是,我不知道我是否真的会写那么多通用脚本,或者人们是否会使用它们。 Unix脚本是如此强大,PowerShell是否足够接近以保证可以切换? 以下是一些我将在PowerShell中寻找的特定内容(或等效内容): grep 分类 优衣库 Perl(PowerShell与Perl的功能有多接近?) AWK sed 文件(提供文件信息的命令) 等等
384 unix  shell  powershell 

7
从Grep RegEx捕获组
我在sh(Mac OSX 10.6)中有了这个小脚本,可以查看文件数组。Google现已停止提供帮助: files="*.jpg" for f in $files do echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*' name=$? echo $name done 到目前为止(显然,对于您的shell专家来说)$name仅保留0、1或2,具体取决于是否grep发现文件名与提供的文件匹配。我想要的是捕获内部的内容([a-z]+)并将其存储到变量中。 如果可能的话,我只想使用grep。如果没有,请不要使用Python或Perl等sed类似的东西–我是Shell的新手,并且希望从* nix纯粹主义者的角度进行攻击。 另外,作为超酷的bonu,我很好奇如何在shell中连接字符串?我捕获的组是$ name中存储的字符串“ somename”,我想在其末尾添加字符串“ .jpg” cat $name '.jpg'吗? 如果有时间,请解释发生了什么。
380 bash  shell  grep 




9
shell命令中“ &&”的目的是什么?
据我所知,使用&after命令是在后台运行它。 &用法示例:tar -czf file.tar.gz dirname & 但是&&呢?(请看以下示例:https : //serverfault.com/questions/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188)


11
如何从Linux Shell运行与当前工作目录不同的程序?
使用Linux shell,如何从与当前工作目录不同的工作目录启动程序? 例如,我有一个二进制文件helloworld,可hello-world.txt在当前目录中创建该文件。 该文件在目录内/a。 目前,我在目录中/b。我想开始运行程序,../a/helloworld并hello-world.txt在第三个目录中找到某个位置/c。
351 linux  shell  environment 

18
如何通过名称而不是PID杀死进程?
有时,当我尝试启动Firefox时,显示“ Firefox进程已在运行”。因此,我必须这样做: jeremy@jeremy-desktop:~$ ps aux | grep firefox jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox jeremy@jeremy-desktop:~$ kill 7451 我想要的是一个可以为我完成所有任务的命令。它会grep在进程列表中使用一个输入字符串并将其(或其他内容)放入其中,并杀死输出中的所有进程: jeremy@jeremy-desktop:~$ killbyname firefox 我尝试在PHP中执行此操作,但exec('ps aux')似乎只显示已exec()在PHP脚本本身中执行过的进程(因此,它显示的唯一进程是其自身。)
349 linux  bash  shell 



7
如何在bash中使用getopts的示例
我想以myscript这种方式调用文件: $ ./myscript -s 45 -p any_string 要么 $ ./myscript -h #should display help $ ./myscript #should display help 我的要求是: getopt 在这里获取输入参数 检查是否-s存在,如果不返回错误 检查后面的值-s是45还是90 检查是否-p存在并且在输入字符串之后 如果用户输入./myscript -h或仅./myscript显示帮助 到目前为止,我尝试了以下代码: #!/bin/bash while getopts "h:s:" arg; do case $arg in h) echo "usage" ;; s) strength=$OPTARG echo $strength ;; esac done 但是用该代码我得到了错误。如何使用Bash和getopt?
345 bash  shell  getopts 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.