来自 bash 手册
执行命令的退出状态是
waitpid系统调用或等效函数返回的值 。退出状态介于 0 和 255 之间,但如下所述,shell 可能会特别使用 125 以上的值。shell 内置命令和复合命令的退出状态也仅限于此范围。在某些情况下,外壳会使用特殊值来指示特定的故障模式。
什么决定了执行命令的退出状态,
waitpid系统调用在我看来是一个执行命令的退出状态是由shell进程实现的,而命令本身与一个执行本身的退出状态无关。在bash进程中,我们什么时候可以获取执行命令的退出状态,
有没有办法为 split 命令提供自定义文件名?我将一个 100GB 的文件拆分为 128MB 的块。这是我在做什么
split -b 128000k mydata.csv.
这会创建具有以下名称xaa,xab,xac,..等的文件。我想知道是否可以为每个拆分使用自定义名称,例如
mydata_0.csv, mydata_1.csv。
在弄乱环境变量时,我一直看到一种奇怪的行为。我正在设置一个很长的环境变量,这会阻止启动任何命令:
( 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)
这里发生了什么?
我有一个管理进程的程序。它旨在管理长时间运行的进程,当其中一个进程退出时,即使成功退出,整个进程管理器也会关闭。
例如,我有进程管理器的这个配置文件:
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,然后进程管理器不会关闭。
要么ruby或read“无害”和/或“廉价”的命令来运行欺骗我的进程管理器?或者我可以运行一个更简单的命令来使进程“停止”并消耗很少/不消耗系统资源?
所以,当我忘记如何运行某个命令时,我一直试图养成在开始谷歌之前先查看手册页的习惯。
我今天正在查看 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) 我一直无法大声表达 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)
显然,最后一个不太可能,但我的问题仍然存在:
例如,如果我正在通过电话与某人通话,我该怎么做才能确保与我通话的人正确键入命令?是否有减少错误和混淆的方法?
我想知道是否有办法为 X 数量的命令指定一个相互参数。例如
sudo cmd1 cmd2 cm3 \ --help
这显然不起作用,但我在手册中没有看到任何内容。我假设它无法完成,但并没有完全排除它。如果它不存在,我该如何制作它?
我fbi用来显示一些图像。fbi有一些键盘控制,如+,-,Page Up,Page 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发送命令!?
这是输出 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) 我在尝试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>)每次显示命令提示符时,我该怎么做才能重新评估?