为什么大多数 Linux 程序都是用 C 编写的?为什么它们不是用更新的 C++ 编写的?
请解释为什么最后四个echo语句显示1 4 5 6?我偶然碰到了一次,但我现在很好奇为什么会发生这种行为。
这些语句按预期工作(对我而言)。
$ echo [ 9876543210 ]
[ 9876543210 ]
$ echo [237890]
[237890]
Run Code Online (Sandbox Code Playgroud)
这些 echo 语句始终显示 1 4 5 6。这些数字有什么特别之处吗?
$ echo [9876543210]
1 4 5 6
$ echo [abcd9876543210ghi]
1 4 5 6
$ echo [-123456-]
1 4 5 6
$ echo [-7654321-]
1 4 5 6
Run Code Online (Sandbox Code Playgroud)
谢谢!
rm
命令的角度来看的。这个问题是从echo
命令的感知“奇怪行为”的角度来看的。两者的基本答案都是通配。搜索echo
命令问题的人不会轻易找到rm
问题,但更可能会在这里登陆。我正在尝试获取包含在特定文件夹中的目录列表。
鉴于这些示例文件夹:
foo/bar/test
foo/bar/test/css
foo/bar/wp-content/plugins/XYZ
foo/bar/wp-content/plugins/XYZ/js
foo/bar/wp-content/plugins/XYZ/css
baz/wp-content/plugins/ABC
baz/wp-content/plugins/ABC/inc
baz/wp-content/plugins/ABC/inc/lib
baz/wp-content/plugins/DEF
bat/bar/foo/blog/wp-content/plugins/GHI
Run Code Online (Sandbox Code Playgroud)
我想要一个将返回的命令:
XYZ
ABC
DEF
GHI
Run Code Online (Sandbox Code Playgroud)
本质上,我正在寻找 wp-content/plugins/ 中的文件夹
Usingfind
使我最接近,但我不能使用-maxdepth
,因为该文件夹离我正在搜索的位置很远。
运行以下命令以递归方式返回所有子目录。
find -type d -path *wp-content/plugins/*
foo/bar/wp-content/plugins/XYZ
foo/bar/wp-content/plugins/XYZ/js
foo/bar/wp-content/plugins/XYZ/css
baz/wp-content/plugins/ABC
baz/wp-content/plugins/ABC/inc
baz/wp-content/plugins/ABC/inc/lib
baz/wp-content/plugins/DEF
bat/bar/foo/blog/wp-content/plugins/GHI
Run Code Online (Sandbox Code Playgroud) Bash 手册页描述了使用${!a}
返回名称为a
(间接级别)内容的变量的内容。
我想知道如何使用这个返回数组中的所有元素,即,
a=(one two three)
echo ${a[*]}
Run Code Online (Sandbox Code Playgroud)
返回
one two three
Run Code Online (Sandbox Code Playgroud)
我想要:
b=a
echo ${!b[*]}
Run Code Online (Sandbox Code Playgroud)
返回相同。不幸的是,它没有,而是返回0
。
更新
鉴于回复,我现在意识到我的例子太简单了,因为当然,像:
b=("${a[@]}")
Run Code Online (Sandbox Code Playgroud)
将完全实现我所说的我需要的。
所以,这就是我想要做的:
LIST_lys=(lys1 lys2)
LIST_diaspar=(diaspar1 diaspar2)
whichone=$1 # 'lys' or 'diaspar'
_LIST=LIST_$whichone
LIST=${!_LIST[*]}
Run Code Online (Sandbox Code Playgroud)
当然,仔细阅读 Bash 手册页表明这不会按预期工作,因为最后一行只是返回“数组”的索引$_LIST
(根本不是数组)。
在任何情况下,以下应该做的工作(如所指出的):
LIST=($(eval echo \${$_LIST[*]}))
Run Code Online (Sandbox Code Playgroud)
或者......(我最终走的路线):
LIST_lys="lys1 lys2"
...
LIST=(${!_LIST})
Run Code Online (Sandbox Code Playgroud)
当然,假设元素不包含空格。
当我使用 grep 命令时,会拾取所有出现的单词,即使它们是其他单词的一部分。例如,如果我使用 grep 来查找单词 'the' 的出现,它也会突出显示 'theatre' 中的 'the'
有没有办法调整 grep 命令,使其只提取完整的单词,而不是单词的一部分?
我试图从2017-03-08T19:41:26Z
.
所需的输出是 2017-03-08。
这里有各种类似的问题,但我认为没有一个能很好地回答这个问题。
我有一个本地目录 ( www
),它必须在远程服务器上完全镜像,我需要确认它们是精确的副本。
www
包含指向内部其他文件的符号链接www
(链接指向常规文件和目录)。此命令将比较两个版本的www
,不包括本地 svn 目录作为奖励,并仅打印不同的文件:
[local]$ rsync -rvnc --exclude=.svn/ --delete www/ remote:/var/www/
Run Code Online (Sandbox Code Playgroud)
但它不遵循符号链接,只是报告它们不是常规文件。所以,我需要取消引用符号链接,并比较它们的目标。这rsync -rvncL
也rsync -rvncK
没有 --L
打印出许多没有区别的文件(无论如何我都可以看到),并且-K
什么都不做。有任何想法吗?
考虑:
numbers="1 111 5 23 56 211 63"
max=0
for num in ${numbers[@]}; do
[ $num -gt $max ]\
&& echo "old -> new max = $max -> $num"\
&& max=$num
done | tee logfile
echo "Max= $max"
Run Code Online (Sandbox Code Playgroud)
如果我删除| tee logfile
max 变量正确打印为 211,但如果我将它留在我得到Max= 0
.
到底是怎么回事?
我在unix中有以下文件,我想根据文件名中的日期和时间对文件进行排序
ABC_XYZ。20170201。223147 .txt ABC_XYZ。20170201。223146 .txt ABC_XYZ。20170127。223141 .txt ABC_XYZ。20170125。223139 .txt ABC_XYZ。20170214。223134 .txt
我期待以下作为输出
ABC_XYZ。20170125。223139 .txt ABC_XYZ。20170127。223141 .txt ABC_XYZ。20170201。223146 .txt ABC_XYZ。20170201。223147 .txt ABC_XYZ。20170214。223134 .txt
我尝试使用sort -k
and sort -n
,也许我没有以正确的方式使用它们。
我想制作一个缓冲区约为 5MB 的 FIFO 管道。我知道 linux 中默认的 FIFO 管道缓冲区最大值约为 1MB。我看到它位于 /proc/sys/fs/pipe-max-size
我尝试将其设置如下:
sudo sysctl fs.pipe-max-size=4194304
Run Code Online (Sandbox Code Playgroud)
然后我看到值确实被改变了:
$ cat /proc/sys/fs/pipe-max-size
4194304
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个新的 FIFO 管道,但我没有注意到性能有任何改进。它似乎以与之前的 1MB FIFO 管道相同的速度填充。所以我不确定我的新 FIFO 管道实际上有一个 4MB 的缓冲区。
我如何 1) 增加系统 FIFO 管道缓冲区最大值和 2) 创建一个使用此缓冲区最大值的 FIFO 管道?