Articles of bash

为什么我的git没有自动更新Expect脚本?

我想创build一个脚本来更新我所有的GitHub仓库。 我只需要input我的用户名和密码,脚本将通过一个存储库列表,调用git push并通过补充的Expect脚本提供必要的信息。 这是我的bash脚本: #! /bin/bash echo "Updating GitHub projects from project_list.txt." echo read -p "GitHub username: " un read -p "GitHub password: " -s pw echo echo while read line do eval dir=$line echo "Updating:" $dir"." cd $dir $SF/githubexpect $un $pw echo echo done < $SF/project_list.txt $SF是一个全局环境variables,包含我的脚本文件夹的绝对path。 这是githubexpect脚本: #! /usr/bin/expect set un [lindex $argv […]

BASH – 只打印path中最深的目录

我需要一些帮助….. 在我的.bashrc文件中,我有一个非常有用的函数(它可能有点粗糙,准备好了,有点古怪,但它工作得很好!)读取input文件,并在每个文件上使用“树”input行来创build一个目录树。 这棵树然后被打印到一个输出文件(和文件夹的大小一起)。 multitree() { while read cheese do pushd . > /dev/null pushd $cheese > /dev/null echo -e "$cheese \n\n" >> ~/Desktop/$2.txt tree -idf . >> ~/Desktop/$2.txt echo -e "\n\n\n" >> ~/Desktop/$2.txt du -sh –si >> ~/Desktop/$2.txt echo -e "\n\n\n\n\n\n\n" >> ~/Desktop/$2.txt popd > /dev/null done < $1 cat ~/done } 这是一个节省时间没有结束,并输出一个片段,如下所示: ./foo ./foo/bar […]

Ansible权限问题

我试图将当前用户添加到系统中的一个组中,然后执行一个需要该组权限的命令。 我的手册是这样的: – name: Add this user to RVM group sudo: true user: state=present name=vagrant append=yes groups=rvm group=rvm – name: Install Ruby 1.9.3 command: rvm install ruby-1.9.3-p448 creates=/usr/local/rvm/bin/ruby-1.9.3-p448 问题是,所有这些都发生在同一个shell中。 stream浪者的shell还没有被新的组更新。 是否有一种干净的方式来刷新Ansible中的用户当前组? 我想我需要得到它重新连接或打开一个新的shell。 不过,我试图打开一个新的壳,它只是挂起: – name: Open a new shell for the new groups shell: bash 当然,它永远不会退出! 与newgrp相同的东西 – name: Refresh the groups shell: newgrp 因为它基本上做同样的事情。 […]

sed与特殊字符

我有我想要使用sed的这一行: –> ASD = $start ( *.cpp ) <– $ start不是可变的,我想用sed来代替所有的行: ASD = $dsadad ( .cpp ) 我怎样才能使sed忽略特殊的charactars,我试图在特殊字符之前加斜杠,但也许我错了,有人可以给我一个例子吗? 这是我想要的: sed's / CPPS = \ $(shell ls | grep * .cpp)/ somereplace /'Makefile

在disown和注销后可以看到输出到stdout吗?

我已经完成了这个程序:ctrl-z disown -h%1 bg 1 然后注销, 我仍然有可能看到那个程序输出到stdout现在吗?

正则expression式的Linux文件权限(数字符号)

我不能为我的生活找出适当的正则expression式。 我正在寻找的是一个正则expression式来匹配Linux文件权限的有效数字表示(例如,740为全读取无,777为全部)。 到目前为止我已经尝试了以下内容: strtotest=740 echo "$strtotest" | grep -q "[(0|1|2|3|4|5|7){3}]" if [ $? -eq 0 ]; then echo "found it" fi 上面的问题是正则expression式匹配1-5或7任何东西,不pipe其他字符。 例如,如果strtotest直接的被改为709 ,则条件是成立的。 我也试过[0|1|2|3|4|5|7{3}]和[(0|1|2|3|4|5|7{3})]以及。 是我正在使用的正则expression式错了,还是我错过了一些必须处理的grep ?

使用通配符(*)将文件复制到bash脚本中的文件夹 – 为什么它不工作?

我写一个bash脚本创build一个文件夹,并将文件复制到该文件夹​​。 它从命令行工作,但不是从我的脚本。 这里有什么问题? #! /bin/sh DIR_NAME=files ROOT=.. FOOD_DIR=food FRUITS_DIR=fruits rm -rf $DIR_NAME mkdir $DIR_NAME chmod 755 $DIR_NAME cp $ROOT/$FOOD_DIR/"*" $DIR_NAME/ 我得到: cp: cannot stat `../food/fruits/*': No such file or directory

而在Bash脚本循环?

我不习惯编写Bash脚本,Google也没有帮忙弄清楚这个脚本有什么问题: #!/bin/bash while read myline do done echo "Hello" while read line do done exit 0 我得到的输出是: ./basic.agi: line 4: syntax error near unexpected token 'done' ./basic.agi: line 4: 'done' 我的bash版本是: GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu) 谢谢。 编辑:当while循环不为空时,脚本工作正常。 虽然我在…我希望退出循环,当用户input什么,即。 只需按Enter键,但Bash不断循环。 我怎样才能退出循环? while read myline do echo ${myline} done echo "Hello" while read line do true […]

在SLURM sbatch脚本中使用Bashvariables

我试图从另一个文件中获取一个值,并在SLURM提交脚本中使用它。 但是,我得到一个错误,该值是非数值的,换句话说,它不被解除引用。 这是脚本: #!/bin/bash # This reads out the number of procs based on the decomposeParDict numProcs=`awk '/numberOfSubdomains/ {print $2}' ./meshModel/decomposeParDict` echo "NumProcs = $numProcs" #SBATCH –job-name=SnappyHexMesh #SBATCH –output=./logs/SnappyHexMesh.log # #SBATCH –ntasks=`$numProcs` #SBATCH –time=240:00 #SBATCH –mem-per-cpu=4000 #First run blockMesh blockMesh #Now decompose the mesh decomposePar #Now run snappy in parallel mpirun -np $numProcs snappyHexMesh -parallel […]

如何在shell中重复连字符(连字符)

我怎样才能在shell中重复这个字符? 我已阅读并尝试过,但这不适用于- 。 它会抛出错误invalid option 。 下面是我使用的确切命令: printf '-%.0s' {1..100} 原始发布行: printf '-%0.s' {1..100} 我也尝试逃避-通过放置一个\但在这种情况下,它重复\- n次。