小编Bow*_*ark的帖子

生成特定范围内的随机数

在谷歌搜索了一下之后,我找不到一种简单的方法来使用 shell 命令生成一个包含在特定范围内的随机十进制整数,即介于最小值和最大值之间。

我读过/dev/random,/dev/urandom$RANDOM,但这些都不能满足我的需要。

有没有其他有用的命令,或者使用以前数据的方法?

command-line shell random command

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

如何将彩色pdf转换为黑白?

我想将带有一些彩色文本和图像的 pdf 转换为另一个只有黑白的 pdf,以减少其尺寸。此外,我想将文本保留为文本,而无需转换图片中的页面元素。我尝试了以下命令:

convert -density 150 -threshold 50% input.pdf output.pdf
Run Code Online (Sandbox Code Playgroud)

在另一个问题中找到了一个链接,但它做了我不想要的:输出中的文本被转换成一个糟糕的图像并且不再可选。我尝试使用 Ghostscript:

gs      -sOutputFile=output.pdf \
        -q -dNOPAUSE -dBATCH -dSAFER \
        -sDEVICE=pdfwrite \
        -dCompatibilityLevel=1.3 \
        -dPDFSETTINGS=/screen \
        -dEmbedAllFonts=true \
        -dSubsetFonts=true \
        -sColorConversionStrategy=/Mono \
        -sColorConversionStrategyForImages=/Mono \
        -sProcessColorModel=/DeviceGray \
        $1
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误消息:

./script.sh: 19: ./script.sh: output.pdf: not found
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以创建文件?

bash pdf imagemagick ghostscript color-management

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

监控硬盘活动

在 Ubuntu 14.04 服务器中,我遇到了大量的硬盘活动,但没有明显的理由:它突然出现,持续几分钟然后消失。它消耗系统资源并使整个系统变慢。

是否有(命令行)工具可用于监视磁盘活动,列出使用磁盘的进程和所涉及的文件?像 CPU 的 htop 之类的东西。

command-line ubuntu monitoring hard-disk

24
推荐指数
4
解决办法
4万
查看次数

在用户登录时执行命令

在Linux桌面系统中,我想在用户登录时执行一个命令。

在阅读了其他一些帖子后,我尝试将命令插入~/.bashrc但未成功。此外,系统使用图形界面进行用户登录,因此该命令不应与shell 的启动相关。

我还尝试将命令附加到其中包含的脚本之一,但/etc/profile.d没有结果。

有没有另一种方法可以做到这一点?登录后系统读取的任何文件?

shell scripting login

23
推荐指数
2
解决办法
7万
查看次数

使用目录树/文件名时的紧凑 bash 提示

在带有 Ubuntu 14.04 和 的系统中bash,我的PS1变量以以下内容结尾:

\u@\h:\w\$
Run Code Online (Sandbox Code Playgroud)

以便提示显示为

user@machinename:/home/mydirectory$
Run Code Online (Sandbox Code Playgroud)

然而,有时,当前目录有一个长名称,或者它在长名称的目录中,所以提示看起来像

user@machinename:/home/mydirectory1/second_directory_with_a_too_long_name/my_actual_directory_with_another_long_name$
Run Code Online (Sandbox Code Playgroud)

这将填充终端中的行,光标将转到另一行,这很烦人。

我想获得类似的东西

user@machinename:/home/mydirectory1/...another_long_name$
Run Code Online (Sandbox Code Playgroud)

有没有办法定义PS1变量来“包装”和“压缩”目录名称,永远不会超过一定数量的字符,从而获得更短的提示?

bash prompt directory directory-structure pwd

17
推荐指数
2
解决办法
3171
查看次数

从 sha512sum 的输出中抑制文件名

也许这是一个微不足道的问题,但在man页面中我没有找到有用的东西。我正在使用 Ubuntu 和bash.

正常输出为sha512sum testfileIS

<hash_code>  testfile
Run Code Online (Sandbox Code Playgroud)

如何抑制文件名输出?我想获得

<hash_code>
Run Code Online (Sandbox Code Playgroud)

shell-script text-processing hashsum files checksum

13
推荐指数
2
解决办法
9384
查看次数

打印固定宽度的手册页

使用示例命令

man apropos > outputfile
Run Code Online (Sandbox Code Playgroud)

生成一个文本文件,其中包含格式化的man页面apropos(与man apropos直接打印在屏幕上的一些细微差别,例如粗体字符)。

但我想手动设置生成的输出文件的最大行宽,以便所有段落都对齐到该宽度。

man页面是通过groff以下方式创建的:例如,我试图将.ll 50原始.gz man源文本文件的一段放在前面,但是如果我需要在多个man页面上工作,那就微不足道了。此外,并非所有字符都被识别:

apropos.1:45: warning: can't find character with input code 195
apropos.1:45: warning: can't find character with input code 168
apropos.1:47: warning: can't find character with input code 178
apropos.1:131: warning: can't find character with input code 169
Run Code Online (Sandbox Code Playgroud)

所以,我想知道是否存在更直接的方法。在创建outputfile? 时如何修改最大线宽?有什么具体的命令吗?


编辑

(以下所有注意事项都是关于 Ubuntu 18.04:我无法在以前的版本中测试它们,包括上述问题的 14.04。)

至于单行临时解决方案,如果MANWIDTH还没有用自定义值导出,则没有区别

$ MANWIDTH=60 man apropos > …
Run Code Online (Sandbox Code Playgroud)

command-line shell man text-processing text-formatting

11
推荐指数
2
解决办法
2552
查看次数

从命令行打开/关闭网络接口

在 Xubuntu 14.04 中,我尝试同时使用两者ipifconfig处理网络接口,但它们给出了相同的结果。

$ sudo ifconfig wlan0 down
$ sudo ip link set wlan0 down
Run Code Online (Sandbox Code Playgroud)

都正确放下接口,连接不工作;但是之后

$ sudo ifconfig wlan0 up
$ sudo ip link set wlan up
Run Code Online (Sandbox Code Playgroud)

没有恢复连接!

这是ip link show放下接口后的输出:

wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether <my_MAC_address> brd ff:ff:ff:ff:ff:ff
inet 192.168.1.29/24 brd 192.168.1.255 scope global wlan0
   valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

这是设置界面后的输出:

wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether …
Run Code Online (Sandbox Code Playgroud)

command-line networking wifi ubuntu network-interface

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

在 Unix 和 Windows 之间编写文本消息

是否可以在同一 LAN 的两个用户之间发送文本消息,但第一个使用 cmd 运行 Windows,第二个运行 Linux/Unix?

我不是在寻找即时消息服务。我想在 Linux shell 中输入类似的内容

write user@192.168.x.x:port message
Run Code Online (Sandbox Code Playgroud)

以便 Windows 用户可以在其 cmd 窗口中阅读文本message;那么 Windows 用户应该能够用另一个命令进行回复。是否可以?

我已经阅读了 Windowsmsg命令,但它不适用于所有版本的操作系统。还有别的事吗?

我想使用 Linux shell 和 Windows cmd,而不是 PuTTY。

command-line shell networking windows messaging

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

替换包含换行符的字符串

使用bash外壳,在具有如下行的文件中

first "line"
<second>line and so on
Run Code Online (Sandbox Code Playgroud)

我想每次都替换一次或多次出现的"line"\n<second>withother characters并获得:

first other characters line and so on
Run Code Online (Sandbox Code Playgroud)

所以我必须用特殊字符(例如"和 )<和换行符替换字符串。

在其他答案之间搜索后,我发现sed可以接受命令右侧的换行符(因此,other characters字符串),但不能接受左侧的换行符。

有没有办法(比更简单)用sed或获得这个结果grep

grep sed text-processing newlines

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