这两种在所有子目录中递归搜索文件的方法中,哪个更快/更好?
find . -regex ".*/.*abc.*"
Run Code Online (Sandbox Code Playgroud)
或者
find . | grep ".*abc.*"
Run Code Online (Sandbox Code Playgroud) 我知道grep -F可以搜索文字字符串,但我想做类似的事情
while read word; do
grep -F "^$word$" FILE;
done < wordlist
Run Code Online (Sandbox Code Playgroud)
即话需要按字面处理,在同一时间,^并$需要满足的条件。
这该怎么做?
我想将vi命令的输出导出:set fileencoding到另一个文件。似乎vi文件编码检测比file命令好。
怎么做?
我可以写一个宏:
:set fileencoding
:q
Run Code Online (Sandbox Code Playgroud)
但这不会导出输出。
有什么区别:
if echo " T " | grep -q " F "; then echo FOUND; else echo NOT; fi
Run Code Online (Sandbox Code Playgroud)
和:
if ""; then echo FOUND; else echo NOT; fi
Run Code Online (Sandbox Code Playgroud)
第一个命令的输出是:
NOT
Run Code Online (Sandbox Code Playgroud)
第二个命令的输出是:
: command not found
NOT
Run Code Online (Sandbox Code Playgroud)
我认为两者都应该以相同的方式行事。
如果我jobs -l在命令提示符下运行,它会显示正在运行的作业的状态,但如果我在文件 ./tmp.sh 下运行
#! /bin/bash
jobs -l
Run Code Online (Sandbox Code Playgroud)
它显示空输出。
为什么会这样,我如何获取有关 shell 脚本中特定作业状态的信息?
在我输入的目录中vi,然后tab(两次),这给了我
user$ vi
CMakeFiles/ global/ libs/
Run Code Online (Sandbox Code Playgroud)
而ls后跟 2 tabs 给了我
user$ ls
! core.log CMakeFiles/ global/ libs/ _jni/
Run Code Online (Sandbox Code Playgroud)
(注意:ls 的别名为 `ls -Ah --color=auto',_jni 是一个符号链接,并且没有任何文件被隐藏。)
我认为vi在制表符完成期间不显示任何文件,而只显示目录。为什么会这样?如何使vi行为与ls? 在浏览了 SE 上的一篇文章后,我将以下行放在 ~/.vimrc 中。但在这种情况下它似乎没有任何作用。
set wildmode=longest,list,full
set wildmenu
Run Code Online (Sandbox Code Playgroud)
版本vi:VIM - Vi 改进版 7.3.429
版本ls:ls (GNU coreutils) 8.13
当我们这样做时mount -o loop filename.iso /path/to/mountdir,存储文件所需的内存是两倍吗?如果不使用资源,我可以一次挂载数百个 ISO 吗?比如,它是指向原始文件的软链接还是 ISO 中文件的副本?
我正在将一些文件从外部驱动器复制到运行 Ubuntu 的桌面。我可以看到显示复制过程的“文件操作”对话框。
我如何在ps aux | grep命令中找到这个特定的进程?我以为这是一些cp命令,但没有cp运行命令!那么这种复制是如何工作的呢?请提供任何指示。
当我在ls命令后对参数使用制表符完成时,它可以工作,但是当我在某个脚本参数之后使用它时(参见下面的第二个示例),它不起作用。我已经检查过选项卡完成是否已启用。如何为所有命令运行选项卡完成?
注意:screen如果这很重要,我将在会话中(在 Ubuntu 上)运行它。
user$ echo $SHELL
/bin/bash
user$ grep completion ~/.bashrc
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
user$
user$ ls test[TAB]
test.log1
test.log2
test.log4
test.log5
user$ ./script.sh >& test[TAB] <-- "no output"
Run Code Online (Sandbox Code Playgroud)
Bash 版本:GNU bash,版本 4.3.11(1)-release (x86_64-pc-linux-gnu)
我正在一个接一个地整理大量文件。使用sort -o file file. for 循环在中途停止,在重新启动之前我想使用 sort 的-c选项来加速排序。但它说-co选项不兼容。为什么会这样?
sort --version
sort (GNU coreutils) 8.13
OS: Ubuntu 12.10
Run Code Online (Sandbox Code Playgroud) 我正在将目录从机器B同步到机器A。rsync命令在机器B上运行。
在机器A 上,我可以在rsync不ssh进入机器B 的情况下获得有关此过程的哪些信息(进度/下载的数据量等)?
我正在学习 GNU 并行并尝试了以下操作:
$ for i in {1.txt,2.txt}; do time wc -l $i; done
100 1.txt
real 0m0.010s
user 0m0.000s
sys 0m0.010s
10000012 2.txt
real 0m0.069s
user 0m0.050s
sys 0m0.018s
Run Code Online (Sandbox Code Playgroud)
然后我用 重新运行上述命令parallel,但它减慢了速度。为什么?
$ for i in {1.txt,2.txt}; do time parallel --nonall wc -l $i; done
100 1.txt
real 0m0.325s
user 0m0.192s
sys 0m0.042s
10000012 2.txt
real 0m0.305s
user 0m0.220s
sys 0m0.043s
Run Code Online (Sandbox Code Playgroud) bash ×3
grep ×3
autocomplete ×2
process ×2
shell ×2
vi ×2
cp ×1
find ×1
gnu-parallel ×1
job-control ×1
jobs ×1
mount ×1
nautilus ×1
remote ×1
rsync ×1
shell-script ×1
sort ×1
ssh ×1
vim ×1