背景
クレオンリモートプロジェクト機能FreeBSDは現在リモートホストオペレーティングシステムとしてサポートされていませんが、それが動作していることを確認するためにハッキングをやりたいと思いました。ログファイルを読みながら問題の1つを見つけたようです。
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
基本的にstat(1)
動作が異なりますLinuxなど。FreeBSDしたがって、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
ユーティリティがcoreutils
GNUバージョンだと思いましたが、stat
2つの異なるコマンドであることがわかりました。私もそれを直接翻訳しようとしましたが、最終的に奇妙な結果を得ました。
$ stat -f "%B%i%T%T%T%T%a%Y%z" "/"
15006030802////15041781781024
質問
stat --printf "%W%i%F%F%F%F%X%Y%s" "/"
GNU / Linuxコマンドと同じように機能するようにFreeBSDコマンドを再構築できますか?
答え1
stat -f 0%i%HT%HT%HT%HT%a%m%z /
FreeBSDでは、次のように非常に似ています。
stat --printf %W%i%F%F%F%F%X%Y%s /
Linuxでは、%HT
拡張子を除いてLinuxと同じではありませDirectory
ん。directory
%F
ほとんどのLinuxシステムでは(不明)なので(生年月日)の代わりに0
1つを挿入しました。本当に出生時間をご希望の方に変更してください。%W
0
0
%B
形式が変で、その目的を理解できません。ファイルメタデータに基づく「ユニークな」ゴミに置き換えることができるようです。
私はcoreutilsのgstatユーティリティがGNUバージョンのstatであると思っていましたが、私は2つの異なるコマンドでした。
gstat
/usr/sbin/gstat
FreeBSDでは別のプログラム(、、)ですgstat(8)
。あなたが探しているものgnustat
:
gnustat --printf %W%i%F%F%F%F%X%Y%s /
他のパッケージと同様に、pkg info -l coreutils | grep stat
パッケージがインストールするファイルが何であるかを知らせますcoreutils
。