假设我有一个文本文件,上面写着:
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 和最小正则表达式来实现这一点?
在我的 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.
有没有简单的方法来解决这个问题?我想为我的用户修复它,而不是为所有用户修复它,因为我不想修改操作系统。
什么rm -rf $HOME/.rvm*意思?
我偶然在 Ubuntu 终端的 VPS 服务器上运行了它,现在我的 ruby 应用程序遇到了各种各样的问题。我怎样才能撤消它?或者我需要做什么才能回到我做之前的样子?
在我的外部硬盘驱动器上有两个目录Fun.和Complex_,其中 _ 是一个空格。我无法从垃圾箱中清空或删除它们,但rm -rf我想这样做。两者都没有出现在 OSX 上的 Finder 中,我不记得它们是否出现在 linux 上的 dolphin 中。但它们确实出现在 bash 中。
rm并mv返回No such file or directory。包含文件夹可以移动并带上特殊目录,但不能删除它们。
为什么能ls检测出文件,但rm并mv不能?我该如何修复它们?我\_在复杂文件上使用。(_ 是空格)。
字符一定不是问题。我做了“测试”。和“测试”,我可以使用引号轻松删除它们。但是这些目录仍然无法删除。实际文件本身一定存在非常低级的错误
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) 我在 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脚本):
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”
这可能有什么问题?
我无法将路径作为内部有空格的参数传递。
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 命令将其识别为内部有空格的路径?
在我的 中~/.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 上运行以下命令时,我得到了奇怪的输出,包括旧的 makefile 输出和进程树
ps axuwfw
另外,以下命令有什么用处以及它是如何工作的?
ps axuwfw | grep -v grep | grep -i screen
ps axuwfw | grep -v grep | grep -i tmux
以上两个命令在示例中返回 431 和 7 来自此处,但在我的系统中,它返回一些以前运行过的较旧的 makefile 输出和截断的进程树。
该内核MTTR文档 给出了这样的命令:
echo "base=0xf8000000 size=0x400000 type=write-combining" >| /proc/mtrr
Run Code Online (Sandbox Code Playgroud)
虽然我知道什么>和|做什么,但我从未见过它们结合在一起。谷歌搜索bash >|不是很有帮助。我的实验没有显示echo bla > foo和之间有任何区别echo bla >| foo。