Output stat pada OSX

15

Saya ingin menggunakan statperintah untuk mendapatkan informasi tentang file. Saya melakukan ini:

Josephs-MacBook-Pro:Desktop Joseph$ echo 'hello' > info.txt
Josephs-MacBook-Pro:Desktop Joseph$ stat info.txt
16777220 21195549 -rw-r--r-- 1 Joseph staff 0 6 "Dec 21 20:45:31 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" "Dec 21 20:45:30 2014" 4096 8 0 info.txt

Baris 3 dan 4 adalah output yang saya dapatkan. Ini terjadi setiap kali saya menggunakan statperintah. Sementara itu semua orang di internet mendapatkan hal-hal seperti:

File: `index.htm'
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--) 
Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 -0600
Change: 2007-04-02 
16:36:21.000000000 -0600

Saya mencoba ini di Terminal dan iTerm 2 dan dalam sesi baru. Di laptop yang sama, saya terhubung ke server CentOS saya dan memasukkan perintah yang sama. Itu bekerja dengan sempurna. Ini membuat saya percaya bahwa aplikasi terminal bukanlah masalah. Saya menggunakan MacBook Pro (Retina, 15 inci, Akhir 2013) dengan OS X Yosemite versi 10.10.1

Apa yang sedang terjadi dan bagaimana cara memperbaikinya?

jgleoj23
sumber

Jawaban:

21

Menggunakan -xopsi untuk statakan memberi Anda hasil yang serupa:

$ stat -x foo
  File: "foo"
  Size: 0            FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  501/   Tyilo)  Gid: (    0/   wheel)
Device: 1,4   Inode: 8626874    Links: 1
Access: Mon Dec 22 06:17:54 2014
Modify: Mon Dec 22 06:17:54 2014
Change: Mon Dec 22 06:17:54 2014

Untuk menjadikan ini default, Anda dapat membuat alias dan menyimpannya ke ~/.bashrc:

alias stat="stat -x"
Tyilo
sumber
Pada zsh, untuk beberapa alasan statshell-built in dan menutupi perintah stat yang sebenarnya. Ada ide cara menonaktifkan ini? (Saya memiliki GNU coreutils yang diinstal pada macOS saya, tetapi zsh mencegah saya menggunakannya).
Ahmet Alp Balkan
9

The statperintah yang Anda lihat dari “semua orang di internet” adalah salah satu dari GNU coreutils , yang ditemukan di non-embedded Linux dan Cygwin. Bisa juga dari BusyBox , yang biasa ditemukan di embedded Linux. OSX memiliki statutilitas yang berbeda (yang dari FreeBSD / NetBSD / OpenBSD), dengan tujuan yang sama tetapi opsi yang berbeda dan format output yang berbeda.

The statperintah tidak standar, sehingga Anda tidak bisa berharap untuk memiliki perilaku yang sama pada varian semua Unix. Dalam praktiknya, ada stat BSD, dan stat Linux, dan banyak varian lainnya tidak memiliki statperintah.

Gilles 'SO- berhenti menjadi jahat'
sumber
3
Perhatikan bahwa tidak ada Linux stat(kecuali Anda merujuk ke Linuxpanggilan sistem stat), hanya GNU statdari GNU coreutils.
Stéphane Chazelas
IRIX juga memiliki statperintah jauh sebelum yang GNU atau BSD. zshjuga memiliki statbuiltin lama (meskipun tidak lebih lama) sebelum yang GNU dan BSD.
Stéphane Chazelas