小编ken*_*orb的帖子

如何使用具有管道字符的模式对多个模式进行 grep?

我想在多个文件中找到与两种模式之一匹配的所有行。我试图通过键入来找到我正在寻找的模式

grep (foo|bar) *.txt
Run Code Online (Sandbox Code Playgroud)

但是外壳将它解释|为管道并在bar不是可执行文件时抱怨。

如何在同一组文件中搜索多个模式?

shell grep quoting regular-expression

764
推荐指数
7
解决办法
176万
查看次数

如何在 ls -Al 中仅输出文件名(带空格)?

我应该只用这种结构回显文件或目录的名称:

ls -Al | while read string
do
...
done
Run Code Online (Sandbox Code Playgroud)

ls -Al 输出 :

drwxr-xr-x  12 s162103  studs         12 march 28 12:49 personal domain
drwxr-xr-x   2 s162103  studs          3 march 28 22:32 public_html
drwxr-xr-x   7 s162103  studs          8 march 28 13:59 WebApplication1
Run Code Online (Sandbox Code Playgroud)

例如,如果我尝试:

ls -Al | while read string
do
echo "$string" | awk '{print $9}
done
Run Code Online (Sandbox Code Playgroud)

然后只输出没有空格的文件和目录。如果文件或目录有“个人域”之类的空格,则只有“个人”一词。

我需要非常简单的解决方案。也许有比 awk 更好的解决方案。

linux command-line ls

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

如何在 Mac 上持续控制最大系统资源消耗?

在小牛队之前,我可以使用/etc/launchd.conf文件来改变最大系统资源消耗,例如:

limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Run Code Online (Sandbox Code Playgroud)

它不再适用于小牛队。

在最新版本的 OS X 中,正确的做法是什么?

osx sysctl ulimit

86
推荐指数
4
解决办法
11万
查看次数

如何在两个遥控器之间同步文件?

我想在本地 shell 上使用两个远程主机之间传输文件,但如果两个远程指定如下,则 rsync 似乎不支持同步:

$ rsync -vuar host1:/var/www host2:/var/www
The source and destination cannot both be remote.
Run Code Online (Sandbox Code Playgroud)

我可以使用哪些其他解决方法/命令来实现类似的结果?

shell ssh rsync

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

如何确定哪个进程正在创建文件?

给定文件路径,我如何确定哪个进程创建它(和/或读/写)?

process monitoring files

72
推荐指数
2
解决办法
13万
查看次数

如何使用 shell 命令仅显示文本文件中的第一列和最后一列?

我需要一些帮助来弄清楚如何使用 sed 命令仅显示文本文件中的第一列和最后一列。这是我到目前为止对第 1 列的内容:

cat logfile | sed 's/\|/ /'|awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

我试图让最后一列也显示出来的尝试是:

cat logfile | sed 's/\|/ /'|awk '{print $1}{print $8}'
Run Code Online (Sandbox Code Playgroud)

但是,这需要第一列和最后一列并将它们合并到一个列表中。有没有办法用 sed 和 awk 命令清楚地打印第一列和最后一列?

样本输入:

foo|dog|cat|mouse|lion|ox|tiger|bar
Run Code Online (Sandbox Code Playgroud)

shell sed awk

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

如何使用cp以幂等方式递归复制文件夹?

当我使用

cp -R inputFolder outputFolder
Run Code Online (Sandbox Code Playgroud)

结果取决于上下文

  1. 如果outputFolder不存在,则创建,克隆的文件夹路径为outputFolder.
  2. 如果outputFolder存在,则创建的克隆将是outputFolder/inputFolder

这太可怕了,因为我想创建一些安装脚本,如果用户错误地运行了两次,他将outputFolder第一次创建,然后在第二次运行时所有的东西都将在outputFolder/inputFolder.

  • 我总是想要第一个行为:在原始(作为兄弟)旁边创建一个克隆。
  • 我想使用cp便携(例如 MINGW 没有rsync发货)
  • 我检查过,cp -R --parents但这会重新创建一直向上到目录树的路径(因此克隆不会outputFolder但是some/path/outputFolder
  • --remove-destination或者--update如果 2 不改变任何东西,仍然将东西复制到outputFolder/inputFolder

有没有办法在不首先检查outputFolder(如果文件夹不存在则......)或使用的情况下做到这一点rm -rf outputFolder

公认的、可移植的 UNIX 方式是什么?

cp recursive

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

为什么通过 sudo 和 su 运行时 PATH 变量不同?

在我的 Fedora VM 上,使用我的用户帐户运行时/usr/local/bin,我的路径中有:

[justin@justin-fedora12 ~]$ env | grep PATH
 PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Run Code Online (Sandbox Code Playgroud)

同样在运行时su

[justin@justin-fedora12 ~]$ su -
Password: 
[root@justin-fedora12 justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Run Code Online (Sandbox Code Playgroud)

但是,运行 via 时sudo,此目录不在路径中:

[root@justin-fedora12 justin]# exit
[justin@justin-fedora12 ~]$ sudo bash
[root@justin-fedora12 ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

为什么运行 via 时路径会不同sudo

linux shell sudo path environment-variables

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

如何在 youtube-dl 等终端中为命令使用袜子代理?

我通过运行以下命令连接到远程 ssh 服务器:

ssh -D 12345 bob@myserver.com
Run Code Online (Sandbox Code Playgroud)

这将创建一个袜子代理,我可以将其与 Firefox 一起使用以绕过我所在国家/地区的审查制度。但是,我无法在命令行中利用它。

假设我的国家/地区阻止访问 youtube。如何使用 ssh 连接运行命令,例如:

youtube-dl "youtube.com/watch?v=3XjwiV-6_CA"
Run Code Online (Sandbox Code Playgroud)

不被政府封杀?如何为所有终端命令设置袜子代理?

ssh http-proxy proxy socks

47
推荐指数
4
解决办法
12万
查看次数

如何修复 curl sslv3 警报握手失败?

我正在尝试通过以下方式卷曲 HTTPS 网站:

$ curl -v https://thepiratebay.se/
Run Code Online (Sandbox Code Playgroud)

但是它失败并出现错误:

* About to connect() to thepiratebay.se port 443 (#0)
*   Trying 173.245.61.146...
* connected
* Connected to thepiratebay.se (173.245.61.146) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Server hello (2):
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
* Closing connection #0
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)

使用-k/--insecure或添加insecure到 my~/.curlrc没有任何区别。

如何使用curl命令行忽略或强制证书?


使用时wget似乎工作正常。也适用openssl于以下测试:

$ …
Run Code Online (Sandbox Code Playgroud)

command-line osx ssl curl

37
推荐指数
2
解决办法
27万
查看次数