标签: command

命令的退出状态是由该命令还是执行该命令的shell进程?

来自 bash 手册

执行命令的退出状态waitpid系统调用或等效函数返回的值 。退出状态介于 0 和 255 之间,但如下所述,shell 可能会特别使用 125 以上的值。shell 内置命令和复合命令的退出状态也仅限于此范围。在某些情况下,外壳会使用特殊值来指示特定的故障模式。

  1. 什么决定了执行命令的退出状态,

    • 命令本身,即命令的执行确定退出状态,即确定执行命令的退出状态是命令的固有属性,就像解析命令执行的命令行参数是固有的命令,或
    • 执行命令的shell进程?上面提到
      waitpid系统调用在我看来是一个执行命令的退出状态是由shell进程实现的,而命令本身与一个执行本身的退出状态无关。
  2. 在bash进程中,我们什么时候可以获取执行命令的退出状态,

    • 仅当 bash 进程是交互式的,或者
    • 无论 bash 进程是交互式还是非交互式?当 bash 进程是非交互式的,我们如何检索在 bash 进程中执行的命令的退出状态?

bash command exit-status

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

在unix中执行split命令时如何给出自定义文件名?

有没有办法为 split 命令提供自定义文件名?我将一个 100GB 的文件拆分为 128MB 的块。这是我在做什么

split -b 128000k mydata.csv.

这会创建具有以下名称xaa,xab,xac,..等的文件。我想知道是否可以为每个拆分使用自定义名称,例如 mydata_0.csv, mydata_1.csv

split command

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

设置一个很长的环境变量会破坏很多命令

在弄乱环境变量时,我一直看到一种奇怪的行为。我正在设置一个很长的环境变量,这会阻止启动任何命令:

( Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-66-generic x86_64) )

$ export A=$(python -c "print 'a'*10000000")
$ env
-bash: /usr/bin/env: Argument list too long
$ ls
-bash: /bin/ls: Argument list too long
$ cat .bashrc
-bash: /bin/cat: Argument list too long
$ id
-bash: /usr/bin/id: Argument list too long
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

environment-variables limit command

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

创建一个无意义的、廉价的、长期运行的过程的简单方法?

我有一个管理进程的程序。它旨在管理长时间运行的进程,当其中一个进程退出时,即使成功退出,整个进程管理器也会关闭。

例如,我有进程管理器的这个配置文件:

foo: foo --do-foo
bar: bar --do-bar
Run Code Online (Sandbox Code Playgroud)

“foo”命令可能会退出 0,导致整个进程管理器(以及命令bar --do-bar)关闭。

避免向所述进程管理器提交更改或使用不同的更改,我想我可以通过在我的命令末尾添加另一个“无害”命令来欺骗它不退出,这将导致它“停止”,因此进程管理器不会关闭。想到的一些想法是调用&& ruby&& read使命令停止。

所以,回到我之前的例子,我将我的配置文件更改为:

foo: foo --do-foo && read
bar: bar --do-bar
Run Code Online (Sandbox Code Playgroud)

然后,即使foo --do-foo退出 0,该命令也会“停止”,因为我调用了read,然后进程管理器不会关闭。

要么rubyread“无害”和/或“廉价”的命令来运行欺骗我的进程管理器?或者我可以运行一个更简单的命令来使进程“停止”并消耗很少/不消耗系统资源?

process command

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

find 命令的手册页的概要部分是否错误?

所以,当我忘记如何运行某个命令时,我一直试图养成在开始谷歌之前先查看手册页的习惯。

我今天正在查看 find 命令的手册页,并在概要部分中将命令的格式指定为:

SYNOPSIS
       find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)

这不是表明选项必须在路径之前,然后是表达式吗?或者概要没有指定顺序?

当我使用 find 时,虽然我必须在选项之前指定路径,如下所示:

find . -cmin -10 -ls
Run Code Online (Sandbox Code Playgroud)

shell man find command syntax

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

我如何大声朗读 shell 命令并清楚地理解它?

我一直无法大声表达 linux 命令。例如:

curl -L example.com/file.txt -o "path/to/something with spaces.txt"
Run Code Online (Sandbox Code Playgroud)

我可以说“curl dash big L example dot com slash file dot txt dash small o path slash to slash something with space dot txt in引号”,但这是可以理解的模棱两可。我的意思是

curl -Lexample.com/file.txt -opath/to/"something with spaces.txt"
Run Code Online (Sandbox Code Playgroud)

...或者

curl -L example.com/file.txt -o path/to/somethingwithspaces."txt"
Run Code Online (Sandbox Code Playgroud)

......甚至这个:

"curl-Lexample.com/file.txt-opath/to/somethingwithspaces.txt"
Run Code Online (Sandbox Code Playgroud)

显然,最后一个不太可能,但我的问题仍然存在:

例如,如果我正在通过电话与某人通话,我该怎么做才能确保与我通话的人正确键入命令?是否有减少错误和混淆的方法?

shell terminal command

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

为所有执行的命令指定参数的方法

我想知道是否有办法为 X 数量的命令指定一个相互参数。例如

sudo cmd1 cmd2 cm3 \ --help

这显然不起作用,但我在手册中没有看到任何内容。我假设它无法完成,但并没有完全排除它。如果它不存在,我该如何制作它?

shell parameter command

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

如何通过 SSH 向 fbi 发送命令?

fbi用来显示一些图像。fbi有一些键盘控制,如+-Page UpPage Down,等来控制图像。

我不想使用键盘,而是想通过 SSH 将这些控制命令发送到fbi.

我已经尝试过以下方法:

mkfifo /tmp/mycmd
fbi /myfolder/*.jpg < /tmp/mycmd &
Run Code Online (Sandbox Code Playgroud)

这样做后,fbi不启动。我尝试发送一些命令,例如echo . > /tmp/mycmd,但它没有启动;并给出以下错误:

using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
Run Code Online (Sandbox Code Playgroud)

问题是什么?

如何fbi通过 SSH发送命令!?

ssh framebuffer command fifo fbi

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

我的系统中处理器和内核的数量

这是输出 cat /proc/cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 78
model name  : Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
stepping    : 3
microcode   : 0x74
cpu MHz     : 2400.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de …
Run Code Online (Sandbox Code Playgroud)

linux cpu multiprocessor command

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

zsh 中的 PS1 变量未发生命令替换

我在尝试PS1使用Ubuntu 17.10上的zsh在我的提示中获得动态评估的命令输出时遇到了最困难的时刻。以下是我所做的一些尝试(我从 directory 开始,/abc提示为粗体):

$ export PS1="$(pwd) > "
 /abc > cd /def
 /abc > pwd
/定义
/abc > export PS1="\$(pwd) > "
 $(pwd) > export PS1='$(pwd) > '
 $(pwd) > export PS1='\$(pwd) > '
 \$(pwd) >  [愤怒退出]

第一个结果是最接近的,但看起来pwd在我定义PS1变量时命令只被评估一次。显然有一些我不明白的东西。$(<cmd>)每次显示命令提示符时,我该怎么做才能重新评估?

prompt zsh quoting command

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