小编Abd*_*red的帖子

如何在命令行上获取目录的大小?

我试图通过使用ls带有选项的命令来获取目录(包含目录和子目录)的大小l。它似乎适用于文件 ( ls -l file name),但如果我尝试获取目录的大小(例如,ls -l /home),我只会得到 4096 字节,尽管总的来说它要大得多。

command-line ls disk-usage

1322
推荐指数
16
解决办法
281万
查看次数

bash 脚本中 IFS=$'\n' 的含义是什么?

bash shell 脚本的开头是以下行:

IFS=$'\n'
Run Code Online (Sandbox Code Playgroud)

这组符号背后的含义是什么?

command-line bash shell-script

230
推荐指数
3
解决办法
30万
查看次数

如何使用 echo 命令和重定向运算符将换行符特殊字符放入文件中?

我想使用 echo 命令和重定向运算符创建一个文件,该文件应该由几行组成。

我试图通过“\n”在字符串中包含一个换行符:

echo "first line\nsecond line\nthirdline\n" > foo
Run Code Online (Sandbox Code Playgroud)

但是这样不会创建三行文件,而是创建一个只有一行和字符串的逐字内容的文件。

如何仅使用此命令创建多行文件?

command-line shell echo newlines

56
推荐指数
3
解决办法
15万
查看次数

如何从标准输入绘制一系列数字的图形?

如果有一个长文本文件并且我想显示给定模式出现的所有行,我会这样做:

grep -n form innsmouth.txt | cut -d : -f1
Run Code Online (Sandbox Code Playgroud)

现在,我有一个数字序列(每行一个数字)

我想用 x 轴上的出现和 y 轴上的行号进行 2D 图形表示。我怎样才能做到这一点?

在此处输入图片说明

command-line graphics

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

读-r是什么意思?

为了理解另一个答案(由 glenn jackman):

find / -type d -print0 | while read -r -d '' dir; do ls -ltr "$dir" | sed '$!d'; done
Run Code Online (Sandbox Code Playgroud)

第一步骤是要了解该选项的使用-r的的read命令。

首先,我想,简单地执行就足够了

man read
Run Code Online (Sandbox Code Playgroud)

查找-r选项的含义,但我意识到手册页根本不包含任何对选项的解释,所以我搜索了它。我得到了一些read -tread -p例子,但是没有read -r

shell read

42
推荐指数
3
解决办法
5万
查看次数

PS2、PS3、PS4在什么情况下作为提示使用?

当我登录到 shell 时,我看到了其值存储在 PS1 中的提示。

我在使用 here-document 语法时也遇到了另一个提示(但不知道是哪个):

bc << HERE
>
Run Code Online (Sandbox Code Playgroud)

但这就是所有类型的提示。到目前为止我遇到过。什么样的情况会引起不同类型的提示?

command-line bash prompt

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

如何检查是否安装了共享库?

我的问题源于我在启动 ffmpeg 时遇到的问题。我已经安装了 ffmpeg,它显示为已安装:

whereis ffmpeg 
ffmpeg: /usr/bin/ffmpeg /usr/bin/X11/ffmpeg /usr/share/ffmpeg /usr/share/man/man1/ffmpeg.1.gz
Run Code Online (Sandbox Code Playgroud)

后来,我发现,有些程序依赖于安装本身没有的库,所以我用 ldd 命令检查了缺少什么:

# ldd /usr/bin/ffmpeg
    linux-vdso.so.1 =>  (0x00007fff71fe9000)
    libavfilter.so.0 => not found
    libpostproc.so.51 => not found
    libswscale.so.0 => not found
    libavdevice.so.52 => not found
    libavformat.so.52 => not found
    libavcodec.so.52 => not found
    libavutil.so.49 => not found
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5f20bdf000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5f209c0000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5f205fb000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5f20f09000)
Run Code Online (Sandbox Code Playgroud)

事实证明,我的 ffmpeg 也被 7 个库切断了。我首先认为必须安装这些库中的每一个,但比我想象的要安装一些或全部,但 ffmpeg 不知道它们的位置。我读到 /etc/ld.so.conf 和 /etc/ld.so.cache 包含库的路径,但我很困惑,因为只有一行

/etc/ld.so.conf
 cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
Run Code Online (Sandbox Code Playgroud)

但是很长/etc/ld.so.cache …

linux libraries ffmpeg etc shared-library

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

是否可以访问帧缓冲区以便从命令行将像素放在屏幕上?

我不确定这是否是唯一可能的方法,但我读到过,为了将单个像素放在屏幕上您选择的位置,必须将一些内容写入一个名为 framebuffer 的地方。所以我开始好奇,是否有可能进入这个地方并在其中写入一些东西,以便在屏幕上的某个地方显示单个像素。

linux graphics framebuffer console

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

是否可以将一个命令的输出重定向到多个命令中?

据我所知,我可以使用 tee 命令将标准输出拆分到屏幕和其他文件上:

command -option1 -option2 argument | tee file1 file2 file3 
Run Code Online (Sandbox Code Playgroud)

是否可以使用 tee 将输出重定向到命令而不是文件,以便理论上我可以创建命令链?

command-line pipe tee

21
推荐指数
3
解决办法
1797
查看次数

如何在互连命令之间实现数据循环流?

我知道两种命令如何相互连接:

  1. 通过使用管道(将标准输出放入下一个命令的标准输入)。
  2. 通过使用三通(将输出拼接成多个输出)。

我不知道这是否可行,所以我画了一个假设的连接类型:

在此处输入图片说明

怎么可能在命令之间实现循环数据流,例如在这个伪代码中,我使用变量而不是命令。:

pseudo-code:

a = 1    # start condition 

repeat 
{
b = tripple(a)
c = sin(b) 
a = c + 1 
}
Run Code Online (Sandbox Code Playgroud)

command-line shell scripting pipe

19
推荐指数
3
解决办法
2448
查看次数