小编Rui*_*iro的帖子

.zshenv、.zshrc、.zlogin、.zprofile、.zlogout 中应该/不应该做什么?

我正在寻找关于应该和不应该包含在zsh.

我了解这些文件的来源顺序,以及它们的来源条件,但我仍然不清楚每个文件应该包含什么。

startup zsh

280
推荐指数
2
解决办法
15万
查看次数

grep 可以返回真/假还是有其他方法

作为此脚本的一部分,我需要能够检查给定的第一个参数是否与文件的第一个单词匹配。如果是,则退出并显示错误消息;如果没有,请将参数附加到文件中。我了解如何编写if语句,但不了解如何grep在脚本中使用。我知道这grep看起来像这样

grep ^$1 schemas.txt
Run Code Online (Sandbox Code Playgroud)

我觉得这应该比我做的要容易得多。

我在声明中收到错误“参数太多” if。我摆脱了之间的空间grep -q,然后得到了一个预期的错误二元运算符。

if [ grep -q ^$1 schemas.txt ]
then
        echo "Schema already exists. Please try again"
        exit 1
else
        echo "$@" >> schemas.txt
fi
Run Code Online (Sandbox Code Playgroud)

grep

194
推荐指数
3
解决办法
53万
查看次数

在 shell 脚本中使用 shift 的目的是什么?

我遇到了这个脚本:

#! /bin/bash                                                                                                                                                                                           

if (( $# < 3 )); then
  echo "$0 old_string new_string file [file...]"
  exit 0
else
  ostr="$1"; shift
  nstr="$1"; shift  
fi

echo "Replacing \"$ostr\" with \"$nstr\""
for file in $@; do
  if [ -f $file ]; then
    echo "Working with: $file"
    eval "sed 's/"$ostr"/"$nstr"/g' $file" > $file.tmp 
    mv $file.tmp $file
  fi  
done
Run Code Online (Sandbox Code Playgroud)

他们使用的行的含义是什么shift?我认为脚本应该至少与参数一起使用,所以......?

shell-script arguments

173
推荐指数
3
解决办法
22万
查看次数

如何在 Debian 8.0 上启用 diffie-hellman-group1-sha1 密钥交换?

我无法通过 ssh 连接到要求diffie-hellman-group1-sha1密钥交换方法的服务器:

ssh 123.123.123.123
Unable to negotiate with 123.123.123.123 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)

如何diffie-hellman-group1-sha1在 Debian 8.0 上启用密钥交换方法?

我曾尝试(如建议在这里),以

  1. 将以下行添加到我的 /etc/ssh/ssh_config

    KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
    Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr
    
    Run Code Online (Sandbox Code Playgroud)
  2. 重新生成密钥

    ssh-keygen -A
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新启动 ssh

    service ssh restart
    
    Run Code Online (Sandbox Code Playgroud)

    但仍然得到错误。

ssh debian openssh key-authentication ssh-agent

162
推荐指数
4
解决办法
59万
查看次数

.d 在目录名称中代表什么?

我知道许多名称中带有 .d 的目录:

init.d
yum.repos.d
conf.d
Run Code Online (Sandbox Code Playgroud)

是目录的意思吗?如果是,这与什么消除歧义?

更新:关于这.d意味着什么,我有很多有趣的答案,但我的问题的标题没有选好。我把“意思”改为“代表”。

fhs directory

149
推荐指数
3
解决办法
6万
查看次数

什么时候需要 xargs?

xargs命令总是让我困惑。是否有一般规则?

考虑下面的两个例子:

$ \ls | grep Cases | less
Run Code Online (Sandbox Code Playgroud)

打印与“案例”匹配的文件,但将命令更改为touch将需要xargs

$ \ls | grep Cases | touch
touch: missing file operand
Try `touch --help' for more information.

$ \ls | grep Cases | xargs touch
Run Code Online (Sandbox Code Playgroud)

command-line xargs

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

为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现?

我试图了解 Linux 上特殊文件的概念。然而,/dev根据我的知识,当它的功能可以通过 C 中的几行代码实现时,在其中包含一个特殊文件似乎很愚蠢。

此外,您可以以几乎相同的方式使用它,即通过管道进入null而不是重定向到/dev/null. 将其作为文件是否有特定原因?使它成为一个文件不会导致许多其他问题,例如太多程序访问同一文件吗?

executable devices files null

116
推荐指数
6
解决办法
2万
查看次数

为什么我们需要 fork 来创建新进程?

在Unix中,每当我们想要创建一个新进程时,我们会fork当前进程,创建一个与父进程完全相同的新子进程;然后我们执行 exec 系统调用以将来自父进程的所有数据替换为新进程的所有数据。

为什么我们首先创建父进程的副本而不是直接创建新进程?

process fork architecture

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

当目录名称有空格时如何通过 ssh 进行 rsync

我正在尝试从一台服务器同步到另一台服务器。服务器具有相同的目录结构,但是当远程服务器中有空格时,我无法让远程服务器正确识别远程服务器上的路径名。

这是详细信息

本地目录是

mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud)

远程目录是

mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud)

我已经尝试了所有我能找到的最新尝试是

rsync --size-only -avzPe ssh  /mnt/xlses/split/v2/name\ with\ space/ root@myserver.com:/mnt/xlses/split/v2/"name with space"
Run Code Online (Sandbox Code Playgroud)

当它运行时,它报告的第一件事是它正在创建一个新目录

我打断它,看到有一个新目录

mnt/xlses/split/v2/name
Run Code Online (Sandbox Code Playgroud)

我的所有文件都在该目录中

我期待他们在

mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud)

ssh rsync

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

Chrome:具有随机 DNS 名称的 DNS 请求:恶意软件?

多年来(自 2005 年以来),我在我维护的多个 DNS / BIND 服务器上看到了奇怪的随机 DNS 请求的日志。

May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#24123 (verxkgiicjmcnxg): view internal: query: verxkgiicjmcnxg IN A + (1.1.1.1)
May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#29159 (epqoaqsayo): view internal: query: epqoaqsayo IN A + (1.1.1.1)
May  7 12:13:50 1.1.1.1 named[63742]: client 1.1.1.2#27411 (qlllglwcjglu): view internal: query: qlllglwcjglu IN A + (1.1.1.1)
Run Code Online (Sandbox Code Playgroud)

我通常把它归结为一些 Windows 恶意软件。但是,我开始注意到它最近也来自 Linux 和 Mac 客户端。我再次认为这可能是由于某些恶意浏览器插件造成的。

但是,在调试 Google Chrome 浏览器问题时,在我新安装的 Macbook Pro/Chrome 中,使用 URL chrome://net-internals/#dns,我在 Chrome DNS 统计页面中发现了类似的请求。

我的 Chrome 浏览器安装了相当无害的插件,也没有明显的恶意软件迹象 …

security dns chrome

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