Articles of bash

如何获取.ssh / authorized_keys(2)文件的所有指纹

是否有一个简单的方法来获取在.ssh / authorized_keys ||中input的所有指纹列表 .ssh / authorized_keys2文件? ssh-keygen -l -f .ssh/authorized_keys 将只返回第一行/入口/公钥的指纹 用awk破解: awk 'BEGIN { while (getline < ".ssh/authorized_keys") { if ($1!~"ssh-(r|d)sa") {continue} print "Fingerprint for "$3 system("echo " "\""$0"\"> /tmp/authorizedPublicKey.scan; \ ssh-keygen -l -f /tmp/authorizedPublicKey.scan; \ rm /tmp/authorizedPublicKey.scan" ) } }' 但有没有更简单的方法或SSH命令我没有find?

什么是/ bin /破折号?

我认为/bin/sh是我select的shell的符号链接。 我一直使用bash ,所以我认为/bin/sh会指向/bin/bash 。 事实certificate,它指向/bin/dash 。 它变得更有趣。 我开始dash ,做echo $SHELL ,它打印/bin/bash (所以他们基本上是一样的?)。 但是, dash的手册页完全不同于bash的手册页(所以它们不一样?)。

我如何完全logging所有bash脚本操作?

我想从脚本输出中捕获所有的日志数据,包括错误消息,并将它们全部redirect到日志文件。 我有像下面的脚本: #!/bin/bash ( echo " `date` : part 1 – start " ssh -f [email protected] 'bash /www/htdocs/server.com/scripts/part1.sh logout exit' echo " `date` : sleep 120" sleep 120 echo " `date` : part 2 – start" ssh [email protected] 'bash /www/htdocs/server.com/scripts/part2.sh logout exit' echo " `date` : part 3 – start" ssh [email protected] 'bash /www/htdocs/server.com/scripts/part3.sh logout […]

如果我启动一个后台进程然后注销,它会继续运行吗?

经过与同事长时间的讨论后问这个问题,我真的很想在这里澄清一下。 我启动一个后台进程,可以通过在命令行中追加“ & ”,或者通过CTRL-Z停止并使用“ bg ”在后台恢复。 然后我退出。 怎么了? 我们确信它应该被SIGHUP杀死,但是这并没有发生。 当再次login时,该过程高兴地运行,并且pstree显示它被init “采纳”。 这是预期的行为? 但是,如果是这样, nohup命令的目的是什么? 看起来这个过程不会被杀死,无论有没有… 编辑1 一些更多细节: 该命令是从SSH会话启动的,而不是从物理控制台启动的。 该命令没有 nohup和/或& ; 然后用CTRL-Z暂停,然后用bg重新开始。 ssh会话没有下降。 有一个实际的注销(“ exit ”命令)。 该过程是一个scp文件的复制操作。 再次login时, pstree显示进程正在运行并且是initsubprocess。 编辑2 要更清楚地说明问题:将背景(使用&或bg )放到一个进程忽略SIGHUP ,就像nohup命令一样? 编辑3 我尝试手动发送一个SIGHUP scp :它退出,所以它绝对不会忽略信号。 然后我再次尝试启动它,把它放在后台并注销: init被“采纳”并继续运行,并且在重新login时发现它。 我现在很困惑。 看起来没有SIGHUP被发送在所有upong注销。

zcat / gzcat在linux下工作,而不是在osx上。 一般的linux / osx兼容性

首先是具体问题:在linux中,我使用zcat来列出一个.zip文件。 在osx中​​,zcat似乎自动将.Z添加到文件名中。 各种各样的人build议用gzcatreplacezcat; 但是,gzcat抱怨文件不是gzip格式! '文件'显示这个:…压缩归档数据,至lessv2.0提取 所以zcat和gzcat都不能在osx中​​工作,我该怎么办? 我在bash中有一个中等大小的脚本,它使用zcat / gzcat,sed awk和其他基本实用程序来处理一些文件。 我想复制我的OSX笔记本电脑上的环境,所以我可以脱机工作。 任何一般的build议如何我可以避免这种痛苦? 我希望这是一个相当常规的工作stream程,因此必须由其他人来整理。

用户定义的bash_completion.d脚本的标准位置?

我有用户访问(没有根)到Linux(Suse)机器,我开发了一些bash脚本和相应的bash自动完成规则。 由于脚本只属于我的用户,因此我需要完整的规则只对我“活跃”(一部分来自我没有root写入权限的事实),将我的bash_completion脚本放到/etc/bash_completion.d/文件夹中不是一个选项。 目前我给自己的文件命名为.bash_completion.myscript ,并直接从我的.bashrc文件中.bash_completion.myscript ,但是我想知道是否有任何其他的“标准”方式来实现这些结果,这已经在bash实现中考虑过了。 例如,创build一个文件夹/home/myuser/.bash_completion.d/ ?

从bash命令输出创build“虚拟文件”?

我想知道是否有办法从bash输出创build一个“虚拟文件”。 示例:假设我想通过电子邮件将mysqldump的输出作为附件发送到外部电子邮件地址。 我可以使用Mutt来做到这一点。 我需要使用的mutt选项是-a <name of the file I want to attach> 。 我知道我可以使用一个临时文件: mysqldump mysqldumpoptions > /tmp/tempfile && mutt -a /tmp/tempfile [email protected] 但是我宁愿将mysqldump输出直接redirect到Mutt。 Mutt的-a选项只接受一个文件,而不是一个stream,但也许有一种方法可以传递某种虚拟文件描述符或者其他的东西。 就像是: mutt -a $(mysqldump mysqldumpoptions) [email protected] 可能吗? 如果没有,为什么? 这可能是一个愚蠢的例子,当然有更简单的方法来做到这一点,但我希望它解释了我从另一个命令的输出创build虚拟文件的问题。

克朗:只有在电子邮件中出错?

我终于通过一个shell脚本,在我的数据上设置了一个真实的备份计划,这个脚本是由cron以紧凑的间隔处理的。 不幸的是,每次执行CRON时,我都会收到空的电子邮件,而不仅仅是在出错的时候。 是否有可能只发生CRON发送电子邮件时出现错误,即。 我的TAR没有按预期执行? 以下是我的crontab是如何设置的; 0 */2 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" [email protected] 非常感谢!

有没有什么理由使用bash over zsh?

我很好奇为什么要运行bash而不是zsh。 我的意思是zsh完全向后兼容bash。 不要误解我的意思:我不喜欢bash或任何东西。 我只是真的想知道是否有任何优势,通过zsh使用它。 那么有什么理由在bsh上使用bash?

在cron中将wget输出configuration到/ dev / null

我每隔5分钟在我的crontab中运行以下命令,以使Phusion Passenger保持活跃状态​​。 */5 * * * * wget mysite.com > /dev/null 2>&1 当我运行这个时,它在站点URL上执行wget将STDOUT / STDERR路由到/ dev / null。 当我从命令行运行它,它工作正常,不会在我的主目录中产生一个index.html文件。 当它从cron运行时,它会每五分钟创build一个新的index.html文件,给我留下大量我不想要的索引文件。 我的语法运行cron作业不正确吗? 从命令行它没有问题,但从cron它生成一个index.html文件在我的主目录。 我敢肯定,我犯了一个简单的错误,如果有人能帮上忙,我将不胜感激。