我想观看电影mplayer,从bash背景,就像我跟所有的程序做的,从来没有出现过任何问题:
mplayer Kick* &
例如,如果您想看 Kickboxer。但是,这不会打开窗口,而是说该过程已停止。我可以用 来打开电影窗口fg mplayer,但是 CLI 不可用。(这是——据我所知——相当于mplayer Kick*)。
我能够解决这样的问题:
$(mplayer Kick*) &
但是后来我得到了两个额外的 bash(我用 看到了这个ps)。这不是一个真正的问题,因为当我Alt-F4电影时那些关闭,但它仍然是不可取的。
我想我最讨厌必须输入那些额外的东西,所以如果你想出一个别名或函数,那就没问题了。尽管如此,了解正在发生的事情不会伤害我。
我在 tmux 中有一个带有 vim 和 Lynx 的拆分窗口设置。我正在尝试构建一个脚本,以便我可以向 vim 发送自定义命令,该命令将保存我正在处理的脚本,将焦点切换到 Lynx 窗格,刷新 Lynx 页面,然后切换回 vim 窗格。
是否有执行此操作的现有脚本?如果没有,构建此脚本的最佳方法是什么?
function cmakerel {
if expr match "$PWD" '*bld*' >/dev/null ; then
cmake -D....
else
echo "Wrong directory!"
fi
}
Run Code Online (Sandbox Code Playgroud)
cmakerel将调用cmake命令,如果PWD有bld其名称。
但是,我通常会像这样调用这个命令: cmakerel && make check
如何修改上面的代码,使其在失败时返回一个值,从而make check不会调用第二部分?
可能返回某种非零值应该有效。
我正在尝试将 RHEL5 中的默认 shell 从 zsh 更改为 bash。我尝试了这个thead 中提到的方法。通过键入sudo /usr/bin/chsh -s /bin/bash,系统会说sudo: /usr/bin/chsh: command not found。但是 /usr/bin/chsh 就在那里。我发现的另一种方法是用我的 usrid 编辑 /etc/passwd 文件,但它禁止我编辑它。有什么建议?
我在 linux 中有一个带有 bash shell 的 xterm。当我echo $PATH,它显示一个目录,我想知道谁把这个目录放在PATH. 我怎样才能知道?
谢谢!
我使用命令:
cm1 cm2 arg1 arg2 'argument 3'
Run Code Online (Sandbox Code Playgroud)
它首先转到cm1,然后重定向arg1 arg2 'argument 3'到另一个文件。
/usr/bin/cm1:#! /bin/bash
# some script here
shift
cm2 $@
Run Code Online (Sandbox Code Playgroud)
/usr/bin/cm2:echo $#
# This returns 4 in lieu of 3 because the white space in 'argument 3' causes the argument to be split into two arguments.
Run Code Online (Sandbox Code Playgroud)
那么,如何将参数从一个脚本传递到另一个脚本并确保不会将空格作为参数分隔符读取?
我想使用 netcat 作为代理来记录 http 请求和对文件的响应,然后跟踪这些以检查流量。想想wireshark。
尝试了以下其中“fifo”是命名管道,“in”和“out”是文件,端口 8080 上的 netcat 代理,端口 8081 上的服务器。
虽然是真的;做猫fifo | nc -l -p 8080 | tee -a in | nc 本地主机 8081 | tee -a out 1>fifo; 完毕
问题:
Netcat 在第一次请求后停止响应(忽略循环?)。
localhost [127.0.0.1] 8081 (tproxy) : Connection refused如果服务器在 8081 上不可用,Netcat 将失败并显示 msg 。 问:是否可以在发出请求时“延迟”连接到 8081?即我不想让 8081 在 netcat 启动时运行。
我发现自己在很长一段时间内一直在cd some_dir快速ls完成,并且一直在尝试编写一个 bash 别名来让我这样做,例如:
alas cd="cd $@; ls";
Run Code Online (Sandbox Code Playgroud)
我还尝试按照此页面的建议定义自己的 shell 函数:
cd() { cd "$@"; ls; }
Run Code Online (Sandbox Code Playgroud)
但是这个问题是,如果我尝试像这样使用它:
cd Documents
Run Code Online (Sandbox Code Playgroud)
外壳以 退出[Process completed],使外壳无用......那么我应该如何解决这个问题?
我已经玩了一段时间的 bash 自动完成功能,但找不到解决我的问题的方法。我有一个包含如下子文件夹的项目目录:
现在,我想有一个命令,把它cdproject在那里我可以cd在我的项目目录及子目录内的任何子文件夹。这个命令应该提供一个自动完成功能,我可以在其中输入cdproject pr --> TAB TAB,然后获取一个列表,例如ruby/project1, ruby/project2, rails/project3...
我的问题是如何处理子目录。程序cdproject看起来像这样
#!/bin/bash
cd $1
Run Code Online (Sandbox Code Playgroud)
在cdproject-autocompletion.bash这个样子的
_cdproject()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(ls ~/Dropbox/projects)
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -o default -o nospace -F _o o
Run Code Online (Sandbox Code Playgroud)
而我的里面.bash_profile,我的来源cdproject-autocompletion.bash与
source ~/cdproject-autocompletion.bash
所以任何人的想法,如何实现这一目标?也许opts应该返回 subdir 结构,ruby/project1但是自动完成应该只对最后一部分起作用,即实际的项目名称。我不知道这怎么可能。
如何删除每一行中的重复项,例如这里?
1 1 1 2 1 2 3
5 5 4 1 2 3 3
Run Code Online (Sandbox Code Playgroud)
我想得到这个输出:
1 2 3
5 4 1 2 3
Run Code Online (Sandbox Code Playgroud)
有很多行(100,000),在每一行中我都想要唯一的值。Perl 可能是最快的,但我怎样才能在 Perl 或 Bash 中做到呢?