该bash noclobber选项可防止使用重定向覆盖文件。但有时我真的很想。csh有一个类似的选项,可以通过!在文件名前放置 a 来覆盖它。有没有办法做到这一点bash?
我发现我在一个集合目录中的一个项目上做了很多工作。有时——几个月后——我需要在那个项目上重做一些事情,但我不记得我做了什么。我使用 mercurial 或 git 来跟踪对文件的更改,但我希望能够记住我在该目录中发出的命令。
搜索我的 shell 历史记录并不是很有用。我已经将所有内容记录到我的 .*_history 文件中,但我想要一个我在 ~/foo/bar 中所做的事情的列表,而不是我那周所做的所有其他(百万)事情。我可能甚至不记得我上次在那个特定项目上工作的月份。
有没有人知道我使用过的所有 shell 命令的项目目录日志文件?我正在设想一个类似的命令:
在我的项目上工作
...这会将 shell 日志文件设置为 ~/myproject/.history.log,从该日志文件加载以前的历史记录,并可能更新我的提示以告诉我我正在处理的目录(例如 vcprompt 以提供版本控制信息)。
有没有这样的东西?
我在 Windows 上使用 Bash,由 MSYS 提供。
我试图运行一个带有 shebang 的 Python 文件#!/usr/bin/env python,但我收到以下错误消息:
/usr/bin/env: python: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我能做些什么来完成这项工作?
我知道我可以通过添加后缀来启动 Python 文件python,但我也希望它在没有后缀的情况下也能工作。
我想对特定文件夹中不以特定前缀(例如exclude_)开头的所有文件进行操作。我有一个for带有扩展 glob的 bash循环,如下所示:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Run Code Online (Sandbox Code Playgroud)
在命令行上,这工作正常:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Run Code Online (Sandbox Code Playgroud)
但是,当我在 makefile 中使用它时:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
$ make
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `for FILE in foo/bar/!(exclude_*) ; do echo …Run Code Online (Sandbox Code Playgroud) 我想执行一个命令,例如
notify-send 'a'
Run Code Online (Sandbox Code Playgroud)
如果我的 Linux 机器闲置了 5 分钟。
闲置,我的意思是被激活的屏幕保护程序用来定义“闲置”的意思。
我不知道这是否属于 SO(因为它是一个编码错误),但我认为你们会更了解所用软件的微妙之处(因此甚至可以考虑 U&L)。
这是最小的代码脚本(请参阅完整脚本的编辑,我这样做是有原因的);
#/bin/bash
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 &
less +F currentOutput.log
Run Code Online (Sandbox Code Playgroud)
它试图做的是在后台运行一个服务器,它输出到一个日志文件。
然后我follow使用less +F. 与您一样,要退出此操作,您必须先按ctrl+c才能按Q。
发生的事情是,当我ctrl+c在less命令中(停止tailing)时,它会以某种方式杀死nohup从顶部开始的服务器!其他没有任何影响。我可以shift+f再次开始拖尾日志(由于服务器被终止,因此不会获得新信息),如果我点击Q脚本的其余部分,则脚本的其余部分将正常执行。
你知道为什么会这样吗?如何避免它/我应该使用的其他东西?
PS
服务器程序可能正在侦听^C,这可能是问题所在;我能做些什么来阻止它吗?就像,当我{SERVERCOMMAND}自己运行(以阻塞方式)时,我可以点击ctrl+ c,这不会立即杀死它;它打印Received ^C signal, shutting down(然后杀死自己)。这就是当我^C进入时发生的事情less(决赛Received ^C signal, shutting down被写入日志)。
PPS
我一直在尝试很多东西(都没有成功);
尝试通过更改将 stdin 与脚本断开连接
nohup {SERVERCOMMAND} > …Run Code Online (Sandbox Code Playgroud)我正在尝试在 Ubuntu 14.04 上安装Virtualenv包装器。但是每当我启动终端时,我都会收到错误提示 bash:
/usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh:没有这样的文件或目录。
我还通过使用检查了 bashrc 脚本gedit ~/.bashrc,但没有这样的行。有谁知道我错在哪里?
我需要使用 unix 脚本或命令执行此操作 /home/user/app/xmlfiles 中有一个 xml 文件,例如
<book>
<fiction type='a'>
<author type=''></author>
</fiction>
<fiction type='b'>
<author type=''></author>
</fiction>
<Romance>
<author type=''></author>
</Romance>
</book>
Run Code Online (Sandbox Code Playgroud)
我想将小说中的作者类型编辑为 local 。
<fiction>
<author type='Local'></author>
</fiction>
Run Code Online (Sandbox Code Playgroud)
我需要单独使用属性 b更改小说标签中的作者类型。请使用 unix shell 脚本或命令帮助我解决这个问题。谢谢 !
当我更新我的 ssh 配置文件以便我可以切换我当前的 github 帐户时,除非我重新启动 iTerm,否则更改将无法正常工作。我正在编写一个脚本来自动化 github 帐户切换,我想让脚本在更新的配置文件中重新加载配置设置。我怎样才能做到这一点?
我知道这个命令的作用:
\ncommand 1>/dev/null 2>&1\nRun Code Online (Sandbox Code Playgroud)\n但是,如果有的话,下面的代码有什么作用呢?
\ncommand 2>&1 1>/dev/null\nRun Code Online (Sandbox Code Playgroud)\n我仍然看到第二个命令的标准错误输出,所以它至少没有达到我预期的效果......
\n这在 Windows/cmd.exe 和 Linux/Bash 上都被重现(我本来想在Unix & Linux而不是 Super\xc2\xa0User 上问这个问题,但我注意到它也可以在 Windows cmd.exe 上重现,所以我猜它在 Super\xc2\xa0User 上比在 Unix 和 Linux 上更适合?)
\n