Articles of shell

比较对象给出了错误的差异

我有一些比较对象的问题。 我的任务是在不同的时间取得两个目录快照的区别。 第一个快照是这样的: ls -recurse d:\dir | export-clixml dir-20100129.xml 然后,稍后,我得到第二个快照并加载它们两个: $b = (import-clixml dir-20100130.xml) $a = (import-clixml dir-20100129.xml) 接下来,我试图比较比较对象,就像这样: diff $a $b 我得到的是某些地方的文件被添加到$ b,因为$ a,但是在一些文件中,在两个快照中,一些文件被添加到$ b,在Compare-Object输出中没有给出。 令人费解,但$ b.count – $ a.count与(diff $ a $ b).count完全相同。 这是为什么? 好的,比较对象具有-property参数。 我尝试使用: diff -property fullname $a $b 我得到了所有的差异:它显示了所有的文件。 例如,说$ a包含: A\1.txt A\2.txt A\3.txt $ b包含: X\2.mp3 X\3.mp3 X\4.mp3 A\1.txt […]

从文件中提取一个单词

我怎么能grep一个文件更接近的单词? 例如 04-02-2010 Workingday 05-02-2010 Workingday 06-02-2010 Workingday 07-02-2010 Holiday 08-02-2010 Workingday 09-02-2010 Workingday 我将上面的数据存储在“feb2010”文件中, 通过这个推荐,我把date存储在一个variablesdate = date '+%d-%m-%Y' 如果date是06-02-2010,我想grep“06-02-2010”工作日 并希望将string“Workingday”存储在一个variables中 我怎样才能做到这一点 ? 还有其他的select吗?

pipe理$ PATHvariables的最佳方法是什么?

我正在寻找一种更容易pipe理我的$PATHvariables的方法。 执行$PATH返回我: /usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin: No such file or directory 对我来说,这是完全废话,难以阅读。 他们可以像这样列出: /usr/local/bin: /usr/local/sbin: /usr/local/mysql/bin: /opt/local/bin: /opt/local/sbin: /usr/bin:/bin: /usr/sbin: /sbin: /usr/local/bin: /usr/X11/bin: No such file or directory 我很想用Ruby来pipe理我的$ PATH,但自然,它看起来像我需要留在我的shellconfiguration文件的一部分。

如何在bash中进行文本匹配

我试图find一个很好的方式来检查一些文本,以设置一个variables。 例如执行逻辑:'如果版本string是1.x然后设置一个标志'。 这样做的一个方法是: versionFlag="0" if grep -q "^1.*" versionfile; then versionFlag="1" fi 这是一个有点冗长。 如果我想切换多种可能性,那么这很容易: case `grep "^1.*" versionfile` in 1.*) echo "version 1" ;; … esac 但是,如果某些文本匹配正则expression式或通配符,那么只需将标志设置为true或false,就可以实现一条很好的线路?

如何列出反斜杠目录名称中的文件?

我在我的linux服务器上看到一个奇怪的目录..这里是: drwxr-xr-x 2 root root 4096 Jan 12 2005 \ t \ t \ t \ t / 我怎样才能逃脱壳下? 谢谢!

在shell命令中使用连字符

我不好意思问这个问题,但是如果我不这样做,我永远也不会知道,所以我在这里给出一个答案: 我注意到大多数shell命令使用“ – ”作为选项,但我也注意到一些命令没有它。 例如,要在给定的直接存档文件,命令是: tar czvf allmyfiles.tar.gz * 但是,为了提取档案,我学到的命令是: tar -zxvf allmyfiles.tar.gz 看上面两个例子,是否包含连字符有什么意义?

SSH与替代shell

我们的系统上有一个共享帐户,它拥有loginshell tcsh。 我更喜欢bash,并希望从我的个人帐户ssh中运行bash,但将tcsh留给使用该帐户的其他人。 我知道我可以设置一些反映在IP上的IP地址,但是有没有(kludgy或non-kludgy)方法来根据运行ssh的用户来做到这一点? 或者一种运行ssh的方式来让它给我一个互动的bash会话?

合成一个bashfunction应用程序运算符

这虽然有点天壤之别,但是我已经学会了不要对任何东西的能力做出假设,因为我经常被隐藏在UNIX / Linux工具中的隐藏function惊呆了。 我经常发现自己正在运行命令,我需要在系统上find一个文件,然后一旦我把眼光放在了理智的位置上,我就需要做一些事情。 以此工作stream程为例: $ which foo.sh /path/to/something/foo.sh $ vim `which foo.sh` 第二个命令需要我整整1-2秒才能input。 这是疯狂的。 我经常这样做,开始觉得自己应该能够分解出样板。 我所喜欢的是幻想的贝壳魔法,可以让我做到以下几点: $ which foo.sh /path/to/something/foo.sh $ which foo.sh |! vim 这第二个例子是远远优于IMO。 我觉得在向上箭头后input“|!vim”要比寻找这一行的开头容易得多,键入vim反向,然后寻找行结束并input最后的反引号。 想象一下,pipe爆炸操作符做了类似于“| xargs,vim”的操作,但是保留了vim的terminal,而且键入的东西更短。 pipe-bang当然是bash中的一个语法错误,它不能被别名,所以我想做的事似乎是不可能的。 还是呢? 我怀疑这是TMTOWTDI的情况,但是我有一个心理障碍。 它不一定是从字面上来看,但是接近的是目标。

所有账户中的相同shell环境

什么是最好的方式自动获得所有我的帐户相同的shell环境(path除外)? 我想要的是当我login的时候,将我的shell中的别名,着色和其他很酷的shiznit转移到其他shell。 这可能吗? 我是否必须将我的.bashrc文件复制到所有帐户?

linux shell脚本中的“cd”返回“找不到命令!”

我在linux中用一行写了一个名为“a.sh”的shell脚本: cd .. :然后我运行这个: chmod +x a.sh sh ./a.sh :我如何运行这个没有得到: “找不到命令”或“无法cd”。 也许我一直在看这个代码太长,或者我正在做什么明显错误? 注:我从那以后发现了什么错。 Emacs在每一行的末尾插入了一些奇怪的“^ m”字符