Tag: bash

在Python中模拟Bash“源代码”

我有一个如下所示的脚本: export foo=/tmp/foo export bar=/tmp/bar 每次我build立我运行'源init_env'(其中init_env是上述脚本)设置一些variables。 为了在Python中完成相同的function,我运行了这段代码, reg = re.compile('export (?P<name>\w+)(\=(?P<value>.+))*') for line in open(file): m = reg.match(line) if m: name = m.group('name') value = '' if m.group('value'): value = m.group('value') os.putenv(name, value) 但是后来有人决定把下面这行添加到init_env文件中是很好的: export PATH="/foo/bar:/bar/foo:$PATH" 很显然,我的Python脚本崩溃了。 我可以修改Python脚本来处理这一行,但是当有人想出一个在init_env文件中使用的新特性的时候,这个脚本就会中断。 问题是如果有一个简单的方法来运行一个Bash命令,让它修改我的os.environ ?

Laravel安装:如何将〜/ .composer / vendor / bin目录放在PATH中?

我在Ubuntu 14.04,我一直在尝试所有可能的方法来安装Laravel无济于事。 错误信息我尝试的一切。 我正在尝试快速入门文档中的第一种方法,也就是通过Laravel Installer,但它说:“确保将〜/ .composer / vendor / bin目录置于PATH中,以便在您findlaravel可执行文件在terminal上运行laravel命令。“ 所以我的问题是,我该怎么做? 这可能是一个简单的问题,但我真的很沮丧,将不胜感激任何帮助。

如何使用bash脚本replace文件名中的空格

任何人都可以推荐一个安全的解决scheme,从给定的根目录开始recursion地replace文件和目录名下划线的空格? 例如: $ tree . |– a dir | `– file with spaces.txt `– b dir |– another file with spaces.txt `– yet another file with spaces.pdf 变为: $ tree . |– a_dir | `– file_with_spaces.txt `– b_dir |– another_file_with_spaces.txt `– yet_another_file_with_spaces.pdf

一个bash脚本可靠的方式来获得自己的完整path?

我有一个bash脚本需要知道它的完整path。 我试图find一个广泛兼容的方式来做到这一点,而不是结束相对或时髦的path。 我只需要支持bash,而不是sh,csh等。 我到目前为止发现的: “ 从内部获取Bash脚本的源目录 ”地址的公认答案通过dirname $0获取脚本的path,这很好,但是可能会返回一个相对path(如. ),这是一个问题,如果你想更改脚本中的目录并使path仍指向脚本的目录。 不过, dirname将成为这个难题的一部分。 被接受的答案是“ OS X的 绝对pathBash脚本 ” (OS X的具体,但答案无论如何)给出了一个函数,将testing,看看$0看起来相对,如果是的话,将预先$PWD 。 但是结果仍然可能有相对的位(尽pipe总体上它是绝对的) – 例如,如果脚本在目录/usr/bin并且在/usr并且键入bin/../bin/t运行它(是的,这是错综复杂的),你最终以/usr/bin/../bin作为脚本的目录path。 哪个有效 ,但… 这个页面上的readlink解决scheme,看起来像这样: # Absolute path to this script. /home/user/bin/foo.sh SCRIPT=$(readlink -f $0) # Absolute path this script is in. /home/user/bin SCRIPTPATH=`dirname $SCRIPT` 但是readlink不是POSIX,显然这个解决scheme依赖于GNU的readlink ,因为BSD不能用于某些原因(我没有访问类似BSD的系统来检查)。 所以,各种各样的做法,但他们都有他们的警告。 什么是更好的方法? “更好”是指: 给我绝对path。 即使以错综复杂的方式调用,也会带出时髦的位(参见上面的#2的评论)。 (例如,至less适度规范化path。) 仅仅依赖于bash-isms或几乎可以肯定是在* nix系统(GNU […]

Bash脚本:While-Loop子壳困境

我想计算一个给定目录内的所有* bin文件。 最初我正在使用一个for-loop : var=0 for i in *ls *bin do perform computations on $i …. var+=1 done echo $var 但是,在某些目录中有太多的文件导致错误: Argument list too long 因此,我正在用一个pipe道while-loop尝试它: var=0 ls *.bin | while read i; do perform computations on $i var+=1 done echo $var 现在的问题是通过使用pipe子的子壳来创build。 因此, echo $var返回0 。 我该如何处理这个问题呢? 原来的代码: #!/bin/bash function entropyImpl { if [[ […]

BASH中pipe道的工作原理是什么?

我经常在BASH中使用pipe道,例如: dmesg | less 虽然我知道这个输出是什么,但是它需要dmesg并且让我用less滚动来浏览它,我不明白是什么 是在做。 这是否与“ > ”相反? 对于什么|有一个简单的或者隐喻的解释 呢? 当多条pipe道在一条线上使用时会发生什么? BASH脚本中pipe道的行为是否一致?

“〜/ Desktop / test.txt:没有这样的文件或目录”

我写了这个脚本: #!/bin/bash file="~/Desktop/test.txt" echo "TESTING" > $file 脚本不起作用; 它给了我这个错误: ./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory 我究竟做错了什么?

如何使用bash脚本遍历所有的git分支

如何使用bash脚本遍历我的资源库中的所有本地分支。 我需要迭代和检查分支和一些远程分支之间是否有任何区别。 防爆 for branch in $(git branch); do git log –oneline $branch ^remotes/origin/master; done 我需要做上面给出的东西,但是我面临的问题是$(git分支)给我的资料库文件夹内的文件夹以及存储库中存在的分支。 这是解决这个问题的正确方法吗? 还是有另一种方法来做到这一点? 谢谢

如何在bash中填充一个整数序列,使所有宽度都相同?

我需要循环一些值, for i in $(seq $first $last) do does something here done 对于$first和$last ,我需要它是固定的长度5.所以如果input是1 ,我需要在前面添加零,使它变成00001 。 例如,它循环到99999 ,但长度必须是5。 例如: 00212等等。 任何想法,我怎么能做到这一点?

从Bash命令查找并replace文本文件

find并replace给定的inputstring(比如abc ,并replace为另一个string(比如文件/tmp/file.txt XYZ ,最简单的方法是什么? 我正在写一个应用程序,并使用IronPython通过SSH执行命令 – 但我不知道Unix那么好,不知道该找什么。 我听说Bash除了是一个命令行界面之外,可以是一个非常强大的脚本语言。 所以,如果这是真的,我假设你可以执行这样的操作。 我可以用bash来做到这一点吗?为了实现我的目标,最简单的(一行)脚本是什么?