Articles of bash

为什么redirect输出会影响bash中testing的结果?

我正在尝试编写一个脚本来在自己的x会话中启动xfce和xbmc。 要做到这一点,我设置DISPLAY值,在后台运行第一个,并等待,直到我从xset q成功返回。 然后我改变DISPLAY ,并为另一个做相同的。 我正在一块一块地写这篇文章,以检查每个部分的语法是否正确,而我所困扰的部分是'等到我从xset q成功返回xset q 。 export DISPLAY=":0.0" while [[ ! `xset q` ]] do echo -n "." done 此代码似乎工作,所以当XFCE运行它立即退出,当它不在打印.xset: unable to open display ":0.0" 但是我不想看到xset的输出,所以我试图redirect它的输出。 export DISPLAY=":0.0" while [[ ! `xset q > /dev/null 2>&1` ]] do echo -n "." done 然而,添加这个redirect似乎破坏了检测,无论XFCE是否在运行,它只是在那里打印点。 我已经自己testing了这两个命令,并在shell脚本中自己testing了两个命令,它们都按照我的预期工作,在XFCE未运行时返回1,在运行时返回0。 任何人都可以解释为什么把这个命令放在[[ ! `…` ]] [[ ! `…` ]]打破了whiletesting,我怎么才能重写这个while循环正确? […]

Wget:如何绕过“盗链”受保护的图像

是否有可能绕过“热链接”图像保护? 我不是试图发布在其他网站上下载。 当我下载下面的图像时,使用wget: http://img.zgserver.com/linux/Комикс-Trollface-На-борту-70813.jpg 我正在redirect到: http://comicsbook.ru/trollface/70813?na-bortu 我不知道从哪里开始。 我到目前为止所尝试的是: curl "http://comicsbook.ru" -s -L -b cookie.c -c cookie.c -b "$COOKIEPAR" > index.$TEMP wget http://img.zgserver.com/linux/Комикс-Trollface-На-борту-70813.jpg

尝试匹配一个string,并将其添加到replace

我试图添加一个string到一个使用sed和正则expression式的行的结尾。 我有以下string: disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, 和即时尝试添加到它的string的结尾: exec,system,shell_exec,passthru, 我的尝试如下: sed -ie 's/disable_functions = .*[a-zA-z,]$/disable_functions = $1exec,system,shell_exec,passthru,/gI' /etc/php5/apache2/php.ini 它似乎只是增加$ 1到stringdisable_functions = $ 1exec,系统,shell_exec,passthru, 我哪里错了?

从许多csv文件中删除dups

给定n个csv文件,它们的总和最大为100 GB,我需要根据以下规则和条件删除重复的行: csv文件编号为1.csv到n.csv,每个文件大小约为50MB。 第一列是一个string键,如果它们的第一列相同,那么2行被认为是dup。 我想通过保留在稍后的文件(2.csv被认为晚于1.csv)去除dups。 我的algorithm如下,我想知道是否有更好的。 将所有文件合并成一个巨型文件 cat *.csv > one.csv sortingcsv sort one.csv >one_sorted.csv 不知道如何消除在这一点上的dups。 uniq有一个-f标志,跳过前N个字段,但在我的情况下,我想跳过除前1个字段。 我需要帮助最后一步(消除在sorting文件dups)。 还有更有效的algorithm吗?

限制shell命令

我用bash shell创build了一个用户名 – 一个普通的shell,所有命令都可用 – 但是我打算把这个shell用于备份服务,这个服务只允许rsync命令。 因此,我试图限制这个shell只执行rsync命令。 我怎样才能做到这一点与.bash_profile和.bashrc ? 附加信息:该shell仅用于备份文件和文件夹。 我使用ssh密钥连接另一个shell到rsync 。

用另一个文件中的stringreplace一个文件中的string的有效方法

search类似的问题,找不到任何适合我的需求: 我有一个非常大的HTML文件从多个网站刮,我想全部取代 class="key->from 2nd file" 同 style="xxxx" 目前我使用sed – 它运作良好,但只有小文件 同时阅读密钥; do sed -i“s / class = \”$ key \“/ style = \”xxxx \“/ g”file_to_process; 完成<键 当我试图处理更大的东西需要很长的时间 例: keys – Count: 1233 lines file_to_ process – Count: 1946 lines 大约需要40秒才能完成我需要的处理的1/10 real 0m40.901s user 0m8.181s sys 0m15.253s

根据反斜线分隔符分割一个string

我是新来的bash脚本。 我有一个string,就像这样: \\abc\def\ghi 我想使用分隔符parsingstring,并需要一行命令将其转换为/abc/def/ghi (将Windowspath转换为unixpath)。

在不同的目录中查找具有相同名称的文件并计数重复项

我希望你能帮助我解决以下问题。 我有24个目录,每个目录包含许多(1000年)的文件。 我想找出哪些组合的目录包含最多的重复(仅限名称)文件。 例如,如果我们只考虑4个目录 dir1 dir2 dir3 dir4 与以下目录内容 DIR1 1.fa 2.fa 3.fa 4.fa 5.fa DIR2 1.fa 10.fa 15.fa DIR3 1.fa 2.fa 3.fa dir4 1.fa 2.fa 3.fa 5.fa 8.fa 10.fa 因此,目录dir1和dir4的组合包含最多的重复文件(4)。 问题变得非常大,24个目录,所以我想我可能会使用暴力的方法。 东西沿线 统计所有24个目录中出现的所有重复文件 删除一个目录并计算重复文件的数量 replace目录并放下另一个然后计数 重复所有目录 获得23个目录的子集与最大数量的重复文件 重复上面的2-5,并保留22个目录与大多数重复的文件 重复,直到只剩下2个目录 select最大重复文件数量的目录组合 如果有人有这样做的话,我会非常感谢一些build议。 我想使用fdupes或diff但不能弄清楚如何parsing输出和总结。

rsync和(后)进程同步文件

我喜欢rsync我的照片从一个(linux)光盘分区到另一个(备份位置)使用shell脚本。 问题是,我需要重新缩放保存在备份位置的所有照片,例如用mogrify 。 是否有可能后处理每个文件,这是由rsync同步/复制? 在每个同步文件执行mogrify ? 另一种方式可以使用rsync(only)来生成必须同步的文件列表。 下一步:运行一个循环来mogrify每个列表条目,以便将缩放的照片输出到备份位置。 问题是,我必须添加所有的目录和子目录以保存照片之前的原始文件夹结构。 使用rsync将处理“即时”的文件夹创build。 所以:是否有可能对每个与rsync同步的文件执行命令?

Linux脚本cp改变文件名

我正在尝试做一个回收站。 我有一个删除function,将选定的文件发送到回收站,并将其存储目录的位置添加到文件。 问题是当我使用尾部从脚本获取位置。 尽pipe该脚本起作用,它将文件重命名为尾部。 任何人都可以解释为什么cp重命名文件? 以下是我相信问题所在的片段: destination=(tail $1 -n 1) cp ~/Recycling/$1 $destination rm ~/Recycling/$1 谢谢