背景
CLion 的远程项目功能目前不支持 FreeBSD 作为远程主机操作系统,但我想做一些黑客攻击,看看它是否有效。通过阅读日志文件,我想我已经发现了(其中一个)问题。
2019-04-10 00:13:55,850 [2221079] DEBUG - #com.jetbrains.ssh.nio - UnixSshFS:: SshCommandRunner.execute: test -e "/tmp"
2019-04-10 00:13:55,851 [2221080] DEBUG - ellij.ssh.SshConnectionService - Executing SSH command: env "LC_ALL"="C" "JETBRAINS_REMOTE_RUN"="1" test -e "/tmp" within SSH session @3aa57c95 to <user>@<host>::22
2019-04-10 00:13:55,963 [2221192] DEBUG - #com.jetbrains.ssh.nio - UnixSshFS:: SshCommandRunner.execute: stat --printf "%W%i%F%F%F%F%X%Y%s" "/"
2019-04-10 00:13:55,963 [2221192] DEBUG - ellij.ssh.SshConnectionService - Executing SSH command: env "LC_ALL"="C" "JETBRAINS_REMOTE_RUN"="1" stat --printf "%W%i%F%F%F%F%X%Y%s" "/" within SSH session @3aa57c95 to <user>@<host>:22
2019-04-10 00:13:56,071 [2221300] INFO - #com.jetbrains.ssh.nio -
Exit code 1
基本上,在Linux和FreeBSDstat(1)
上的行为不同,因此以下命令在 FreeBSD-12.0 上失败,停止整个设置过程:
$ stat --printf "%W%i%F%F%F%F%X%Y%s" "/"
stat: illegal option -- -
usage: stat [-FLnq] [-f format | -l | -r | -s | -x] [-t timefmt] [file|handle ...]
我以为gstat
in 的实用程序coreutils
是 GNU 版本stat
,但结果我错了;它们是两个不同的命令。我也尝试过自己翻译它,但我最终得到了一些奇怪的东西:
$ stat -f "%B%i%T%T%T%T%a%Y%z" "/"
15006030802////15041781781024
问题
是否可以为 FreeBSD 重写命令stat --printf "%W%i%F%F%F%F%X%Y%s" "/"
,使其工作方式与在 GNU/Linux 上的对应方式相同?
在 FreeBSD 上应该非常类似于
在 Linux 上,除了
%HT
将扩展到Directory
而不是directory
,就像%F
在 Linux 上一样。我只是插入了一个
0
而不是%W
(出生时间),因为在大多数 Linux 系统上都是0
(未知)。如果您真的想要出生时间0
,请将其替换为。%B
不过这种格式很奇怪,我不明白它的目的。我想它可以替换为基于文件元数据的任何“独特”垃圾;-)
gstat
在 FreeBSD 上是另一个程序 (/usr/sbin/gstat
,gstat(8)
)。您正在寻找gnustat
:就像任何其他软件包
pkg info -l coreutils | grep stat
都会告诉您软件包安装的文件一样coreutils
。