Articles of shell

find并复制这样的文件,同时删除所有主要版本号

试图用“find”来复制一堆共享对象。 几乎在那里,但要删除主版本以外的所有版本号。 例如将somesharedobject.so.30.0.4复制到somesharedobject.so.30 find . -maxdepth 1 -type f -name '*.so.*' -exec cp '{}' test/'{}' \; 我猜测我将不得不向xargs和sed输送pipe道,只是打到了一个精神障碍。 find . -maxdepth 1 -type f -name '*.so.*'|xargs -I '{}' cp '{}' test/'{}'

使用CSV文件中的换行重新格式化项目

我有一个csv ,我想知道如何用-replace换行符,只是在兄弟列,用bash : name,brothers,age,adress ———————— john,"marc peter paul alex",18,street thomas,mike,20,place

如何启动一个命令,然后在第一次完成后并行启动一系列命令?

我想开始一个命令,等到它结束,然后开始一系列的命令,我想将它们链接在一起。 我已经尝试使用的命令的变化testing; 和&&操作员,但是我希望的行为已经expression出来了。 我想要的是运行以下内容: command1 && command2 && command3; (command4; command5; command6;) 鉴于上述命令,我想要发生以下事情: Run command1 When command1 has successfully completed, start command2 When command2 has successfully completed, start command3 When command3 has succuessfully completed start (command4, command5 and command6) in parallel

xargs bash -c意外标记

我遇到了一个问题,在一个bash脚本中调用xargs来并行化一个函数的启动。 我有这条线: grep -Ev '^#|^$' "$listOfTables" | xargs -d '\n' -l1 -I args -P"$parallels" bash -c "doSqoop 'args'" 启动我之前导出的函数doSqoop 。 我传递给xargs然后bash -c一个很长的行,包含我在函数内部分割和处理的字段。 这是类似于schema|tab|dest|desttab|query|splits|….我通过上面的grep命令从文件读取。 我很好,这个解决scheme,我知道xargs可以拆分| 但是我可以这样。 它过去工作得很好,因为我不得不在最后添加另一个字段,其中包含这种值: field1='varchar(12)',field2='varchar(4)',field3='timestamp',…. 现在我有这个错误: bash: -c: line 0: syntax error near unexpected token '(' 我试图逃避pharhentesis和单引号,没有成功。 在我看来, bash -c正在解释这些论点

在Shell脚本之前和之后一天打印一个文件的path

我有一个像下面的shell脚本 #!/bin/bash TIMESTAMP=`date "+%Y-%m-%d"` path=/home/$USER/logging/${TIMESTAMP}/status/${TIMESTAMP}.fail_log echo filePath=$path 在这个脚本中,我想打印特定时间戳的失败日志的path 。 现在我能够得到echo打印path。 如何在timestamp后的前一天打印? 有没有可能做到这一点? 我怎么能在一行代码中做到这一点? 我们能做到吗?

在linux中使用while循环逐个testing函数参数

我正在编写一个脚本,我应该testing用户通过while循环给出的参数。 最后一个参数应该总是“本地”,没有固定的参数数量(我们可以添加任意数量的参数) 这是我的代码到目前为止: #!/bin/sh echo echo -n 'My OS is : ' unamestr=`uname` echo $unamestr i=1 while [ "${@:i}" != "local" ] do if [ "${@:i}" == "mysql" ] then #add the repository wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update #Install mysql sudo yum install mysql-server sudo systemctl start mysqld elif [ "${@:i}" == […]

从两个不同的文本文件中读取并获取每行的列

我想从两个不同的文本文件中读取(行号相等),并将每一行的第五列相互比较。 但是这对我没有用。 有人帮我吗? 在这里我的代码: df -h –total>current_filesystem_usage.txt if [ -s previous_months_filesystem_usage.txt ] then #reading from two different files and store each line into a variable while read current_file_line <&3 && read previous_file_line <&4 do current_filesystem_name=$(cat $current_file_line | awk {'print $1'}) current_filesystem_usage=$(cat $current_file_line | awk {'print $5'}) previous_filesystem_name=$(cat $previous_file_line | awk {'print $1'}) previous_filesystem_usage=$(cat $previous_file_line | […]

在python中复制shell环境以执行bash命令

我试图从python使用subprocess模块执行一个bash脚本。 问题是这个bash脚本依赖于在我的.bashrc文件中设置的许多环境variables。 我想要的是pythonsubprocess正确复制我启动terminal窗口时设置的环境。 到目前为止我尝试过: p = subprocess.Popen(args=['my-script.sh', '–additional_args'], stdout=subprocess.PIPE, env=os.environ.copy(), shell=True) output_buffer, return_code = p.communicate() 但是,然后读一个地方,即使在做shell=True , .bashrc文件仍然没有加载,我应该尝试这样的事情: p = subprocess.Popen(args=['/bin/bash', '-i', '-c', 'my_script.sh', '–additional_args'], stdout=subprocess.PIPE) output_buffer, return_code = p.communicate() 但是用这个函数调用,我得到这个错误: tput: No value for $TERM and no -T specified bash: cannot set terminal process group (2071): Inappropriate ioctl for device bash: no job control […]

如何获得下一个参数在Linux shell命令参数?

我在写这个命令的shell脚本: ovs-dump -i dpdkb2 [-d in] [-p tcp] [host 192.168.102.2][port 80] [-w /test.pcap] 对于'-w'选项,我想将'/test.pcap'处理成'$ PWD / test.pcap',所以我写这样的脚本: for arg do case $arg in -h | –help) … ;; -w ) echo "OPTARG=$OPTARG" ;; ?) ;; esac done 正如我们看到的,我想通过'$ OPTARG'来获得'/test.pcap',但是没有。 所以我的问题是如何得到我的脚本中的'test.pcap'? 当我使用这样的“getopts”时: while getopts "w:h:" arg do case $arg in -h | –help) … ;; -w […]

从python脚本导入shellvariables

我在一个shell脚本中有一组常量,这些常量仅用于其他项目,通过采购,即: . /home/test/constants.sh` 要么 source /home/test/constants.sh` 我现在需要使这些值可以被scons脚本访问。 我想到了最简单的一次写入方法就是: 将shell脚本转换为python脚本,以便scons可以直接导入它。 让python脚本或者用适当的variables生成一个shell脚本,或者让shell脚本执行/ source python脚本来导入必要的variables。 shell脚本从python脚本“导入”variables(即键/值对)的最佳方式是什么? python脚本是否只需要将键/值对作为string转储的函数,还是有一种更复杂的方法来使shell脚本和python脚本中的常量保持同步? 而且,将来,GNU Makefile项目也可能需要这些variables。 shell脚本和Makefiles都可以从外部脚本/程序中“导入”variables吗?