草庐IT

linux - 重置 bash 历史搜索位置

在终端中,可以使用Ctrl+r轻松搜索Bash历史记录。但是,如果我找不到我要找的东西怎么办?我被困在我的历史中间。如果想从头重新搜索怎么办?是否有其他快捷方式可以重置历史搜索? 最佳答案 有Meta+>,它绑定(bind)到end-of-history,如果你正处于历史的中间,它很有用历史。元键通常是Alt键。如果您发现您的增量历史搜索不成功,您可以使用Ctrl+G,这将绑定(bind)到abort并且恢复上一行和历史位置。检查manual获取更多此类命令。 关于linux-重置bas

linux - Bash/SH,相同的命令不同的输出?

$cata.sh#!/bin/bashecho-n"apple"|shasum-a256$sh-xa.sh+echo-napple+shasum-a256d9d20ed0e313ce50526de6185500439af174bf56be623f1c5fe74fbb73b60972-$bash-xa.sh+echo-napple+shasum-a2563a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b-最后一个是正确的。这是为什么?以及如何解决? 最佳答案

linux - eval/bash -c 与仅评估变量相比有什么意义?

假设您将以下命令存储在一个变量中:COMMAND='echohello'有什么区别$eval"$COMMAND"hello$bash-c"$COMMAND"hello$$COMMANDhello?如果最后一个版本更短并且(据我所知)做的事情完全相同,为什么几乎从未使用过它? 最佳答案 第三种形式与其他两种形式完全不同——但要理解原因,我们需要进入bash解释命令时的操作顺序,并查看每个方法在使用。Bash解析阶段报价处理拆分成命令特殊运算符解析扩张分词通配符执行使用eval"$string"eval"$string"从#1开始执行上

linux - bash 脚本从 shell 但不是从 cron 作业运行

cron安装是vixie-cron/etc/cron.daily/rmspam.cron#!/bin/bash/usr/bin/rm/home/user/Maildir/.SPAM/cur/*;我有这个简单的bash脚本,我想将其添加到cron作业(之前也包括垃圾邮件学习命令),但是这部分总是失败并显示“找不到文件或目录”据我所知,metachar不是作为cron作业运行时正确解释。如果我从命令行执行脚本,它工作正常。我想知道为什么这不起作用,当然还有一个可行的解决方案:)谢谢编辑#1当我得到它的流行问题徽章时又回到了这个问题。我首先这样做,#!/bin/bashfind/home/u

linux bash - 以自定义格式解析日期

我有一个%c格式的日期(可以是任何其他格式),我需要在日期命令中使用它。%c不是美国格式。它是德国服务器,因为它是德国服务器。这在美国服务器上也无法正常工作。(区域设置为德语或美国)这不起作用(包括错误):user@server:~$NOW=$(date+%c);echo$NOWDo19Dez201322:33:28CETuser@server:~$date--date="$NOW"+%d/%m/%Ydate:ungültigesDatum„Do19Dez201322:33:28CET“(日期:ungültigesDatum„Do19Dez201322:33:28CET“=日期:无效日

linux - 在 bash 脚本中查找命令导致目录出现 "No such file or directory"错误?

2014年3月21日更新所以我意识到我没有尽可能高效,因为我需要“清理”的所有磁盘都在/media下并命名为“disk1,disk2,disk3等”这是最终脚本:DIRTY_DIR="/media/disk*"find$DIRTY_DIR-depth-typed-name.AppleDouble-execrm-rf{}\;find$DIRTY_DIR-depth-typed-name.AppleDB-execrm-rf{}\;find$DIRTY_DIR-depth-typed-name.AppleDesktop-execrm-rf{}\;find$DIRTY_DIR-typef-na

linux - 为什么我在 bash 中的 kill -9 命令上没有收到 SIGKILL 信号?

在bash脚本中,我按如下方式处理不同的信号:#!/bin/bashsighdl(){echo"signalcaught"#dosomethingexit0}trapsighdlSIGKILLSIGINTSIGTERM以上代码为以下事件正确处理信号:Ctrl+Ckillpidpkill脚本名对于kill-9pid,它不会调用sighdl。根据我的理解(如果我没记错的话)kill-9发送SIGKILL信号。有什么想法吗? 最佳答案 你不能那样做。是的,9是SIGKILL,出于安全原因,Unix系统设计不允许任何脚本/程序捕获SIGKI

linux - 保持 SSH 在 Windows 10 Bash 上运行

我在保持SSH在适用于Linux的Windows子系统上运行时遇到问题。似乎如果一个shell没有打开并运行bash,子系统中的所有进程都会被杀死。有办法阻止这种情况吗?我曾尝试使用nssm创建服务,但无法使其正常工作。现在我正在尝试启动一个shell,然后将其发送到后台,但我还没有完全弄清楚如何做。 最佳答案 您必须至少打开一个bash控制台,以便后台任务继续运行:一旦您关闭最后一个打开的bash控制台,WSL就会关闭所有正在运行的进程。是的,我们正在努力在未来改进这种情况;)更新2018-02-06在最近的Windows10In

linux - Bash 脚本中的 While 循环?

我不习惯编写Bash脚本,谷歌也没有帮助找出这个脚本有什么问题:#!/bin/bashwhilereadmylinedodoneecho"Hello"whilereadlinedodoneexit0我得到的输出是:./basic.agi:line4:syntaxerrornearunexpectedtoken'done'./basic.agi:line4:'done'我的bash版本是:GNUbash,version3.2.25(1)-release(i686-redhat-linux-gnu)谢谢。编辑:当while循环不为空时,脚本可以正常工作。当我在做的时候...我希望在用户什么

linux - 在 bash 中设置 wget --header= 不起作用

我试图在wget中设置header。当我在终端中运行以下命令时,它可以工作wget-d--header="User-Agent:Mozilla/5.0(WindowsNT6.0)AppleWebKit/537.11(KHTML,likeGecko)Chrome/23.0.1271.97Safari/537.11"'http://website.com-Oindex但是一旦我将相同的变量放入变量并尝试运行bash脚本,它就无法正常工作。我尝试过的header='-d--header="User-Agent:Mozilla/5.0(WindowsNT6.0)AppleWebKit/537.