小编cpr*_*prn的帖子

为什么在使用 $RANDOM 时会得到分布不均的结果?

我在维基百科$RANDOM上阅读了 RNG并在TLDP运行,但它并没有真正解释这个结果:

$ max=$((6*3600))
$ for f in {1..100000}; do echo $(($RANDOM%max/3600)); done | sort | uniq -c
  21787 0
  22114 1
  21933 2
  12157 3
  10938 4
  11071 5
Run Code Online (Sandbox Code Playgroud)

为什么大约 2 倍以上的值更倾向于 0、1、2,而不是 3、4、5,但是当我更改最大模数时,它们几乎平均分布在所有 10 个值上?

$ max=$((9*3600))
$ for f in {1..100000}; do echo $(($RANDOM%max/3600)); done | sort | uniq -c
  11940 0
  11199 1
  10898 2
  10945 3
  11239 4
  10928 5
  10875 6
  10759 7
  11217 8
Run Code Online (Sandbox Code Playgroud)

random

15
推荐指数
2
解决办法
3682
查看次数

为什么我不能`tail -f /proc/$pid/fd/1`?

我写了一个简单的脚本echo-es 它的 PID:

#/bin/bash

while true; do
    echo $$;
    sleep 0.5;
done
Run Code Online (Sandbox Code Playgroud)

3844在一个终端中运行上述脚本(一遍又一遍),并尝试在另一个终端中运行tail文件描述符:

$ tail -f /proc/3844/fd/1
Run Code Online (Sandbox Code Playgroud)

它不会在屏幕上打印任何内容并挂起直到^c. 为什么?

此外,所有 STD 文件描述符 (IN/OUT/ERR) 都链接到相同的 pts:

$ ls -l /proc/3844/fd/
total 0
lrwx------ 1 mg mg 64 sie 29 13:42 0 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 1 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 2 -> /dev/pts/14
lr-x------ 1 mg mg 64 sie 29 13:42 …
Run Code Online (Sandbox Code Playgroud)

linux bash file-descriptors proc

10
推荐指数
1
解决办法
1万
查看次数

我可以在`less`中同时设置(输入和输出)字符集吗?

我可以告诉less以 UTF-8 输出字符:

export LESSCHARSET=UTF-8
Run Code Online (Sandbox Code Playgroud)

但随后它也尝试将文件读取为 UTF-8。

我可以告诉它以 ISO-8859-2 (latin2) 格式读取文件,但像我在vimwithencfencsettings 中所做的那样将它们显示为 UTF-8吗?

less character-encoding

5
推荐指数
1
解决办法
66
查看次数

如何防止`git difftool`调用另一个`vimdiff`?

我已经git配置(如下所示)使用vimdiffasdifftool并比较另一对文件,只要我调用:qa. 这很棒。唯一的问题是有时许多文件存在差异。如何防止git运行另一个vimdiff实例并继续差异队列?

git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool
Run Code Online (Sandbox Code Playgroud)

我试图以vim非零错误代码 ( :cq)退出,但没有帮助。

如果答案对vim和都有效,那就太棒了nvim

vim git

5
推荐指数
1
解决办法
1385
查看次数

如何从bash设置`screen`环境变量?

背景

virtualenv用来在环境“1.0”和“2.0”之间切换。
screen用来管理终端。
当我在一个环境中工作时,我希望所有新screen窗口都从这个环境开始。

可以 bash 指示screen在新的 shell 实例上设置环境变量,所以我可以创建一个类似于这个的别名:

alias one='export PRJCT=1.0; screen-magic-setenv PRJCT=1.0; workon 1.0'
alias two='export PRJCT=2.0; screen-magic-setenv PRJCT=2.0; workon 2.0'
Run Code Online (Sandbox Code Playgroud)

然后在~/.bashrc电话中:

[[ -z $PRJCT ]] || workon $PRJCT # switch to project if set
Run Code Online (Sandbox Code Playgroud)

我知道我可以命令screen在如下所示的新 shell 上设置环境变量,但它没有帮助,因为它不能在别名中工作:

:setenv PRJCT
2.0
Run Code Online (Sandbox Code Playgroud)

gnu-screen environment-variables

4
推荐指数
1
解决办法
7193
查看次数

我的系统是否使用了所有可用的 RAM?

我在不应该使用它的主板上安装了 16GB 的 RAM。我应该购买更好的主板还是根本不改变任何东西?它似乎工作正常。

内存:Crucial Ballistix Sport "(8GBx2) DDR3 PC3-12800"
主板:Asrock N68C-S UCC "系统内存最大容量:8GB"

  1. gnome-control-center.real info撒谎?

    Memory: 15,7GB
    
    Run Code Online (Sandbox Code Playgroud)
  2. 是否dmidecode -t16说我的主板可以占用 2x 8GB 或 8GB 总容量?

     Maximum Capacity: 8 GB
     Number Of Devices: 2
    
    Run Code Online (Sandbox Code Playgroud)
  3. 是否free -h撒谎说有11个15GB的使用?

                 total       used       free     shared    buffers     cached
    Mem:           15G        11G       4,2G       7,8G       140M       9,3G
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这个输出不应该是dmidecode -t 171600 MHz 速度吗?

    Handle 0x0010, DMI type 17, 27 bytes
            Size: 8192 MB
            Speed: 400 MHz
    Handle 0x0012, DMI type …
    Run Code Online (Sandbox Code Playgroud)

memory ram dmidecode

4
推荐指数
1
解决办法
2037
查看次数