小编use*_*001的帖子

具有非确定性输出的管道

我遇到了一个有时有效有时不起作用的命令,即使在bashshell中快速连续执行多次(我没有在其他 shell 中测试过这种行为)。问题已定位为读取管道末尾语句BEGIN块中的变量awk。在某些执行期间,变量在BEGIN块中被正确读取,而在其他执行期间,操作失败。假设这种异常行为可以被其他人复制(并且不是我的系统出现问题的结果),它的不一致可以解释吗?

将以下名为的文件作为输入tmp

cat > tmp <<EOF
a   a
b   *
aa  a
aaa a
aa  a
a   a
c   *
aaa a
aaaa    a
d   *
aaa a
a   a
aaaaa   a
e   *
aaaa    a
aaa a
f   *
aa  a
a   a
g   *
EOF
Run Code Online (Sandbox Code Playgroud)

在我的系统上,管道

 awk '{if($2!~/\*/) print $1}' tmp | tee >(wc -l | awk '{print $1}' > n.txt) | sort | uniq -c …
Run Code Online (Sandbox Code Playgroud)

io-redirection awk shell-script concurrency

4
推荐指数
2
解决办法
1745
查看次数

bash:为数组预分配内存

可以bash为定义大小的数组预先分配内存吗?我declare -a arr在循环 ( arr+=("$str")) 中迭代地将字符串添加到数组(由 声明),并且想知道是否可以通过预分配适当大小的内存(例如,包含不大于 512 个字符的字符串的 10,000 个元素)来提高性能。

performance bash memory array

3
推荐指数
1
解决办法
1150
查看次数

来自独立进程的非确定性输出由进程替换并发运行

bash v4.1.2(2) 上,以下简单的语句(仅用作演示问题的最小示例)给出了看似随机的输出:

$ for n in {0..1000}; do echo "$n"; done | 
  tee >(head -n2) >(sort -grk1,1 | head -n3) >/dev/null
Run Code Online (Sandbox Code Playgroud)

而以下给出了一致的输出:

$ seq 0 10000 | tee >(head -n2) >(sort -grk1,1 | head -n3) >/dev/null
Run Code Online (Sandbox Code Playgroud)

具体来说,对于第一条语句,该sort命令选择明显随机的连续三元组(例如,226,225,224;52,51,50;174,173,172;等等)。要了解输出的异质性,可以多次运行有问题的命令,然后列出不同可能性的数量:

$ seq -w 0 2000 | while read x; do for n in {0..1000}; do echo "$n"; done | 
  tee >(head -n2) >(sort -grk1,1 | head -n3) >/dev/null | cat > "file_${x}"; done
Run Code Online (Sandbox Code Playgroud)

计算各种输出的出现次数:

$ for f in …
Run Code Online (Sandbox Code Playgroud)

bash process-substitution tee

3
推荐指数
1
解决办法
167
查看次数

增加 imagemagick 内存/磁盘限制

我发现我无法将 imagemagick 的内存/地图/磁盘限制增加到其当前值以上:

$ identify -list resource
Resource limits:
  Width: 16KP
  Height: 16KP
  Area: 128MP
  Memory: 256MiB
  Map: 512MiB
  Disk: 1GiB
  File: 768
  Thread: 4
  Throttle: 0
  Time: unlimited
Run Code Online (Sandbox Code Playgroud)

虽然我可以减少上述值的限制,但我不能增加它们:

$ identify -limit memory 128MiB -list resource | grep Mem
  Memory: 128MiB
$ identify -limit memory 512MiB -list resource | grep Mem
  Memory: 256MiB
$ MAGICK_DISK_LIMIT=0.2GiB identify -list resource | grep Disk
  Disk: 204.8MiB
$ MAGICK_DISK_LIMIT=2GiB identify -list resource | grep Disk
  Disk: 1GiB
Run Code Online (Sandbox Code Playgroud)

如何增加超过默认值?我的系统有 8 GB 的 RAM、8 GB …

imagemagick

2
推荐指数
1
解决办法
4054
查看次数

在 `tmux` 中设置 `xterm-keys` 会影响 `vim` 中的 Shift-Enter

xterm-keys在 tmux 中启用了正常的 xterm 键绑定,例如使用Ctrl 箭头键进行全字移动。

但是,通过启用xterm-keys它会导致Shift-Entervim. 特别是,Shift-Enter在正常模式下按下可切换从光标位置开始的 13 个字母的大写,而与单词边界无关。在命令模式下按这些键会退出该模式,然后切换 13 个字母的大写。通常在 中vim,此按键的结果是向下移动一行(正常模式)或执行任何输入的命令(命令模式),据我所知,这些是默认行为。

我转载空这个效果.tmux.conf.vimrc文件,所以它不是其他配置设置的副作用。

vim tmux xterm

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