Articles of shell

如何使用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

加快我的控制台设置

我在一个大型软件项目的不同部门工作。 对于每个分支,我有一个gnome-terminal,打开四个选项卡: 主shell在各个模块中执行生成命令(mvn) ./bin文件夹重新启动应用程序服务器 尾巴-F系统 tail -F另一个log4j-Logfile 这个设置在我工作的环境中工作的很好。 但要达到那个设置我需要 启动terminal cd到分支 打开另外三个选项卡 光盘来respecitve文件夹 发射尾巴 这非常烦人,花费时间太长。 我怎样才能加快速度? 我知道有更好的,也许脚本的工具(xterm,屏幕之类)

为什么`cd ..`反映符号链接遍历,而`ls ..`不是?

ls .. 意思是“列出上司的文件和目录”。 当我在符号链接之后改变目录时, ls ..不遵循符号链接。 它只是显示真正的上层目录。 例如,当目录结构如下时, r ┬ a – b – sub@ └ sub ( sub@是sub@的符号链接) 在cd a/b/sub之后的ls ..命令在r目录中给出文件,就像我在r/sub 。 不是b目录的。 但是cd ..命令带我到b目录。 如何使用ls命令在目录b显示文件?

在shell脚本中创build一个结构(数据结构)

我真的是这个领域的初学者 我的问题是:我怎样才能创build一个结构在shell脚本(或bash,我不知道差异) 以C语言为例,我们可以简单地: struct name { __u8 x; __u8 y; signed short z; float t; float u; }; 是否有可能在shell中创build类似的东西? 为什么? 我需要复制一些值到一个/ proc文件..但我需要确定他们是12字节,以及他们的顺序,因为我想分配给他们在Linux内核模块 感谢您的任何有用的答案或提示

使用相同的密钥循环访问关联数组

我目前正试图循环通过一个关联数组。 该数组包含具有相同键的值。 但是,当我尝试循环时,我只得到一组结果。 我怎样才能遍历包含相同的密钥的所有值? #!/bin/bash/ declare -A details=( [dog]="golden retriver" [cat]="bengal" [bird]="eagle" [dog]="bulldog" [cat]="sphynx" [bird]="parakeet" ) for k in "${!details[@]}" do echo $k — ${details[$k]} done 结果: 猫— sphynx 狗—牛头犬 鸟—鹦鹉

在shell脚本中使用for循环遍历参数列表?

我想通过参数显示提供给我的shell脚本的文件的内容。 我需要使用普通的'for(())'循环来做这个,而不是'for arr'循环。 这是我的代码。 我应该如何正确的文件名称为该猫命令? for (( i=1;$i<=$#;i=$i+2 )) do cat '$'$i #display the contents of the file currently being traversed done

尝试遵循一个shell脚本教程,接收“$:command not found”

我在这里遵循这个指南: http : //www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html 每次运行: $ [ -f /etc/passwd ] && echo "File exists" || echo "File does not exists" $ [ -f /etc/passwd ] && echo "File exists" || echo "File does not exists" 我得到: $: command not found File does not exists 有什么build议?

ShellScript – 帮助我列出文件和子目录

我想知道如何以这种格式列出一个目录。 正常列表结构: #find . -follow -type f | sed "s/.//" /files/test1/test2/file1.txt /files/test1/test2/file2.txt /files/test1/test2/file3.txt /files/test1/file1.txt /files/test1/file2.txt /files/test1/file3.txt /files/file1.txt /files/file2.txt /files/file3.txt /file1.txt /file2.txt /file3.txt 我想我会列出如下: /files/test1/test2/file1.txt file2.txt file3.txt /files/test1/file1.txt file2.txt file3.txt /files/file1.txt file2.txt file3.txt /file1.txt file2.txt file3.txt 喜欢这个: ls -R1 | sed -e 's/://' -e 's/.//' 但是会喜欢上面解释的结构!

如何使用pipeparsing命令的输出

我想处理一个进程的输出,比如ifconfig。 因为你都知道ifconfig的输出是包含inet addr: mask的行的列表:但是我想单独提取ip [来自inet addr:field]并列出它。 有没有可能与pipe道命令? 喜欢 ifconfig | What should be here? 我想把这个命令的输出作为inet addresses列表(如果存在的话,不同的访问点)。