标签: arguments

ls 的参数列表太长

尝试访问ls *.txt | wc -l包含许多文件的目录时出现以下错误:

-bash: /bin/ls: Argument list too long
Run Code Online (Sandbox Code Playgroud)

此“参数列表”的阈值是否取决于发行版或计算机的规格?通常,我wc -l会将如此大的结果的结果通过管道传递给其他一些命令(例如),所以我不关心终端的限制。

ls arguments

65
推荐指数
3
解决办法
12万
查看次数

双破折号 (--) 是何时以及如何作为 Unix/Linux 中选项分隔符的结尾引入的?

我不认为历史Unix 中的 shell/实用程序或像4.4BSD那样“最近”的东西支持使用双破折号(或两个连续的连字符)作为选项分隔符结尾。使用FreeBSD,您可以看到例如在2.2.1 版本(1997)的rm 联机帮助页中引入的注释。但这只是一个命令的文档。

查看我能找到的最古老的GNU fileutils 更改日志,我看到了这个1(略有改动):

Tue Aug 28 18:05:24 1990  David J. MacKenzie  (djm at albert.ai.mit.edu)

* touch.c (main): Don't interpret first non-option arg as a   <---
  time if `--' is given (POSIX-required kludge).  
* touch.c: Add long-named options.
* Many files: Include <getopt.h> instead of "getopt.h" since
  getopt.h will be in the GNU /usr/include.
* install.c: Declare some …
Run Code Online (Sandbox Code Playgroud)

gnu history posix arguments

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

`-` 只与 cd 一起使用吗?

cd - 可以在当前目录和上一个目录之间切换。

似乎我以前见过-用作其他命令的参数,但我不记得 if-cd.

我发现这-不适用于ls.

- 只用cd吗?

options cd-command arguments

45
推荐指数
5
解决办法
3633
查看次数

我可以将 pgrep 与 kill 链接起来吗?

我注意到它|用于将第一个命令的结果发送给另一个。我想杀死所有与名称匹配的进程。
这是 pgrep 通常所做的:

$ pgrep name
5089
5105
Run Code Online (Sandbox Code Playgroud)

并且多个参数似乎适用于kill

sudo kill 5089 5105
Run Code Online (Sandbox Code Playgroud)

但这是错误的:

pgrep name | kill
Run Code Online (Sandbox Code Playgroud)

那么如何正确操作呢?

shell pipe arguments

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

向“bash -c”添加参数

假设我想像这样通过 Bash 运行一个命令:

/bin/bash -c "ls -l"
Run Code Online (Sandbox Code Playgroud)

根据 Bash 手册页,我也可以这样运行它:

#               don't process arguments after this one
#               |   pass all unprocessed arguments to command
#               |   |
#               V   V
/bin/bash -c ls -- -l
Run Code Online (Sandbox Code Playgroud)

除了它似乎不起作用(似乎被忽略了)。我做错了什么,还是我解释的手册页错误?

来自 man 的相关引用:

如果存在 -c 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。

A -- 表示选项结束并禁用进一步的选项处理。-- 之后的任何参数都被视为文件名和参数。

shell bash quoting arguments

35
推荐指数
2
解决办法
5万
查看次数

有没有办法在不重新输入整个路径的情况下引用目录中的多个文件?

在 bash shell 中,当我必须删除同一目录中的多个文件时,我目前需要执行以下操作:

rm /some/path/file1 /some/path/file2

有没有更短的方法来写这个,这样我就不必在/some/path/不使用变量或更改工作目录的情况下重新输入?

也许类似于:

rm /some/path/(file1,file2)

bash arguments

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

为什么`sort &lt; "$f1" `优于`sort -- "$f1"`,为什么这优于`sort "$f1"`?

来自https://unix.stackexchange.com/a/458074/674

请记住-- 在将任意参数传递给命令时使用(或在可能的情况下使用重定向)。所以sort -- "$f1"或更好,sort < "$f1"而不是sort "$f1".

为什么首选使用--和重定向?

为什么是sort < "$f1"首选sort -- "$f1"

为什么是 sort -- "$f1"首选sort "$f1"

谢谢。

command-line shell io-redirection arguments

31
推荐指数
2
解决办法
2279
查看次数

我什么时候需要在 UEFI/EFI 引导中指定 add_efi_memmap 作为内核参数?

我正在阅读一些如何使用 EFI 存根 (efistub) 加载 Linux 内核的教程。这些指令经常使用内核引导参数add_efi_memmap。预期的硬件是具有 8GB RAM 的 Intel x64。我当前的设置正在运行grub-efi引导加载程序和内核 v3.13。

GRUB引导,而不add_efi_memmap引导参数:

  • 23BIOS-e820 线dmesg | grep BIOS-e820: | wc -l
  • 243EFI 内存行计数dmesg | grep efi:\ mem | wc -l
  • DMA 区域:24保留的页面
  • 内存:7840568K/8283384K可用
  • 442816K 保留

GRUB引导 add_efi_memmap和EFI存储器映射大小似乎确实有所不同:

  • 23 BIOS-e820线
  • 57 EFI 内存线
  • DMA 区域:22保留的页面
  • 内存:7885076K/8283384K可用
  • 398308K 预留

EFI 存根启动没有 add_efi_memmap

  • 22 BIOS-e820线
  • 60 EFI …

boot linux-kernel arguments uefi

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

标志、选项和参数之间有什么区别?

  • ls -a(我考虑-a一个选项)

  • sudo -u username( -u= 选项, username= arg)

  • chmod 664 my-dir( 664= 选项, my-dir= arg)

我想不出一个可能会说“这是一个标志”的例子,除非在查看目录列表时:

-r--------. 1 david david   3344 May 19 17:48 611056.pdf
Run Code Online (Sandbox Code Playgroud)

这为所有者设置了“读取标志”,仅此而已。是什么阻止我将其称为“阅读选项”?

我主要使用 DocBook XML 编写和编辑技术文档,我正在寻找差异的解释,尽可能一致和准确。但是,我已经看到了一种模式的形成:

  1. 标志往往是布尔值。例如,setenforce 0
  2. 选项有助于定义命令的行为方式。有些可能是可选的。
  3. 参数告诉命令要操作的对象。

我可以看到自己组合了标志和选项(有些选项可能有十几个可能的值,但布尔值只有两个)。参数看起来足够不同以维持它们的原样。

linux options arguments

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

如何在 for 循环中使用 $1 $2 ... 之类的参数?

我有这个脚本,旨在下载您作为参数给出的单词的发音:

#!/bin/bash 
m=$#
for ((i=1;i<=m;i++));do

echo $i
#wget https://ssl.gstatic.com/dictionary/static/sounds/de/0/"$i".mp3
done
Run Code Online (Sandbox Code Playgroud)

如果我通过这个命令运行它

./a.sh personality brave selfish
Run Code Online (Sandbox Code Playgroud)

它应该打印在标准输出上

personality 
brave 
selfish
Run Code Online (Sandbox Code Playgroud)

但它打印

1
2
3
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?

ps:例如,如果我使用 $1 编写没有 for 循环的脚本,它将正常工作,但我想同时下载许多文件

bash shell-script arguments

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