Articles of shell

在shell脚本中使用cd和cd命令是另一个目录中的一些计算的好方法

我在我的shell脚本中使用cd进入一个计算目录,并再次使用cd – 返回。 这是一个很好的使用方法吗? 我的脚本是: input_dir=/home/abc/2001/01/ cd $input_dir #Execute some programm with ifile.txt eg awk '$1 > 99 {printf "%.2f" "$1"}' ifile.txt > ofile.tx cd – 或者我们应该总是提到path名? 喜欢: input_dir=/home/abc/2001/01/ awk '$1 > 99 {printf "%.2f" "$1"}' $input_dir/ifile.txt > $input_dir/ofile.txt 你能否build议如果有什么简单的方法来减less文本?

如何在bash中间接地分配一个variables来从Standard In,File和执行输出中获取多行数据

我在这里和其他地方发现了许多片段,回答了这个问题的一部分。 我甚至设法以低效的方式在很多步骤中做到这一点。 如果可能的话, 我真的很想find执行这个任务的单行执行 ,而不是分配给一个variables,并复制它几次来执行任务。 例如 executeToVar () { # Takes Arg1: NAME OF VARIABLE TO STORE IN # All Remaining Arguments Are Executed local STORE_INvar="${1}" ; shift eval ${STORE_INvar}=\""$( "$@" 2>&1 )"\" } 总的来说,如果$ executeToVar SOME_VAR ls -l * #实际上会填充SOME_VAR和从其余参数中取出的ls -l *命令执行的输出。 但是,如果命令在最后输出空行,(对于例如- echo -e -n '\n\n123\n456\n789\n\n'应该在开始和结束处具有2个新行)这些被bash的子执行过程所剥夺。 我在其他类似的post中看到,通过在stream的末尾添加一个标记“x”来解决这个问题,例如将子执行转化为如下forms: eval ${STORE_INvar}=\""$( "$@" 2>&1 ; echo […]

阅读pdf文件的内容

有没有一个命令行工具来读取Linux上的PDF文件。请为此指出适当的url。 谢谢..

在Unix中对find命令进行sorting以遵守自定义顺序

我有一个脚本,输出文件path(通过find ),我想基于非常具体的自定义逻辑进行sorting : 第一个sorting键:我希望第二个和第三个分隔的字段(如果存在的话)使用基于我提供的键列表的 自定义sorting进行sorting – 但不包括数字后缀。 通过下面的示例input,密钥列表是: rp,alpha,beta-ri,beta-rs,RC 第二sorting键:按每行的结尾数字进行数字sorting。 给出以下示例input(注意每行的/foo/bar/test/example/8.2.4.0前缀是附带的): /foo/bar/test/example/8.2.4.0-RC10 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-alpha10 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-alpha2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-rp2 我预计: /foo/bar/test/example/8.2.4.0-rp2 /foo/bar/test/example/8.2.4.0-rp10 /foo/bar/test/example/8.2.4.0-alpha2 /foo/bar/test/example/8.2.4.0-alpha10 /foo/bar/test/example/8.2.4.0-beta-ri2 /foo/bar/test/example/8.2.4.0-beta-ri10 /foo/bar/test/example/8.2.4.0-beta-rs2 /foo/bar/test/example/8.2.4.0-beta-rs10 /foo/bar/test/example/8.2.4.0-RC1 /foo/bar/test/example/8.2.4.0-RC2 /foo/bar/test/example/8.2.4.0-RC10

如何在linuxterminal上通过卷ID获得ubi卷名?

我们在ubi0上有4个卷,我想在运行时(dynamic)重命名卷名。 我发现一个选项就像获取相应的卷和parsing结果的ubinfo来获取卷名称。 example: ubi0 ubi0_0: Name: name1 ubi0_1: Name: name_2 ……….. like this till ubi0_4. 说如果我想获得卷2的名称然后 ubinfo -d 0 -n 2 |grep "Name:" | sed -e 's|Name:||' -e 's/^ *//' name_2 command details: -d <UBI device number> —–> ubi0(0) -n <volume ID> ——-> 2 ouptut of ubinfo -d 0 -n 2 Volume ID: 2 (on […]

用户input不是在CentOS7中使用systemctl或服务命令

我试图使用systemctl或服务命令来停止系统服务。 该命令如下 systemctl start service_name or service service_name start 在这种停止方法中,要求用户input不在控制台上显示的密码(怀疑在后台运行)。 停止方法如下 stop() { read -s -p "Please provide password to stop the service" passwd } 在CentOS 6中使用服务命令也一样,它在控制台上显示并input。 任何人都可以请build议我,我错过了这里提示或如何可以提示用户使用systemctlinput。

检查是否存在wget / curl

试图做一个脚本来使用wget下载文件,或者如果在Linux中不存在wget,则会curl。 如何让脚本检查wget的存在?

如何在python中传递星号到模块“sh”?

我在Python中使用“sh”模块来调用Linux上的外部命令。 在我的具体情况下,我想称之为“du”命令,因为它比“手动”更有效。 不幸的是,下面的行不起作用: output = sh.du('-sx', '/tmp/*') 但是这确实有效: output = sh.du('-sx', '/tmp/') 如果我传递一个星号,我得到以下错误信息: 'ascii' codec can't encode character u'\u2018' in position 87: ordinal not in range(128) 有谁知道如何处理命令行参数中的星号? 根据要求,这里是堆栈跟踪: Traceback (most recent call last): File "./unittest.py", line 33, in <module> output = sh.du('-sx', '/tmp/*') File "/usr/local/lib/python2.7/dist-packages/sh.py", line 1021, in __call__ return RunningCommand(cmd, call_args, stdin, stdout, stderr) […]

为什么我的bash脚本在空的空间上打破?

我有一个shell脚本,正在打破虚拟主机和*之间的第42行的空间。 结果,唯一的东西是echo'd到控制台 <VirtualHost 我想要发生的是我的整个string被回显到控制台。 <VirtualHost *:80> DocumentRoot /Applications/MAMP/htdocs/web ServerName web.localhost <Directory /Applications/MAMP/htdocs/web> Options Indexes FollowSymLinks MultiViews +Includes AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 这里是我的脚本供参考: #!/bin/bash # This script should be used to automate the web site installation checkFileForString () { # $1 = file # $2 = regex # $3 = text […]

比较不同列的两个文件并打印不同的列

我想比较文件2的第二列与文件1的第一列。 如果它们相等,我想将file1的第二列添加到file2 ,如output.txt所示。 文件2 chr5 ENST00000514151 utr5 0 + chr5 ENST00000512281 utr5 0 + chr5 ENST00000512281 utr5 0 + chr5 ENST00000512281 utr5 0 + 文件1 ENST00000512281 a ENST00000504031 b ENST00000776348 c output.txt的 chr5 a ENST00000512281 utr5 0 + chr5 a ENST00000512281 utr5 0 + chr5 a ENST00000512281 utr5 0 + 我能够比较文件 awk 'NR==FNR{a[$1];next}$2 in a{print}' […]