小编Man*_*dan的帖子

何时强制使用 /dev/zero 而不是 /dev/null 来进行写入/丢弃?

根据FHS关于/dev

它包含了:

The following devices must exist under /dev.

/dev/null
      All data written to this device is discarded. A read from this device will return an EOF condition.

/dev/zero
      This device is a source of zeroed out data. All data written to this device is discarded. A read from this device will return as many bytes containing the value zero as was requested.
...
Run Code Online (Sandbox Code Playgroud)

观察两者都有:

All data written to this device is discarded …
Run Code Online (Sandbox Code Playgroud)

fhs devices

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

通过“kill”命令发送信号名称的正确或建议方法是什么?

我读了很多关于命令使用的教程kill主要是3种方法

kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>
Run Code Online (Sandbox Code Playgroud)

出于脚本目的以及 Macos 的可移植性,将不会使用代码编号。因为kill -lmacos 与 Linux 不同。因此,在这里输入播放信号名称。

问题

  • 通过命令发送信号名称的kill正确或建议方法是什么?

我是说:

  • SIG什么的还是什么

为什么?这两种方法的存在只有一个原因,对吗?是否有强制理由使用一种方法而不是另一种方法?

环境

这种情况适用于 Ubuntu 桌面/服务器和 Fedora 工作站/服务器

linux kill signals options

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

了解 OpenSSH 客户端和服务器版本的命令?

在网上一些安装 OpenSSH 的教程中存在以下命令:

sudo apt install openssh-server
sudo apt install openssh-client
Run Code Online (Sandbox Code Playgroud)

例如,对于Ubuntu Desktop是强制安装 Openssh 的服务器 - 对于 ,它不是必需的Ubuntu Server,它已经安装了 - 此外,我从未在某些发行版中安装过 Openssh 的客户端,但我能够使用ssh.

如何知道每个版本的版本?在ssh(1) - Linux 手册页中指出:

-V' Display the version number and exit.
Run Code Online (Sandbox Code Playgroud)

但不清楚是用于服务器还是客户端 - 在许多教程中都有相同的关于执行的指示ssh -V,但它们没有明确指示是否用于服务器或客户端。

原因

我想知道客户端版本,因为突然间我的笔记本电脑MacOS无法再用于某些主机(它之后在主机中进行了从到 的ssh升级),而对于另一台具有 Linux 的笔记本电脑(作为客户端),他们可以执行ssh 到相同的主机 - 在做了研究之后,似乎是由于客户端版本 - 因此我想知道 MacOS 和 Linux 的客户端版本。Ubuntu20.0422.04

ssh openssh sshd

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

curl:用“-O”下载同名但定义特定路径目录的文件

curl可能做

curl http://somedomain.com/originalfilename.tar.gz -o newfilename.tar.gz
curl http://somedomain.com/originalfilename.tar.gz -o /other/path/newfilename.tar.gz
Run Code Online (Sandbox Code Playgroud)

因此,-o可以重命名要下载的文件名,甚至定义其他路径目录来下载

现在,如果我想保留相同的文件名,则必须使用-O

curl http://somedomain.com/originalfilename.tar.gz -O
Run Code Online (Sandbox Code Playgroud)

因此下载了该originalfilename.tar.gz文件。

现在

问题

  • 如何下载文件并保留其名称(带有-O定义要下载的目录?

就像是

curl http://somedomain.com/originalfilename.tar.gz -O <download to /some/path>
Run Code Online (Sandbox Code Playgroud)

因此对于 Shell 脚本来说,脚本可以在任何地方执行。我想originalfilename.tar.gz明确下载该文件/some/path

options curl

6
推荐指数
1
解决办法
6047
查看次数

openssh-client - 全局known_hosts 文件的正确位置是什么?

我有点困惑 ssh 系统范围的known_hosts 文件的“正确”路径是什么。

man ssh/etc/ssh/ssh_known_hostsSSH 主机密钥 - 什么、为什么、如何谈论/etc/ssh/known_hosts

两个地点都有效吗?这种差异是历史遗留物吗?它是特定分布的吗?应该使用哪个文件路径?

ssh openssh

5
推荐指数
1
解决办法
1347
查看次数

为什么通过手册页不显示完整的选项列表,而通过 -help 则显示完整的选项列表?

我知道这man <command>是任何命令的手册页。

对于man groupdel可能只看到两个选项:

-h --help
-R --root CHRROT_DIR
Run Code Online (Sandbox Code Playgroud)

到目前为止,乍一看,人们可以假设该命令仅支持 2 个选项,但是

通过groupdel -h节目:

-h --help
-R --root CHRROT_DIR
-f --force
Run Code Online (Sandbox Code Playgroud)

那么——为什么-f没有通过男人表现出来呢?不确定其他命令是否会发生这种行为 - 这种行为在 Linux 中是正常的还是预期的?顺便说一句,它适用于 Ubuntu 服务器 18:04

man documentation command

5
推荐指数
1
解决办法
973
查看次数

如何将数组作为函数参数传递但带有其他额外参数?

以下后期解决方案按预期工作:

因此 - 从他的回答来看:

function copyFiles() {
   arr=("$@")
   for i in "${arr[@]}";
      do
          echo "$i"
      done

}

array=("one 1" "two 2" "three 3")

copyFiles "${array[@]}"
Run Code Online (Sandbox Code Playgroud)

写这篇文章的原因是如果发生以下情况怎么办:

copyFiles "${array[@]}" "Something More"
copyFiles "Something More" "${array[@]}"
Run Code Online (Sandbox Code Playgroud)

问题:我确实意识到发送的参数,当收到它们时,函数中的参数如何 - 它们实际上是合并的 - 所以$1并且$2不再按预期工作,“数组”参数与其他参数集成

我已经做了一项研究:

遗憾的typeset -n不起作用

并在:

无法预期工作 - 在该答案中,有一条评论表明存在问题 - 带有演示测试/验证的链接 - 关于${#array[@]}函数内的数组大小 ( ) 不同。

那么如何实现这个目标呢?

shell bash array shell-script bash-array

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

无密码检查用户是否可以使用“sudo”

我想检查用户是否能够使用sudo(但无需编写密码)用于 bash shell 脚本。我做了一些研究,发现:

对于没有通过 in 进行配置的用户sudoers- 因此无法使用sudo- 执行sudo -n <command> 始终在终端中打印sudo: a password is required消息。如果用户可以使用sudo--是否sudo未在会话中执行或sudo超时过期--它会再次打印该sudo: a password is required消息。

此外,使用正确的解决方案(但对于其他情况)

$(sudo -n uptime 2>&1 | grep "load" | wc -l)
Run Code Online (Sandbox Code Playgroud)

sudo对于未经许可的用户始终返回 0。如果用户可以使用并且超时sudo仍然sudo有效- 则返回 1,否则返回 0

问题:因此,使用这种方法不可能真正通过命令知道用户是否可以使用- 该解决sudo方案只能知道sudo …

command-line bash sudo shell-script command-substitution

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

less 命令 g 与 p 选项

根据本教程用于less导航目的

表示:

g   Go to the first line in the file.
p   Go to the beginning of the file.
Run Code Online (Sandbox Code Playgroud)

我测试了两者,当然结果是相同的(当然使用G到底部)并测试每一个。

但乍一看 ifgG彼此相反,它们足以分别进入第一行(顶部)和最后一行(底部) - 那么为什么会有这个选项,p如果它与 相同g

command-line less options

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

curl:何时使用“--no-progress-meter”而不是“-sS”?

关于curl隐藏进度表,我通过Stack Exchange分支找到了很多答案,其中提到了-s-S/或只是-sS在哪里

\n
    \n
  • -s隐藏进度条
  • \n
  • -S仅显示错误消息,即使-s使用时也是如此
  • \n
\n

因此建议工作为-sS

\n

在一些帖子中,提到了curl--no-progress-meter选项的新添加,例如:

\n\n

我读man

\n
--no-progress-meter\n       Option to switch off the progress meter output without muting or otherwise affecting warning and informational messages like --silent does.\n\n       Note that this is the negated option name documented. You can thus use …
Run Code Online (Sandbox Code Playgroud)

options curl

5
推荐指数
1
解决办法
2477
查看次数