标签: bash

如何通过管道从`tail -f`读取一行,然后终止?

我想通过对文件的更改进行跟踪tail -f,然后grep在终止之前打印出与命令匹配的第一行。什么是最简单的方法来做到这一点?到目前为止,我一直在尝试这样的事情:

tail -f foo.log | grep 'bar' | head -1
Run Code Online (Sandbox Code Playgroud)

然而,管道只是挂起,大概是由于缓冲。我也试过

tail -f foo.log | grep --line-buffered 'bar' | head -1
Run Code Online (Sandbox Code Playgroud)

这会打印出该行,但除非我点击 ^C,否则该过程不会终止,大概是因为需要第二行输入来终止head -1。解决这个问题的最佳方法是什么?

unix bash

9
推荐指数
1
解决办法
5758
查看次数

如何在 tmux 中关闭其他窗口?

我写了一些函数.bashrc以便tmux于使用:

#!/bin/bash
# .bashrc

# vim            tmux
#-----  --------------------
tabc()  { tmux kill-window; }
tabe()  { tmux new-window; }
tabf()  { tmux find-window $@; }
tabn()  { tmux next-window; }
tabo()  { ; }                         # <-- How to `tabonly`?
tabp()  { tmux previous-window; }
qa()    { tmux kill-session; }
sp()    { tmux split-window; }
vsp()   { tmux split-window -h; }
on()    { tmux kill-pane -a; }

typeset -fx tab{c,e,f,n,o,p} {,v}sp qa on
Run Code Online (Sandbox Code Playgroud)

我想执行tabonly命令,但不知道如何执行。

bash vim tmux

9
推荐指数
2
解决办法
5993
查看次数

如何对 bashrc / zshrc 进行基准测试并提示渲染时间?

由于我目前在我的提示中尝试新东西,我需要一种方法来判断性能影响是什么。

我如何监控呈现提示所需的时间以及获取 .*rc 所需的时间?

cygwin bash zsh shell bashrc

9
推荐指数
1
解决办法
2449
查看次数

`jobs` 命令不显示任何后台进程

当我在办公室使用桌面时,我run.sh在后台启动了4 次脚本。

run.sh parameter1 &
run.sh parameter2 &
run.sh parameter3 &
run.sh parameter4 &
Run Code Online (Sandbox Code Playgroud)

然后我回到家,在我的笔记本电脑上打开一个终端,ssh 到我办公室的桌面。运行时ps -u jack,我看到了启动的进程:

 3562 pts/1    00:00:00 bash
 4540 pts/2    00:00:00 bash
 4643 pts/3    00:00:00 bash
 4748 pts/4    00:00:00 bash
Run Code Online (Sandbox Code Playgroud)

但是当我输入时jobs,我什么也没有。为什么我可以看到这四个正在运行的后台进程?

顺便说一句,我怎样才能将它们带回我当前的终端,以便我可以杀死其中一个,比如说run.sh parameter4 &

linux bash

9
推荐指数
2
解决办法
3万
查看次数

是否可以在 sendto 文件夹中使用 shell 脚本?

我想使用SendTo文件夹中的 bash shell 脚本。当我将批处理或 exe 的快捷方式放入SendTo文件夹时,它会显示在 shellSend To上下文子菜单中,但是当快捷方式指向 shell 脚本时,它不会。

我正在测试的操作系统是 Win7 Home Premium SP1。该扩展名.sh已与 MinGW 的 bash.exe 相关联。

我的 shell 脚本有一个.sh扩展名,我尝试.sh使用此实用程序取消关联扩展名(我认为 MinGW 最初设置了它,但没有用),并尝试使用以下命令将其重新关联到 bash:

ftype ShellScript=c:\MinGW\msys\1.0\bin\bash.exe -c "'%1' %2"
assoc .sh=ShellScript
Run Code Online (Sandbox Code Playgroud)

在管理员 cmd shell 中。尽管这适用于命令提示符和资源管理器外壳(通过双击),但它不会显示在Send To菜单中,也不会通过直接将文件拖到脚本顶部来接受参数。

有谁知道我会怎么做?

windows-7 send-to bash shell

9
推荐指数
1
解决办法
2064
查看次数

“ls”显示挂载的 NFS 文件夹中没有文件,但“cd”有效

NFS 共享已挂载到/vol/mynfsLinux 客户端。它不显示任何文件夹,ls并且 bash 完成也不起作用/vol/mynfs。但是在更改到子目录后,所有文件都可见。

$ ls /vol/mynfs
total 0
$ cd /vol/mynfs/test
$ ls  # shows all files as expected now.
Run Code Online (Sandbox Code Playgroud)

为什么文件首先不可见,如何使它们始终可见?

linux mount bash nfs

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

无法连接视频 ffmpeg

我有一个位图,我想将它连接到许多视频的前面,作为一种标题屏幕或免责声明屏幕。

我尝试将其转换为与视频其余部分具有相同属性的视频。所以首先我反省视频:

ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 11 2014 22:50:38 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libavresample   1.  2.  0 /  1. …
Run Code Online (Sandbox Code Playgroud)

video bash ffmpeg mpeg concatenation

9
推荐指数
1
解决办法
756
查看次数

使用 mktemp --dry-run 时我应该担心什么

我一直在尝试创建一个临时命名的 fifo 并在引用Bash: create anonymous fifo我看到他们正在使用mktemp -u来获取 fifo 的文件名。手册页指出这是不安全的。

-u, --dry-run
       do not create anything; merely print a name (unsafe)
Run Code Online (Sandbox Code Playgroud)

为什么这是不安全的,我如何负责任地使用这种技术?

bash

9
推荐指数
1
解决办法
1860
查看次数

使用内置的 Bash 运行 `exec`

我定义了一个 shell 函数(我们称之为clock),我想将它用作另一个命令的包装器,类似于time函数,例如clock ls -R.

我的 shell 函数执行一些任务,然后以exec "$@".

我希望这个函数即使使用 shell 内置函数也能工作,例如clock time ls -R应该输出内置函数的结果time,而不是/usr/bin/time可执行文件。但exec最终总是运行命令。

如何让我的 Bash 函数作为一个也接受 shell 内置函数作为参数的包装器工作?

编辑:我刚刚了解到它time不是内置的 Bash,而是与管道相关的特殊保留字。我仍然对内置解决方案感兴趣,即使它不适用于time,但更通用的解决方案会更好。

bash shell command-line

9
推荐指数
1
解决办法
2534
查看次数

从文件中获取标准输入但仍然显示在终端中

我有一个程序需要我在程序运行时输入数据。想象一下它是这样的:

$ ./program
Hi there. What's your name? Zambezi
What is your quest? To make a program which runs nicely
What is your favourite color? Red
...
Run Code Online (Sandbox Code Playgroud)

现在,我有许多测试输入来运行我的程序。它们都包含以下内容:

Arthur, King of the Britons
To seek the Holy Grail
...
Run Code Online (Sandbox Code Playgroud)

然而,我的一些测试脚本失败了,不幸的是我很难准确地破译它们失败的地方,因为我的终端看起来像这样:

$ ./program < arthur.txt
Hi there. What's your name?What is your quest?What is your favourite color?...
Run Code Online (Sandbox Code Playgroud)

有没有办法我仍然可以stdin通过文件提供输入,但仍然让终端看起来好像我已经输入了所有内容?

如果重要的话,Linux Mint 16 是我的操作系统。

linux terminal bash

9
推荐指数
2
解决办法
1138
查看次数

标签 统计

bash ×10

linux ×3

shell ×3

bashrc ×1

command-line ×1

concatenation ×1

cygwin ×1

ffmpeg ×1

mount ×1

mpeg ×1

nfs ×1

send-to ×1

terminal ×1

tmux ×1

unix ×1

video ×1

vim ×1

windows-7 ×1

zsh ×1