Linux stat(1) コマンドを BSD stat(1) コマンドに変換

Linux stat(1) コマンドを BSD stat(1) コマンドに変換

背景

クレオンリモートプロジェクト機能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ユーティリティがcoreutilsGNUバージョンだと思いましたが、stat2つの異なるコマンドであることがわかりました。私もそれを直接翻訳しようとしましたが、最終的に奇妙な結果を得ました。

$ 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システムでは(不明)なので(生年月日)の代わりに01つを挿入しました。本当に出生時間をご希望の方に変更してください。%W00%B

形式が変で、その目的を理解できません。ファイルメタデータに基づく「ユニークな」ゴミに置き換えることができるようです。


私はcoreutilsのgstatユーティリティがGNUバージョンのstatであると思っていましたが、私は2つの異なるコマンドでした。

gstat/usr/sbin/gstatFreeBSDでは別のプログラム(、、)ですgstat(8)。あなたが探しているものgnustat

gnustat --printf %W%i%F%F%F%F%X%Y%s /

他のパッケージと同様に、pkg info -l coreutils | grep statパッケージがインストールするファイルが何であるかを知らせますcoreutils

おすすめ記事