标签: bash

Grep 获得除匹配之外的所有内容

假设我有一个文本文件,上面写着:

Hello my name is agz.
I am asking a question that is important.
Run Code Online (Sandbox Code Playgroud)

如果我输入: grep -v "is" /path/to/file,我应该没有输出,因为两行都有“is”。

如果我输入:grep -o "is" /path/to/file,我应该得到:

is
is
Run Code Online (Sandbox Code Playgroud)

但是我想得到:

Hello my name agz.
I am asking a question that important.
Run Code Online (Sandbox Code Playgroud)

(只是缺少的是)有没有办法使用 grep 和最小正则表达式来实现这一点?

bash grep regex

0
推荐指数
1
解决办法
5861
查看次数

bash 选项卡完成对 shell 脚本不起作用

在我的 Fedora 19 系统上,当我sh在命令行的开头有一个时,选项卡完成对 bash 脚本不起作用,除非脚本文件名以.sh.

也就是说,如果我输入:

$ sh file<tab>
Run Code Online (Sandbox Code Playgroud)

当前目录包含:

filename
Run Code Online (Sandbox Code Playgroud)

...标签完成不起作用。

但是如果当前目录包含:

filename.sh
Run Code Online (Sandbox Code Playgroud)

完成工作。

补全适用于其他所有内容,因此我怀疑有一个自定义补全程序用于以 开头的命令,sh它正在寻找以.sh.

有没有简单的方法来解决这个问题?我想为我的用户修复它,而不是为所有用户修复它,因为我不想修改操作系统。

bash tab-completion

0
推荐指数
1
解决办法
2964
查看次数

如何撤消 rm -rf $HOME/.rvm*

什么rm -rf $HOME/.rvm*意思?

我偶然在 Ubuntu 终端的 VPS 服务器上运行了它,现在我的 ruby​​ 应用程序遇到了各种各样的问题。我怎样才能撤消它?或者我需要做什么才能回到我做之前的样子?

bash vps rvm

0
推荐指数
1
解决办法
696
查看次数

bash - 以 . 并且无法删除空格

在我的外部硬盘驱动器上有两个目录Fun.Complex_,其中 _ 是一个空格。我无法从垃圾箱中清空或删除它们,但rm -rf我想这样做。两者都没有出现在 OSX 上的 Finder 中,我不记得它们是否出现在 linux 上的 dolphin 中。但它们确实出现在 bash 中。

rmmv返回No such file or directory。包含文件夹可以移动并带上特殊目录,但不能删除它们。

为什么能ls检测出文件,但rmmv不能?我该如何修复它们?我\_在复杂文件上使用。(_ 是空格)。

编辑

字符一定不是问题。我做了“测试”。和“测试”,我可以使用引号轻松删除它们。但是这些目录仍然无法删除。实际文件本身一定存在非常低级的错误

sagan:Math ptwales$ ls
Complex 
sagan:Math ptwales$ ls -i
ls: Complex : No such file or directory
sagan:Math ptwales$ ls -idF *
ls: Complex : No such file or directory
sagan:Math ptwales$ find . -name * -print0
find: ./Complex …
Run Code Online (Sandbox Code Playgroud)

linux unix bash filenames macos

0
推荐指数
1
解决办法
1540
查看次数

Shell 将 IFS=$'\n' 解释为 IFS='n'

我在 Ubuntu 12.04 LTS 服务器上使用 Bash shell,似乎 IFS=$'\n' 被视为 IFS='n'。

正在使用的脚本:

concat=$(echo -n "concat:" && find /home/jhvisser/bin/Streamripper_rips -name '*.aac' -mtime -1 -exec echo -n "{}|" \;)
echo $concat
IFS=$'\n'
for i in =$(echo "$concat" | sed -e 's/^concat://' -e 's/|$//' -e 's/|/\n/g');
    do rm "$i"
done
Run Code Online (Sandbox Code Playgroud)

的输出$(echo "$concat" | sed -e 's/^concat://' -e 's/|$//' -e 's/|/\n/g')

rm: cannot remove `=/home/jhvisser/bi': No such file or directory
rm: cannot remove `/Streamripper_rips/Safe A': No such file or directory
rm: cannot remove …
Run Code Online (Sandbox Code Playgroud)

bash shell ubuntu

0
推荐指数
1
解决办法
860
查看次数

使用 EXPECT 的问题是 BASH shell 脚本

这是代码(bash脚本):

echo "Pass for router:"
read -s pass


/usr/bin/expect <<EOD
spawn ssh 192.168.10.1 -l root 'opkg list-installed' > list-installed.txt
#echo @pass
expect "*password:*"
send "$pass\r"
interact
EOD
Run Code Online (Sandbox Code Playgroud)

问题是它什么都不返回。它不会创建本地文件“list-installed.txt”

这可能有什么问题?

bash bash-scripting expect

0
推荐指数
1
解决办法
7925
查看次数

在 OS X 中以空格作为参数传递路径

我无法将路径作为内部有空格的参数传递。

keyLocation="/Users/vladimir/Google\ Drive/file.pem"
ssh -i $keyLocation root@192.168.1.1;
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

警告:无法访问身份文件 /Users/vladimir/Google:没有此类文件或目录。

基本上在分配 keyLocation 本身变成 "/Users/vladimir/Google Drive/file.pem" (no ) 之后,当它尝试使用 $keyLocation 作为参数时,它会将其作为

ssh -i /Users/vladimir/Google Drive/file.pem root@192.168.1.1
Run Code Online (Sandbox Code Playgroud)

如何让 ssh 命令将其识别为内部有空格的路径?

bash macos

0
推荐指数
1
解决办法
1660
查看次数

麻烦“生成”bash别名

在我的 中~/.shortcuts,我有一些常用目录的符号链接。

.bashrc(OS X)中,我这样做:

ls -1 ~/.shortcuts | xargs -I {} alias {}="'cd -P ~/.shortcuts/{}'"

当我alias在终端中运行时,输出显示新添加的别名,但没有一个别名有效。为什么?

我有一些别名,如alias ll='ls -l'.bash_aliases. 这样. ~/.bash_aliases.bashrc负载我的自定义别名得很清楚。但是,当我将xargs -t输出重定向到 tmp 文件并在 bashrc 中获取它(就像我的 source 一样.bash_aliases)时,它不起作用。

我究竟做错了什么?

linux bash shell bash-alias macos

0
推荐指数
1
解决办法
91
查看次数

ps axuwfw 返回什么?

在 linux 上运行以下命令时,我得到了奇怪的输出,包括旧的 makefile 输出和进程树

ps axuwfw

另外,以下命令有什么用处以及它是如何工作的?

ps axuwfw | grep -v grep | grep -i screen

ps axuwfw | grep -v grep | grep -i tmux

以上两个命令在示例中返回 431 和 7 来自此处,但在我的系统中,它返回一些以前运行过的较旧的 makefile 输出和截断的进程树。

linux bash grep ps tmux

0
推荐指数
1
解决办法
120
查看次数

Bash:什么是 echo xy &gt;| foo 吗?

内核MTTR文档 给出了这样的命令:

echo "base=0xf8000000 size=0x400000 type=write-combining" >| /proc/mtrr
Run Code Online (Sandbox Code Playgroud)

虽然我知道什么>|做什么,但我从未见过它们结合在一起。谷歌搜索bash >|不是很有帮助。我的实验没有显示echo bla > foo和之间有任何区别echo bla >| foo

linux bash command-line

0
推荐指数
1
解决办法
242
查看次数