Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

2
Shell脚本是否有办法知道哪个程序执行了它?
在* nix世界中,shell脚本是否可以获取有关哪个程序已执行该程序的信息? 例: /path/to/script1 /path/to/script_xyz 在这种假想的情况下,script_xyz将具有路径信息(/path/to/script1) 要么 过程PID 执行它的实体。 注意:我对不同的解决方案和方法感到好奇,我不希望这真的可行


1
nmap-ncat中gnu-netcat的'-z'等效选项是什么?
我在使用以下命令运行脚本之前检查服务上的侦听端口: until nc -z $HOST $PORT do echo "waiting for service to be available..." sleep 0.5 done exec "/my/script" 它曾经与gnu-netcat一起使用,但是现在,我已经升级了Linux发行版,并且它使用了nmap-ncat作为/usr/bin/nc命令。 我想知道与nmap-ncat包一起使用的等效解决方案。
13 netcat  nmap 


2
如何使用特殊字符作为普通字符?
许多问题,例如“如何键入双引号char(“)?” 被问到,而我们不想以相同的答案使我们的社区混乱(输入时,\"如果没有用's "括起来,则键入它,如果没有用s 括起来'。)因此,问题就在这里。 您不能像普通字符一样在终端中键入特殊字符,例如,此命令将失败: echo Updates (11) 那么,如何在终端中像正常字符一样键入这些字符? !#$^&*?[](){}<>~;'"\|<space><tab><newline>

1
替代不退出的“头”?
我需要一个实用程序,该实用程序将打印前n行,但随后继续运行,吸收其余行,但不打印它们。我用它来使终端不被需要继续运行的进程的输出所淹没(它将结果写入文件)。 我想我可以做process | {head -n 100; cat > /dev/null},但是还有什么更优雅的选择吗?
13 head 

4
{a,b,c}什么时候用bash扩展,什么时候不扩展?
一个bash脚本,其中包含 for i in {a,b}-{1,2}; do echo $i; done 版画 a-1 a-2 b-1 b-2 执行时。这是我所期望的-随着{a,b}构造的扩展。 但是,当(另一个)脚本包含 v={a,b}-{1,2} echo $v 它打印 {a,b}-{1,2} 这不是我所期望的。我希望它能打印出来a-1 a-2 b-1 b-2。显然,该{a,b}构造未扩展。 我可以像这样使它扩展 v=$(echo {a,b}-{1,2}) 基于这些观察,我有两个问题:1){a,b}构造何时扩展?2)是否$(echo {a,b}-{1,2})在需要时触发扩展的首选方法?

1
进入文件夹时设置临时b​​ash别名
有时,我喜欢在文件夹中输入时具有非常自定义的bash别名和键绑定(可以是一个用来从CLI键入许多命令的项目)。 假设当我输入“ projectAlpha /”之类的文件夹时,我期望一些自定义别名,例如: alias doTaskX='./app arg1 arg2...|filter arg1 arg2...' ... 我想到的不只是: 显示有用的消息,显示别名和常用命令 显示我的项目的一些常见的自定义键绑定 但是,一旦我离开项目的根目录,这些设置就将不可用。 今天最好的方法是什么?
13 bash  shell  alias 

3
如何删除两个回显命令的输出之间的\ n?
我有一个文本文件,每行包含一个文件名: 111_c4l5r120.png 123_c4l4r60.png 135_c4l4r180.png 147_c4l3r60.png 15_c4l1r120.png ... 我想将其转换为以下形状: 111_c4l5r120.png 111 123_c4l4r60.png 123 135_c4l4r180.png 135 147_c4l3r60.png 147 15_c4l1r120.png 15 ... 使用此代码: #!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do echo "$line" >> output.txt echo "$line" | cut -d'_' -f 1 >> output.txt done < "$1" 但是,结果是: 111_c4l5r120.png …


5
检查主机名的IP时出现错误“主机名:名称或服务未知”
我在公司的云服务上运行Ubuntu 14.04(我的实例具有弹性IP)。我想检查我正在通过命令行运行的实例的IP地址,但是没有用。 root@ubuntu14-graphite:~# hostname ubuntu14-graphite root@ubuntu14-graphite:~# hostname -i hostname: Name or service not known 我不明白原因。 我尝试ping到ubuntu14-graphite,但它说: unknown host ubuntu14-graphite. 这是否意味着我的房东甚至不存在? 我有另一台服务器(不是云实例,而是物理服务器)。在此服务器上,我安装了CentOS 6.7。我检查了主机名的IP,即使没什么特别的,它也能正常工作/etc/hosts。 这是的输出cat /etc/hosts: 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts

2
bash中的“ <Esc> Kv”是什么
当我在bash并按Esc,Shift+ K,V,庆典触发了$EDITOR类似的文件名/tmp/bash-fc-186566385。 为什么会这样,目的是什么? 我可能需要提一下,我正在使用bash运行bash set -o vi。


5
如何知道某些PID监听哪些端口?
我有某个进程的PID侦听OS X上的某些端口,我需要知道该进程侦听了哪些端口。我该怎么做? 我知道我可以lsof用来了解哪个进程正在监听某个端口,但是我需要执行逆操作。 谢谢。 UPD OS X使用BSD实用程序,所以我有BSD netstat而不是Linux netstat。Linux netstat有-p显示PID的选项,BSD netstat用于-p指定端口,没有显示PID的选项。
13 networking  osx  bsd 

1
为什么有些程序立即返回外壳程序,而另一些程序直到执行完成才返回外壳程序?
我从《现代操作系统》一书中了解到,运行命令时,外壳程序会创建一个子进程,等待该子进程直到子进程完成执行,然后再等待用户的另一条命令。对于许多类似的程序,确实确实如此gedit。直到我关闭终端才会接受命令gedit。但是,当我打开原子代码编辑器时,即使运行编辑器,shell也会立即返回,准备接受下一条命令。关闭终端不会关闭原子。这是否意味着编辑器不是作为子进程打开的?什么使得这种可能性成为可能? 跑步ps au | grep atom给 &lt;username&gt; 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.