Articles of bash

如何使用find来删除隐藏的文件和文件夹

我怎样才能find并删除所有文件,包括隐藏的,没有扩展名的java 。 我知道如何使用find来删除文件并运行这个命令: find . -not -name "*.java" -type f -delete 这个recursionsearch文件夹的所有文件都不以* .java结尾。 但是这个命令没有隐藏文件夹中的文件。 我运行在这里find的命令: ls -lahR然后我发现命令我跑错过的文件。 例如: ./node_modules/.bin: total 24 drwxr-xr-x 5 whitecat staff 170B Apr 5 12:47 . drwxr-xr-x 4 whitecat staff 136B Apr 5 02:25 .. lrwxr-xr-x 1 whitecat staff 19B Apr 5 12:47 nopt -> ../nopt/bin/nopt.js lrwxr-xr-x 1 whitecat staff 20B […]

编辑发送到后台的命令

是否可以编辑发送到后台的进程的命令行,或者链接另一个命令,在第一个命令退出后执行? 例如:我开始使用wget -m site.com镜像站点,但是后来发现我希望在执行作业时通过电子邮件通知我。 工作在后台运行( bg )。 如何在命令中添加&& sendmail ,或者在第一个命令执行完成后执行?

将MAC地址parsing到供应商BASH

正如标题所述,我想知道是否可以使用BASH在Linux上parsingMAC地址给供应商。 我宁愿不使用NMap,因为我希望它很快。 Example: e0:b9:e5:9e:59:00 -> Technicolor

在多个线程上运行命令

我正在terminal窗口中运行一个命令(pngquant是准确的: https : //github.com/pornel/pngquant )。 我注意到,如果我打开4个terminal窗口,并在每个窗口运行pngquant命令,我得到了4倍的速度增加,有效地压缩4倍的图像在同一时间以前。 所以我使用了这种方法,并且为每个pngqunat进程分配了一部分我想要压缩的图像,在multithreading上有效地创build了多个进程 你可以在multithreading上运行命令,而不用做这个技巧吗? 我只想说“在所有这些图像上运行pngquant压缩并使用所有线程可用”。

试图从文件中执行grep和sed,并将输出推送到variables中

我们可以从文件中执行grep和sed,并将输出推送到variables中 grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed '{'s/=.*//'}' 输出将是这样的: /dev/disk/by-id/scsi-3644a8420420897001f2af8cc054d33bb /dev/disk/by-id/scsi-3644a8420420897001ef50fcb0f778b86-part3 /dev/disk/by-id/scsi-3644a8420420897001ef50fcb0f778b86-part2 错误: [/~]# grep "^/dev/disk/by-id/scsi-*" /tmp/disks.txt | sed {'s/=.*//'} >> $x -bash: $x: ambiguous redirect 我们可以将所有3行变成一个variables,并用foreach调用它们吗? 谢谢!

Nagios SNMP:不同的OID具有相同的值

有了Nagios,我想读取数百个Ubiquity设备的设备名称。 这个值在其中一些上有一个OID,另一个在另一个上。 到目前为止,最好的方法是使用这个脚本: $1/check_snmp -H $2 -o .1.2.840.10036.3.1.2.1.3.5 > /tmp/$2.snmp.nagios.tmp status=$? if [ $status -ne 0 ]; then $1/check_snmp -H $2 -o .1.2.840.10036.3.1.2.1.3.9 > /tmp/$2.snmp.nagios.tmp status=$? fi cat /tmp/$2.snmp.nagios.tmp exit $status 我不喜欢这里是它使用文件系统,但我不知道如何读取命令输出到一个variables,并退出命令的代码到另一个variables。 有没有办法写这个,所以它只使用variables? 有没有更好的方法来实现主要目标?

在while循环期间维护读取variables的方法

在“input服务器名称”并在下面的脚本中设置$servselectvariables之后,在select“Hello”和“Goodbye”选项后,variables将丢失。 这需要再次完成“input服务器名称”提示。 有没有办法维持这个variables,直到脚本完全退出? 任何build议将不胜感激。 #!/bin/bash # while true; do read -p "Enter server name: " servselect servselect=${servselect:-servselect} echo $servselect has been selected! printf '%s\n' \ "" \ "[A] Hello" \ "[B] Goodbye" \ "[Q] Quit" \ "" read -n1 -p 'Enter response here:' response case $response in [Aa]* ) printf '%s\n' \ "" \ "Hello, […]

Redhat Shell脚本如果语句失败,出现奇怪的语法错误

Redhat 5.3 Enterprise 以下Shell脚本用于检查备份目录是否被命名为“ll_backup”,然后将其更改为等于文件RESULT.VAR的内容。 result.var文件被复制用于日志目的到另一个目录。 我在testing环境中工作,但是在制作过程中,它经历了一个奇怪的错误,我不能在我的生活中弄明白! 脚本: #!/bin/bash #!/bin/cat # Restores original directory name for next LogLogic Update #TCJ 6/1/09 declare RESULT declare FILE FILE=result.var cd /home/nb-backup/backups/nb-st3000/ll_bkup_65.99.220.172/ if [ -d ll_bkup ] then cat result.var | while IFS=: read RESULT mv "ll_bkup" "$RESULT" mv result.var /home/storegrid/scripts/results/result-`date +%y%m%d%s`.var else exit 0 fi exit 0 结果: nb-script-restorellbackup.sh:第14行:语法错误附近意外的令牌else' […]

如何在非常大的文件上使用zipsplit(或等效)?

根据手册页,zipsplit不适用于大于2GB的文件。 有没有一种等价物或替代品可以让我把4GB的文件分解成500MB的块,这样一个典型的Windows用户就可以轻松地访问这些文件? (我说“典型的Windows用户”排除诸如gzip,tar和split(1)这样的解决scheme…这些对于手头目的来说是不可行的) 谢谢!

杀死冻结应用程序的方法

我有一个冻结的应用程序。 我不能用^ C来终止它,所以我必须这样做: $ ./myapp ^C^Z [1]+ Stopped ./myapp $ pgrep -lf myapp 18479 bash ./myapp $ kill -9 18479 $ fg bash: fg: job has terminated [1]+ Killed ./myapp $ 在极less数情况下可以这样做。 但是,如果我是这个应用程序的作者,并尝试深入的问题,导致冻结,这是非常烦人的一遍又一遍。 有没有办法在这种情况下节省一些击键? 更新: 可以用pkill -f -9 myappreplacepgrep + kill ,这要归功于Lee B 理想情况下,我想将path缩短为一个按键,如^ C。 不pipe它在什么层面上实现都没关系:在gnometerminal上,在bash上,在任何地方。