嗨,我觉得这是一个显而易见的问题,但到目前为止我还没有得到很好的答案。给定服务的名称(我知道在本地主机上运行),是否有任何网络命令行工具(例如(netstat
/ ss
))可以告诉我该服务正在哪个端口运行?理想情况下是这样的:
$ some-program --service-name='mysql' localhost
'mysql' is running at localhost:3306
Run Code Online (Sandbox Code Playgroud)
我觉得有一些解决方案,但没有一个能够充分解决这个问题。例如,我考虑了以下两个ss
命令:
ss -tuln
与输出:Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:21119 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:37766 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:54399 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:5353 0.0.0.0:*
udp UNCONN 0 0 [::]:51755 [::]:*
udp UNCONN 0 0 [::]:5353 [::]:*
udp UNCONN 0 0 *:1716 *:*
tcp LISTEN 0 …
Run Code Online (Sandbox Code Playgroud) 我尝试运行以下命令:
find . -type f -exec rename -v 's/ /_/g' {} \;
Run Code Online (Sandbox Code Playgroud)
, 以递归方式重命名所有文件,名称中的空格和下划线。问题是它有时有效,有时无效。当它不起作用时,我收到以下错误:
Can't rename ./dir/subdir/file name with spaces ./dir/subdir/file_name_with_spaces: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?