我尝试在ncftp(实际上这是我使用的唯一终端 ftp 客户端)中搜索类似的命令,但没有找到。
grep在远程服务器上使用命令来搜索文件中的字符串的方法(如果可能的话)是什么?
[username@notebook ~]$ cat foo.sh
#!/bin/bash
echo "$0"
[username@notebook ~]$ ./foo.sh
./foo.sh
[username@notebook ~]$
Run Code Online (Sandbox Code Playgroud)
问题:如何输出“foo.sh”?不管它是如何被执行的。
鉴于:
main_east_library
main_west_roof
main_north_roof
minor_south_roof
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用sed(特别是,不awk,tr等等)来创建:
main_east_Library
main_west_Roof
main_north_Roof
minor_south_Roof
Run Code Online (Sandbox Code Playgroud)
就像是:
$ echo "main_west_library
main_west_roof
main_north_roof
minor_south_roof" | sed 's_\3_upcase(\3)_'
Run Code Online (Sandbox Code Playgroud)
虽然这给出了:
sed: -e expression #1, char 16: Invalid back reference
Run Code Online (Sandbox Code Playgroud) 有人可以解释一下这个命令中发生了什么:
echo foo >&2 | grep foo
Run Code Online (Sandbox Code Playgroud)
Zsh (5.0.2) 打印foo两次。一个似乎是标准输出,一个是标准错误,因为运行这些命令:
{ echo foo >&2 | grep foo } >/dev/null
Run Code Online (Sandbox Code Playgroud)
和:
{ echo foo >&2 | grep foo } 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
两者都只打印foo一次。
使用tail与其他标准工具组合分组命令可以使一些强大的结构。例如,要获取文件的第一行和最后一行:
$ seq 10 > file
$ { head -n1; tail -n1; } <file
1
10
Run Code Online (Sandbox Code Playgroud)
当从管道组命令馈送文件的内容,tail不能产生输出,因为管是非lseek的能够:
$ seq 10 | { head -n1; tail -n1; }
1
Run Code Online (Sandbox Code Playgroud)
现在,当内容足够大时,tail工作:
$ seq 10000 | { head -n1; tail -n1; }
1
10000
Run Code Online (Sandbox Code Playgroud)
那是因为在第一次lseek失败后,tail知道它不是一个可查找的文件描述符,并且因为管道的内容还没有被全部读取,它开始读取内容直到结束。
作为用户的观点,我希望无论输入内容大小如何,行为都应该是一致的。我查看了 POSIX tail,lseek文档并没有找到任何描述。
这种行为是否由 POSIX 指定?如果没有,我怎样才能使结果始终一致?
我已经用 GNU tail 和 FreeBSD tail 进行了测试,两者都具有相同的行为。
鉴于这种:
echo AAA | sed -r 's/A/echo B/ge'
Run Code Online (Sandbox Code Playgroud)
我明白了:
Becho Becho B
Run Code Online (Sandbox Code Playgroud)
我原以为我会得到“BBB”。这是 GNU sed 4.2.1 版。发生了什么,我如何使用执行标志,并且在一行上可以进行多次替换(来自 shell,而不是来自 perl 等)?
我正在学习 RHEL 7 并有一些问题。
使用hostnamectl命令,我正在获取 RHEL 7 主机名和其他信息。
如果我想更改主机名,有一些选项可以使用hostnamectl:
[root@linux7 ~]# hostnamectl set-
set-chassis set-deployment set-hostname set-icon-name
Run Code Online (Sandbox Code Playgroud)
要更改主机名,使用静态主机名set-hostname。那么,关于set-icon-name与--pretty和特定的文件时,它得到改变?
给出了下面的例子:
[root@linux7 ~]# hostnamectl set-hostname Linuxindia
[root@linux7 ~]# hostnamectl set-icon-name mumbailinux
[root@linux7 ~]# systemctl restart systemd-hostnamed.service
[root@linuxindia ~]# hostnamectl set-
set-chassis set-deployment set-hostname set-icon-name
[root@linuxindia ~]# hostnamectl set-hostname "hellolinux" --pretty
[root@linuxindia ~]# hostnamectl status
Static hostname: linuxindia
Pretty hostname: hellolinux
Icon name: mumbailinux
Chassis: vm
Machine ID: f3ffdd0447604e20a0a4278c56f4275b
Boot ID: 70c3c85ec1fa4dceb5a7f52789eed524
Virtualization: …Run Code Online (Sandbox Code Playgroud) 所以,这不是问题本身,只是我很好奇的事情。我正在使用从 Debian 分支出来的 Linux Mint MATE。如果我做:
ps afx | grep abcdefg
Run Code Online (Sandbox Code Playgroud)
我得到:
16599 pts/3 S+ 0:00 | \_ grep --color=auto abcdefg
Run Code Online (Sandbox Code Playgroud)
因此,它显示了grep 的过程。但是,这之后的ps管道中:我本来以为上面做的ps,得到的结果,然后将它们传送到grep。那么为什么grep实际上出现在ps结果中呢?以后不就这样了吗?我想我遗漏了一些关于管道实际作用的基本知识。
我想从纪元值以来的秒数中设置日期,例如我想用输入值设置日期1452053571。
我通读了date -help但没有找到任何东西。
有什么参数可以做到吗?