Articles of bash

Linux Bash脚本:从用户或文件input中声明var名称

嗨,我想做以下事情。 ./script.sh some.file.name.dat another.file.dat Filename1=$(echo "$1"|cut -d '.' -f 1,2) Filename2=$(echo "$2"|cut -d '.' -f 1,2) tempfile_"$1"=$(mktemp) tempfile_"$2"=$(mktemp) 我知道这个代码不起作用。 我需要创build这些临时文件,然后在for循环中使用它们,其中我将对input文件执行一些操作,并将输出保存在这些临时文件中供以后使用。 所以基本上我想创build依赖于我的input文件的名称的variables名称。 我GOOGLE了很多,没有find任何答案我的问题。 我想感谢您的build议

获取pkill杀死的所有进程的PID?

我在做: pkill -9 -f stringMatch 如果成功或者不成功,则将任何内容发送到STDOUT。 任何人都可以提出一种便携的方式来返回被杀死的进程的PID?

如何使用shell脚本检查两台机器中的文件夹?

我正在研究一个我需要在machineX上运行的shell脚本。 它将在其他两台机器( machineQ和machineQ此文件夹MAPPED_LOCATION中检查某个文件夹的格式为YYYYMMDD 。 所以在machineQ和machineQpath都是这样的 – /bat/testdata/t1_snapshot/20140311 在上面的文件夹path里面会有一些文件。 下面是我的shell脚本 – #!/bin/bash readonly MACHINES=(machineP machineQ) readonly MAPPED_LOCATION=/bat/testdata/t1_snapshot readonly FILE_TIMESTAMP=20140311 # old code which I was using to get the latest folder inside each machine (P and Q) dir1=$(ssh -o "StrictHostKeyChecking no" david@${MACHINES[0]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1) dir2=$(ssh -o "StrictHostKeyChecking no" david@${MACHINES[1]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] […]

如果其他列的AWK写入到新列的基础上

我有一个列A,B,C,D的CSV文件。 D列包含0到1的值。我想用AWK在列D中的值写入一个新的E列。 例如: 如果列D中的值<0.7,则列E中的值= 0。 如果列D> = 0.7中的值,则列E = 1中的值。 我能够打印列E的输出,但不知道如何写入到一个新的列。 它可能写我的代码的输出到一个新的文件,然后粘贴回旧文件,但我想知道是否有一个更有效的方法。 这是我的代码: awk -F"," 'NR>1 {if ($3>=0.7) $4= "1"; else if ($3<0.7) $4= "0"; print $4;}' test_file.csv

如何自动化多服务Web应用程序的Docker开发环境启动(在Linux上)

我现在必须执行以下9个步骤才能在Ubuntu 16.04上使用Docker启动我的开发堆栈,然后才能开始编写代码: 打开一个terminal,并进入服务#1的源代码目录 docker – 编写服务#1(Python / Django,Redis和Postgres容器) docker exec service1 bash; 启动Django dev服务器进行debugging 重复服务#2,使用terminal标签保持组织 打开一个terminal,并进入前端Angular应用程序源目录 用npm运行一个webpack dev服务器 打开一个或多个terminal,并cd到相应的源代码目录进行编辑 我尝试编写一个shell脚本,用gnome-terminal –tab -e "bash -c docker-compose up"等方式启动所有的东西,但是这样会变得笨拙,在尝试shell到容器中运行时会失败,例如gnome-terminal –tab -e "bash -c \"docker-compose exec service1 bash -c rundev.sh \"" 。 我也尝试过使用xdotool ,但是由于某种原因它无法识别xdotool shellterminal标签。 在两个后端服务上运行一个SPA,并在三个代码库上进行本地开发,对于Docker应用程序开发来说,这似乎不是一个奇怪的用例。 有没有人有任何build议的工具或替代开发环境设置简化的东西?

比较两个目录中的文件和版本,其中一个具有符号链接?

我们正在将一些旧的项目的工具移到一个新的版本控制版本(在同一个磁盘上,使用不同的用户名),我的任务是查找旧帐户中的实用程序新的,并find两个帐户之间的不同文件。 新帐户已经运行了大约一年,人们对旧文件中的某些文件做了(小的)更改,而没有将其更改为新文件。 这些实用程序在远程服务器上,我只能读取(除了我自己的主文件夹)。 旧帐户称为user1,在〜user1 / bin /文件夹中包含所有实用程序,包括每个实用程序的源代码,可执行文件和脚本。 新帐户user2已经被设置为〜user2 / bin /文件夹中的每个“可执行文件/脚本”与子文件夹〜user2 / src / {utilityname} /中的相应文件的符号链接,还包含该可执行文件的来源。 有没有比这两个目录比较容易的方法 find ~user1/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user1.txt find -L ~user2/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user2.txt 并手动比较结果,看看有什么不同/缺less? 另外,上面的命令只会比较〜user2 / bin /文件夹中的可执行文件/脚本,即使user1和user2之间的user2 / src / {utilityname} /中的源代码相同,例如,脚本中的不同path)。 是否有可能search一个实用程序的符号链接目标所在的文件夹为同名的源文件,以便我可以直接比较user1和user2之间的源文件?

curl:没有指定URL – -F:找不到命令

您好我正在使用此代码上传一个bash脚本在Linux上的文件: curl -F aok=2 -F Name='azko' -F dir="@path_to_file;filename=zou.odp" -F "tag=1234" -F "OK=2" -F ecoTime=1 -F -F ckx=no "http://blabla" 但是,我收到的错误: curl: no URL specified! curl: try 'curl –help' or 'curl –manual' for more information ./up.sh: line 2: -F: command not found ./up.sh: line 3: -F: command not found 我已经安装了curl 7.47.0。 到目前为止,我试图把\放在线的尽头,但错误仍然不断。 我错过了什么? 当我直接复制这个代码\放置到terminal它的工作,但这次给出了另一种错误 curl: (43) A […]

使用Linux删除短于4个字符的单词

我已经阅读了下面的内容,并尝试重写我想要的命令逻辑。 但是,我只是无法做到。 在bash中删除长度小于2的单词 试过: echo $example | sed -e 's/ [a-zA-Z0-9]\{4\} / /g' echo $example | sed -e 's/ [a-zA-Z0-9]\{4\} / /g' 使用sed删除所有大于6个字符的单词 试过: sed -e s'/[A-Za-z]\{,4\}//g' 请帮助我一个简单的awk或sed命令以下内容: Here is an example line of fantastic data 并得到: Here example line fantastic data

Bash概念问题

我是linux和bash的新手,我正在研究一些不同的脚本,但是我有一些概念性的问题需要回答,以帮助我find最好的方法来实现我想要做的。 将数据存储在bash脚本中的最有效的方法是什么,并将其另存为文件,以便另一个脚本可以快速parsing? 丰富多彩的bash菜单的一些很好的例子是什么? 如何在bash中有多列菜单? 我可以在bash中显示图像,还是将图像信息发送给我们,让我们说一个通知发送,并让它显示任何图像? 谢谢。

并行SVN更新过程

我需要在相同的文件夹结构背景下执行多个SVN更新进程,因为我有许多子文件夹,并希望加速整个事情。 我有这样的文件夹结构: /folder/subfolder1/ /folder/subfolder2/ /folder/subfolder3/ … /folder/subfolder1000/ 我想在bash脚本中做这样的事情: svn up /folder/subfolder1 & svn up /folder/subfolder2 & svn up /folder/subfolder3 & 问题在于SVN抱怨'/文件夹'被locking,只有第一个任务完成正确,另外两个没有得到像这样的错误信息: svn: Working copy '/folder' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 有没有一种方法可以用几个并行的SVN进程来完成这个任务,因为做一个一个的文件夹(由其他进程select)需要很多时间才能完成? PS:我正在使用更高级的编程语言(PHP-CLI)来完成所有这些工作,但为了简化问题,我将其编写为bash脚本(遇到同样的问题)。