Đầu ra của stat trên OSX


15

Tôi muốn sử dụng statlệnh để lấy thông tin trên một tập tin. Tôi đã làm điều này:

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

Dòng thứ 3 và thứ 4 là đầu ra tôi nhận được. Điều này xảy ra bất cứ khi nào tôi sử dụng statlệnh. Trong khi đó, tất cả mọi người trên internet đều có những thứ như:

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

Tôi đã thử điều này trên Terminal và iTerm 2 và trong một phiên mới. Trên cùng một máy tính xách tay, tôi đã kết nối với máy chủ CentOS của mình và đặt các lệnh tương tự. Nó hoạt động hoàn hảo. Điều này khiến tôi tin rằng ứng dụng đầu cuối không phải là vấn đề. Tôi đang dùng MacBook Pro (Retina, 15 inch, cuối 2013) với phiên bản OS X Yosemite 10.10.1

Điều gì đang xảy ra và làm thế nào tôi có thể khắc phục điều này?

Câu trả lời:


21

Sử dụng -xtùy chọn statsẽ cung cấp cho bạn đầu ra tương tự:

$ 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

Để đặt mặc định này, bạn có thể tạo bí danh và lưu nó vào ~/.bashrc:

alias stat="stat -x"

Trên zsh, vì một số lý do statlà một shell được tích hợp sẵn và che dấu lệnh stat thực tế. Bất kỳ ý tưởng làm thế nào để vô hiệu hóa điều này? (Tôi đã cài đặt lõi GNU trên macOS của mình, nhưng zsh ngăn tôi sử dụng nó).
Ahmet Alp Balkan

9

Các statlệnh mà bạn đã thấy từ “tất cả mọi người trên internet” là một từ coreutils GNU , được tìm thấy trên phi nhúng Linux và Cygwin. Nó cũng có thể là một trong BusyBox , thường được tìm thấy trên Linux nhúng. OSX có một stattiện ích khác (tiện ích từ FreeBSD / NetBSD / OpenBSD), với mục đích tương tự nhưng các tùy chọn khác nhau và định dạng đầu ra khác nhau.

Các statlệnh chưa được chuẩn hóa, vì vậy bạn không thể mong đợi nó để có hành vi tương tự trên tất cả các biến thể Unix. Trong thực tế, có chỉ số BSD và Linux, và nhiều biến thể khác không có statlệnh.


3
Lưu ý rằng không có Linux stat(trừ khi bạn tham khảo Linuxcuộc gọi hệ thống stat ()), chỉ GNU stattừ các lõi của GNU.
Stéphane Chazelas

IRIX cũng đã có một statlệnh từ lâu trước các lệnh GNU hoặc BSD. zshcũng đã có một bản statdựng dài (mặc dù không dài) trước các bản GNU và BSD.
Stéphane Chazelas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.