【Linux bash常用快捷键】教程文章相关的互联网学习教程文章

linux – Bash引号禁用转义【代码】

我想运行一些命令,让我们从我的bash脚本命名为“test”,然后从bash变量中添加一些params. 我的剧本:#!/bin/bash -x PARAMS="-A 'Foo' -B 'Bar'" ./test $PARAMS我有:+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\''' + ./test -A ''\''Foo'\''' -B ''\''Bar'\'''这是不对的! 另一个案例:#!/bin/bash -x PARAMS='-A '"'"'Foo'"'"' -B '"'"'Bar'"'" ./test $PARAMS结果是伤心过:+ PARAMS='-A '\''Foo'\'' -B '\''Bar'\''' + ./test -A...

linux – Bash脚本 – 自动填写答案【代码】

我有一个bash脚本有几个问题,是否可以自动填写答案?./script.sh install 答案按顺序y 2 1 n n 我怎么能用bash做到这一点? 编辑:是否可以只传递第一个答案?echo "y" | install 并让用户选择回答下一个问题?解决方法:我会将here document传递给stdin:./script.sh install <<EOF y 2 1 n n EOF如果你想在一行上,你也可以使用echo:echo -e "y\n2\n1\nn\nn" | ./script.sh install但是,我更喜欢这里的文档解决方案,因为它是恕我直...

linux – 如何在bash for循环中跳过带注释(#space)的行【代码】

参见英文答案 > Reading lines in a file and avoiding lines with # with Bash 10个使用以下代码:#!/bin/bash export LC_ALL=Cfor input_file in $(<inputflist.txt) docase "$input_file" in \#*) continue ;; esacecho $input_filedone和inputflist.txt有以下内容:# foo.txt bar.txt我希望它只打印最后一行bar.txt,但它会打印出来:foo.txt bar.txt什么是正确的方法呢?解决方法:这应该工...

linux – 如何在bash中将半命令分配给变量【代码】

这个命令工作正常find . -name "test"但我想在shell脚本中这样做$FIND = "find . -name "这样我就可以使用$FIND“测试”了 但它不起作用解决方法:考虑一下声明:$Find = "find . -name "这有两个问题: > shell要求在赋值中=周围没有空格.> $Find是变量的值.它本身不是变量. 因此,要为Find分配值,请使用:Find="find . -name "无法运行:$Find test这种方法既便携又有限.从长远来看,最好使用数组来解决这类问题. 最后,最好不要对变...

linux – bash命令可以打开一个命令或另一个命令【代码】

我正在使用两种不同的操作系统. >对于MacOS:打开file.pdf(它在Mac中的默认pdf程序中打开pdf)> for Linux:xdg-open file.pdf(在Linux中也是如此) 如果我交换命令它不起作用.是否有任何单行命令集如下: > open file.pdf或xdg-open file.pdf 我想要一个适用于它们的命令(或命令)而不显示任何错误.我需要此命令的地方是make文件. 我有这样的makefile:all: open file.pdf xdg-open file.pdf other things ..在makefile中,如何确保ma...

Linux系统bash脚本编程【代码】【图】

脚本编程步骤建立一个文件:touch 文件名编写文件内容,在编写时 - #!/bin/bash默认文件的权限-rw-r–r-- 修改文件的权限为可执行文件”x“ chmod u+x 文件名在脚本文件中编写命令 执行脚本文件根据相对路径进行执行./test01/man.conf根据绝对路径进行执行/test01/test02/man.conf bash /test01/test02/man.conf

linux – 使用Bash中的另一组行过滤行【代码】

我的标准输入上有线条$printf "C\nB\nA\n" C B A我想过滤掉其他标准输入上出现的行(或子串或正则表达式 – 更容易):$printf "B\nA\n" B A当条目被过滤时,我希望只有C. 我试过了$printf "C\nB\nA\n" | grep -v `printf "B\nA\n"`但后来我得到了grep: A: No such file or directory如何通过其他命令返回的行执行标准输入的过滤?解决方法:你可以使用grep的-f选项:Matching Control-f FILE, --file=FILEObtain patterns from FILE, ...

linux – Bash:是否可以阻止PID被重用?【代码】

是否可以阻止PID被重用? 例如,如果我使用myjob&在后台运行作业myjob,并使用PID = $!获取PID,是否可以阻止linux系统重新使用该PID,直到我检查PID不再存在为止(这个过程已经完成)? 换句话说,我想做的事情如下:myjob & PID=$! do_not_use_this_pid $PID wait $PID allow_use_of_this_pid $PID想要这样做的原因在上面给出的示例中没有多大意义,但考虑在系列中启动多个后台作业,然后等待它们全部完成. 一些程序员老兄正确地指出,没有...

linux – 如何在Bash中将秒转换为分钟和秒?【代码】

我有一个Bash脚本,它通过它的API从网站下载文件,我想在最后实现一个东西(缺少更好的单词),这将显示脚本完成所需的时间.使用此代码,我能够做到:#!/bin/bash SECONDS=0# -- Code to Execute --echo "Task complete" echo "Script completed in $(echo "scale=2; $SECONDS / 60" | bc) minutes"但是,这将显示脚本在一分钟内执行的时间:Task complete Script completed in 1.35 minutes我怎样才能将脚本完成的秒数转换为分钟和秒?像...

在bash / linux中并行运行shell脚本【代码】

我有一个shell脚本job.sh. 内容如下:#!/bin/bashtable=$1sqoop job --exec ${table}现在当我做./job.sh table1 该脚本成功执行. 我在表tables.txt文件中有表名. 现在我想循环遍历tables.txt文件并并行执行job.sh脚本10次. 我怎样才能做到这一点? 理想情况下,当我执行脚本时,我希望它在下面执行;./job.sh table1 ./job.sh table2 ./job.sh table3 ./job.sh table4 ./job.sh table5 ./job.sh table6 ./job.sh table7 ./job.sh tabl...

linux – 如何在bash中比较2个范围列表?【代码】

使用bash脚本(Ubuntu 16.04),我试图比较2个范围列表:file1中任何范围内的任何数字是否与file2中任何范围内的任何数字一致?如果是这样,请在第二个文件中打印该行.这里我将每个范围作为2个制表符分隔的列(在file1中,第1行表示范围1-4,即1,2,3,4).真实的文件非常大. 文件1:1 4 5 7 8 11 12 15文件2:3 4 8 13 20 24期望的输出:3 4 8 13我最好的尝试是:awk 'NR=FNR { x[$1] = $1+0; y[$2] = $2+0; next}; {for (i in x) {if ...

linux – 如何在bash cli中将多个命令组合成单个?【代码】

要删除卷,首先应将其置于脱机状态,然后删除.以下是执行此操作的命令.for i in {1..16}; do vol --offline StressIO-v$i --force || break; done for i in {1..16}; do vol --delete StressIO-v$i || break; done如何组合这些命令并作为单个命令执行?解决方法:您可以检查第一个脱机注释的退出状态,并在单个循环中执行删除:for i in {1..16}; dovol --offline StressIO-v$i --force && vol --delete StressIO-v$i || break done

linux – Bash脚本 – 仅在一列中更改值【代码】

例如,我有1个文件12341234 3,0 12341342 4,0我该如何打印:abcdabcd 3,0 abcdacdb 4,0猫$1 | tr 1234 abcd 更改第1列和第2列.如何仅更改1列并打印所有列?解决方法:一种方法是拆分列,然后使用粘贴重新加入:paste <(cut -d' ' -f1 <"$1" | tr 1234 abcd) <(cut -d' ' -f2- <"$1")process substitution的<()语法是一种基础,但paste,cut和tr工具所需的功能都是POSIX指定的;因此,我们唯一需要运行的不是POSIX标准的一部分就是bash本身...

linux – 为什么这个用于着色文本的bash函数只打印整个字符串的第一个单词?【代码】

我正在尝试创建将以某种颜色打印绑定到变量的消息的函数.消息变量作为此函数的参数传递.问题是我只获得第一个空格的文本(只有第一个消息).我的脚本看起来像这样:#!/usr/bashlbGREEN='\e[1;92m' NC='\e[0m'normalMessage="Everything fine"echo_message() {echo -e ${lbGREEN}$1${NC}}echo_message $normalMessage 我的输出是:Everything解决方法:对我来说,我不得不更改“#!/ bin / bash”的标题,但显然这对你来说不是问题. 在你...

linux – Bash shell函数错误:找不到命令【代码】

我是bash的新手所以如果这是一个愚蠢的问题,请耐心等待: 我真正想在shell中输入的内容是这样的:javac -classpath "emarket.jar" Testclient.java -Xlint:unchecked事实是,如果我手动将上面的行键入bash,它执行时没有错误.但是,如果我在.bashrc中制作一个自定义函数,如下所示:function compile() { 'javac -classpath "emarket.jar" '$@'.java -Xlint:unchecked';}并在bash中发出此命令:compile Testclient它有一个错误说:bash...