Articles of unix shell

在* nix中,如何确定一个特定的文件在哪个文件系统上?

在一个通用的,现代的Unix环境(比如GNU / Linux,GNU / Solaris或者Mac OS X)中,是否有一种很好的方法来确定哪个安装点和文件系统types是一个特定的绝对文件path? 我想我可以执行mount命令并手动parsing输出和string – 将其与我的文件path比较,但在此之前,我想知道是否有一个更优雅的方式。 我正在开发一个使用扩展属性的BASH脚本,并且希望使其能够为各种文件系统和主机环境做正确的事情(在很小的程度上它是可能的)。

即时压缩dd备份

也许这听起来像愚蠢的问题,但我想这样做的方式不起作用。 我livecd,驱动器已卸载等 当我做这样的备份 sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k …通常它会工作,但我没有足够的空间在外部高清我正在复制(它几乎适合它)。 所以我想这样压缩 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz …但我拒绝了权限。 我不明白。

删除名称中带有连字符的UNIX目录

通过我的头脑机动,我不小心创build了一个名为(例如)-A的目录,并最终填充了文件。 我想删除所述目录。 我试过了: rmdir — -A 但它告诉我,该目录中仍然有文件。 而我不知道如何进入目录删除所述文件。 我该如何摆脱这个麻烦的目录呢?

复制文件权限,但不是Unix中的文件

(来自: https : //stackoverflow.com/questions/15245144/copy-file-permissions-but-not-files ,因为脱离主题而closures) 我有两个相同的目录树的副本。 他们几乎都有相同的文件(一个版本可能有一些额外的或丢失的文件)。 但是,大部分文件对于两个目录是相同的(具有相同的相对path和所有内容)。 假设这些在目录中: version1/ version2/ 问题是版本1中的权限/搞砸了,我想从版本2 /复制权限,但没有replace版本1 /这是更新的文件。 有没有一种通过shell命令或脚本执行此操作的自动化方法?

何时使用单引号,在grep中双引号?

当试图在一个文件中search一个简单的模式“hello”时,所有以下forms的grep工作: grep hello file1 grep'hello'file1 grep“hello”file1 有没有一个特定的情况下,上述forms之一的工作,但其他人没有。 如果我用一个替代另一个,它有什么区别吗?

伪造一个特定的shell会话的date

我当然试图在这里实现一些奇怪的事情,但我想在本地为GNU / Linux上的shell会话伪造date。 我需要黑盒testing程序在不同date的行为,修改系统date可能会产生不必要的副作用(cron作业,混乱的日志等)。 有任何想法吗 ?