Articles of bash

根据目录名称删除目录date

下面的命令行将删除比180天早的目录 find /path/to/base/dir -type d -ctime +180 -exec rm -rf {} \; 但是这个语法在目录时间戳上查找 例如,如果目录的时间戳是 Jan 2 08:17 那么目录将被删除 但我想要的是根据目录date名称删除目录 例如 目录与date名称: drwxr-xr-x 2 root root 4096 Dec 2 08:17 01012014 drwxr-xr-x 2 root root 4096 Dec 2 08:17 01022014 drwxr-xr-x 2 root root 4096 Dec 2 08:17 01032014 应该删除,因为它们的date名称超过了180天 请咨询如何在我的bash脚本中实现这一点 注释 – 目录名称是DAYMONTHYEAR

使用shell脚本从先前创build的文件中删除单词

假设我们有一个以前创build的文件ABC cat ABC //Checking contents of **ABC** hello hi how what where 现在在shell脚本的帮助下,我想删除ABC中的 “How”字样 我正在尝试这个 echo Enter file name read a if[ $a -f ] then _____ |grep how ABC fi 有什么命令可以用在_____? 所有其他解决scheme也欢迎。

awk列出一个特定的组

我是shell脚本的新手。我有一个CSV文件,我想打印符合条件的行明智的总和行 column1 column2 column3 column4 column5 ……. columnN a1 b1 c1 0.5 50 100 a2 b2 c2 1 25 150 a1 b1 c2 0.5 25 10 a2 b2 c2 2 20 100 (假设逗号作为分隔符,我可以SUM特定列 awk -F ',' '{ x = x + $4 } END { print x }' 1)我怎样才能使用它从第k到第N个循环与数值求和列? 2)也如何可以有条件地使用它只匹配一些条件匹配行的列说column2是b2和column3是c2? 我可以 cat file| grep b2 […]

Bash oneliner重命名文件名

我经常想轻松重命名一堆文件。 我总是不得不努力find , grep , xargs和sed来简单地工作。 我想了解如何使用PCRE做得更好 在这里我的文件: $ find . . ./08447.ctags ./10565.gitignore ./38037.inputrc ./42257.bashrc ./51395.gitk ./63705.gitconfig ./66352.octave_hist ./67049.ahk ./85869.vimrc ./89518.minttyrc ./desktop.ini ./dp4FontViewer64.exe ./SBZSwitcher_v1.8.9.7z ./xlive.rar 我会正确地重命名点文件,因为我可以用这个oneliner: $ find . | grep -e '^[.]\/[0-9]\+[.]' | sed -r 's/^.*[.](\w+)$/\0 .\1/' | xargs -n2 mv 然而,我觉得这个命令非常复杂,我正在寻找一些我可以轻松使用的东西: $ rename 's/^\.\/\d+\.(\w+)$/\1/' . 我的替代解决scheme是编写这个Perl脚本: #!/usr/bin/env perl use 5.010; use File::Find; […]

在循环Linux shell中提示input

我正在创build一个脚本来检查交互式提示是否删除一个cron条目: function cron_check() { crontab -l result=$? if [[ $result -eq 0 ]]; then crontab -l > crontab.out cat crontab.out | while read cron_entry do # ignore commented cron entries [ "${cron_entry#\#}" = "$cron_entry" ] || continue # skip comment read -u3 -p "Do you want to remove this cron entry: $cron_entry, Please enter [Y/N]" […]

用delim将string分割成数组时不包括最后的空string

我正在写一个脚本,采用“〜”分隔符的参数,并在分割string后,我想插入到数组中的值。 我在这个问题上有不lesspost,我几乎在那里,但有一个失败的情况。 这里是细节。 myScript.sh #!/bin/bash tmpIFS=$IFS IFS="~" array=($1) IFS=$tmpIFS echo "${#array[@]}" 处决 $ ./myScript.sh "A~B" $ 2 这是我想要的。 但是当我这样做 $ ./myScript.sh "A~" $ 1 我期待有一个大小为2的数组,最后一个单元格是一个空string。 我怎样才能做到这一点? 我一般试图用这个脚本实现的是通过传递10个查询参数来执行一个使用curl的http请求。 而不是有10个参数到我的脚本,我想获得的数据作为由一个字符按指定的顺序分隔的一个参数。 谢谢

注释行中出现错误“0:找不到命令”

帮帮我! 运行我的脚本后,我得到错误A1.sh:行205:0:命令未find。 令我感到困惑的是第205行是一个评论! 我试过编辑它,但仍然在同一行上得到一个错误。 我所有的行结束都是LF。 下面是编辑后的代码块,现在是第205行: if `doesBookExist "$title" "$author"` 全部代码: if [[ bookExist -gt 0 ]] then # get title from actual book (in case title input has bad case) actualTitle=`cut -d ':' -f 1 BookDB.txt | grep -i "^$title$"` sed -i "/^$title:$author.*$/Id" $FILENAME if `doesBookExist "$title" "$author"` then title=`echo "$title" | tr "@" […]

“ls”在cmd行工作,但不在脚本中的名称空间的目录

我是bash脚本的初学者,我正在编写一个脚本,它具有variables目录名称,谁使用这些variables值来运行简单的bash命令,如“ls”和“cd”。 例如,当目录具有“正常”名称时,它工作得很好 testfolder / FOLDER01 但是,如果目录的名称中有空格和括号,就会发生失败,例如,当您复制子目录并粘贴到包含子目录的相同目录中时,就会发生这种情况。 在这个脚本中可以看到这个问题: [boblacerda@localhost MyScripts]$ cat test.sh #!/bin/bash VARDIR="testfolder/folder01" ls $VARDIR VARDIR="testfolder/folder01\ \(copy\)" ls $VARDIR [boblacerda@localhost MyScripts]$ 这是脚本在debugging模式下的输出: [boblacerda@localhost MyScripts]$ bash -x test.sh + VARDIR=testfolder/folder01 + ls testfolder/folder01 testefile01 testefile02 + VARDIR='testfolder/folder01\ \(copy\)' + ls 'testfolder/folder01\' '\(copy\)' ls: cannot access testfolder/folder01\: No such file or directory ls: cannot access \(copy\): No […]

如何知道连接拒绝扔curl

在shell脚本中,我必须通过shell脚本中的curl命令来调用一些服务。 在这个如果服务没有运行,然后curl说连接被拒绝了,我怎样才能获取这个exception,并调用在另一台机器上运行的服务。

在linux中创build多个具有相同名称的文件

我需要创build名称为text [x]的8个txt文件,其中X是从1到8的数字。是否有任何简单的构造来做到这一点? 我想使用迭代。 简单的方法如: touch text1.txt text2.txt text3.txt text4.txt text5.txt text6.txt text7.txt text8.txt 是不能接受的。