标签: bash

两个目录之间的差异并仅保留未更改的目录

我需要区分两个目录:

 A: /path1/
 B: /path2/
Run Code Online (Sandbox Code Playgroud)
  1. 目录 A 包含也包含在 B 中的所有文件和子目录。
  2. A(及其子目录)中的文件可以与 B 中的等效文件具有不同的内容。
  3. 目录 A(及其子目录)还有 B 中不存在的额外文件。

我想实现的是:

  • 仅保留 A 中与 B 中的文件不同的文件以及 B 中不存在的所有额外文件。
  • 删除 A 中不遵守先前规则的所有其他文件。

bash diff macos

5
推荐指数
1
解决办法
1851
查看次数

bash 可以从两个单独的命令中使用相同的 fifo 吗?

我有一个巨大的数据源,我正在使用一些greps 进行过滤。

这基本上是我现在正在做的事情:

#!/bin/bash
param1='something'
param2='another'
param3='yep'
echo $(avro-read /log/huge_data | grep $param1 | grep "$param2-" | grep $param3 | wc -l) / $(avro-read /log/ap/huge_data | grep $param1 | grep -v "$param2-" | grep $param3 | wc -l) | bc -l
Run Code Online (Sandbox Code Playgroud)

请注意我是如何进行两次基本相同的过滤(第二次只有一个差异),对每个进行计数,然后除以最终结果。这绝对是一件很麻烦的事情,但我想尝试加快一点速度,并且只执行一次初始过滤而不使用临时文件。

我尝试使用 fifo,但我不确定是否有可能在一个脚本中读取两个进程,以及是否有第三个进程“等待”,直到两个进程都完成以计算最终结果。我也研究过 using tee,但又不确定如何同步生成的子进程。

编辑:自己使用https://superuser.com/a/561248/43649解决了这个问题,但将另一个建议标记为答案。

bash grep fifo

5
推荐指数
1
解决办法
553
查看次数

如何在 Linux Mint 13 中扩展 bash 历史?

如何在 Linux Mint 13 中增加命令历史记录大小?

Linux Mint 13 中没有 ~./bash_profile

和改变

~/.profile 
Run Code Online (Sandbox Code Playgroud)

包括类似的东西

HISTSIZE=4050
HISTFILESIZE=4050
Run Code Online (Sandbox Code Playgroud)

也没有增加历史记录大小。

请指教。

丹尼斯

bash command-line

5
推荐指数
1
解决办法
1872
查看次数

为什么我只能在 Cygwin 下的屏幕中使用 Ctrl-Z 暂停?

我在 Windows 7 中使用 Cygwin 和ConEmuCtrlZ除非我使用 GNU/Screen,否则我无法使用 bash 挂起程序。

我已经看到使用mintty 的建议,并且有效,但我不确定为什么会有所不同。有没有办法CtrlZ在使用 ConEmu 的同时开始工作?

windows-7 cygwin bash suspend conemu

5
推荐指数
1
解决办法
3257
查看次数

如何在启动时为普通用户运行脚本?

我想在 CentOS 6 启动时运行一个 bash 脚本。我在/etc/init.d/目录中添加了脚本,但所有这些脚本都是由 root 运行的。我想为任何用户运行脚本。

linux bash cron

5
推荐指数
1
解决办法
1万
查看次数

是否可以在不杀死运行循环的 bash 实例的情况下终止 bash 中的循环?

假设我执行(在交互式 bash shell 中)一个循环,它按顺序生成一堆进程,如下所示。

for i in `seq 15 42`; do if [ -f F$i.flv.mp3 ]; then play F$i.flv.mp3; fi; done 
Run Code Online (Sandbox Code Playgroud)

如果我用 杀死当前进程Control-C,它只会进入循环中的下一个进程,我必须分别杀死由循环迭代启动的进程。

在不杀死我的交互式 shell 的情况下,我可以停止循环生成或按顺序生成更多进程吗?

linux bash shell command-line process

5
推荐指数
1
解决办法
1377
查看次数

无法让 Vim 将 CTRL+S 重新映射到 `:w`

我一直试图通过编辑我的文件来让 Vim 重新映射CTRL+ S(或 ^S),但是它不起作用。:w.vimrc

这是我目前的~/.vimrc配置:

nmap <c-s> :w<CR>
imap <c-s> <Esc>:w<CR>
imap <c-s> <Esc><c-s>
Run Code Online (Sandbox Code Playgroud)

我读到CTRL+S可以运行一个冻结终端的命令,但是我似乎没有遇到过这种情况。

如果我按CTRL+ S,则什么也不会发生。如果我这样做了ESC并且:q我被告知我还​​没有保存更改。

:current告诉我user vimrc file: "$HOME/.vimrc"

bash vim gnome-terminal

5
推荐指数
1
解决办法
1410
查看次数

telnet 连接失败:连接被外部主机关闭

我尝试使用 telnet 连接到本地主机:

% telnet localhost 6311
Run Code Online (Sandbox Code Playgroud)

此连接成功,但是当我通过计算机的外部 IP 连接时,连接失败:

% telnet x.x.x.x 6311
Trying x.x.x.x...
Connected to x.x.x.x
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

可能有什么问题?

linux telnet bash ubuntu

5
推荐指数
1
解决办法
6万
查看次数

如何在新的屏幕窗口中执行 bash 别名?

在我的 .screenrc 中,我有几行类似于以下内容:

screen -t qf1 bash
Run Code Online (Sandbox Code Playgroud)

所以对于那个窗口,我目前正在执行 bash。相反,我想执行以下别名“qf”,这是一个为某个 URL 执行 lynx 的 bash 别名。

但是,我收到以下错误:

"Cannot exec 'qf': No such file or directory"
Run Code Online (Sandbox Code Playgroud)

我知道它可能与路径有关,但提供:

screen -t qf1 lynx www.google.com
Run Code Online (Sandbox Code Playgroud)

也不行。我知道我错过了一些明显的东西。谢谢!

linux bash

5
推荐指数
1
解决办法
2492
查看次数

zsh vared 命令的 bash 等价物是什么?

我看到使用zsh vared您可以即时编辑指定的环境变量。bash是否有等效的命令?
谢谢

bash zsh

5
推荐指数
1
解决办法
1303
查看次数

标签 统计

bash ×10

linux ×4

command-line ×2

conemu ×1

cron ×1

cygwin ×1

diff ×1

fifo ×1

gnome-terminal ×1

grep ×1

macos ×1

process ×1

shell ×1

suspend ×1

telnet ×1

ubuntu ×1

vim ×1

windows-7 ×1

zsh ×1