Các công cụ dòng lệnh có sẵn theo mặc định


7

Trong một hệ thống dựa trên unix, một số lệnh có sẵn theo mặc định (trong /binhoặc /usr/bin). Giả sử trong một thời gian tôi đã cài đặt thêm các công cụ như git, svn

Trong OS X nếu tôi cài đặt XCode và sau đó là gói công cụ dòng lệnh, một gói các công cụ phát triển sẽ được cài đặt vào hệ thống. Vậy làm thế nào tôi có thể biết những lệnh nào có sẵn tại thời điểm cài đặt HĐH?

netcat, nccó sẵn theo mặc định trên Mac OSX hoặc được cài đặt cùng với các công cụ dòng lệnh?

Câu trả lời:


9

Vậy làm thế nào tôi có thể biết những lệnh nào có sẵn tại thời điểm cài đặt?

Các lệnh khả dụng sau khi cài đặt Mavericks mới (OS X 10.9) thuộc về một trong bốn gói sau:

  • com.apple.pkg.BSD
  • com.apple.pkg.BaseSystemBinaries
  • com.apple.pkg.BaseSystemResources
  • com.apple.pkg.Essentials

(Lưu ý rằng, kể từ High Sierra (macOS 10.13), các lệnh đã được chuyển sang gói này com.apple.pkg.Core.)

Bạn có thể liệt kê các lệnh có trong mọi gói với lệnh này:

pkgutil --files <package name> | egrep '^usr/s*bin|^s*bin/'

Được netcat, nctheo mặc định trên Mac OS X hoặc được cài đặt cùng với các công cụ dòng lệnh?

Tôi tìm thấy ncvới:

pkgutil --files com.apple.pkg.BaseSystemBinaries | egrep '^usr/bin/nc'

(Trên High Sierra, hãy chạy pkgutil --files com.apple.pkg.Core | egrep '^usr/bin/nc'thay thế.)

vì vậy, có, ncthuộc về cài đặt hệ điều hành cơ bản.

Tôi không thể tìm thấy netcat, vì vậy nếu bạn có nó trên hệ thống của mình thì nó đã được cài đặt sau.


Để liệt kê tất cả các lệnh được cung cấp bởi tất cả các gói, hãy chạy trong Terminal:

for p in $(pkgutil --packages); do 
  list_of_cmds=$(pkgutil --files $p | egrep '^usr/s*bin|^s*bin/')
  if [ ! -z "$list_of_cmds" ]; then
    echo ">>>> $p <<<<"
    echo "$list_of_cmds"
  fi
done

Bạn cũng có thể chuyển lệnh đến một tệp trên Màn hình để tham khảo sau:

for p in $(pkgutil --packages); do 
  list_of_cmds=$(pkgutil --files $p | egrep '^usr/s*bin|^s*bin/')
  if [ ! -z "$list_of_cmds" ]; then
    echo ">>>> $p <<<<"
    echo "$list_of_cmds"
  fi
done > ~/Desktop/cmds_from_pkgs.txt

ncIS netcat.
Matthieu Riegler

Thực tế, có một số chương trình netcat, trên các máy chủ SUSE Linux mà tôi quản lý nó được gọi netcat, trên OS X, nó được gọi nc, trên Ubuntu 12.04 netcatlà một liên kết tượng trưng nc. Và sau đó tất nhiên bạn có ncat, có sẵn tại nmap.org. ncdường như là tên BSD ưa thích, trong khi GNU và một số bản phân phối sử dụng netcat. Mặc dù SUSE netcatdường như là bản triển khai ban đầu của hobbit@avian.org, nhưng OS X ncđã được viết lại bởi Erick Jackson (phần AUTHOR trong trang nam), đó là lý do tại sao tôi coi ncnetcatnhư các chương trình khác nhau.
jaume

Một tùy chọn khác là sử dụng pkgutil --file-info /usr/bin/ncđể có được các gói đã cài đặt. Lệnh cũng liệt kê các bản cập nhật hệ điều hành đã cập nhật tệp kể từ khi cài đặt. Vào ngày 10.11, gói chứa nccom.apple.pkg.Essentials, vì vậy, nó được bao gồm theo mặc định.
vjt

1
On High Sierra (có thể sớm quá) các gói nói trên dường như đã được thay thế bằng com.apple.pkg.Core.
Leo Nikkilä

1
@ LeoNikkilä Cảm ơn bạn đã ủng hộ, tôi đã cập nhật câu trả lời của mình để phản ánh sự thay đổi.
jaume

1

netcat là một phần của Binaries hệ thống cơ sở như bạn có thể thấy với

pkgutil --files com.apple.pkg.BaseSystemBinaries | grep "usr/bin/nc"

-4

Bạn thực sự không thể biết thực thi nào là một phần của HĐH gốc và được cài đặt sau.

Nhìn vào trang người đàn ông nói chung sẽ cho bạn một ý tưởng tốt tuy nhiên. Nếu trang man bắt đầu một cái gì đó như "Hướng dẫn về lệnh chung của BSD" thì đó gần như chắc chắn là một phần của HĐH gốc. Bạn sẽ nhận thấy rằng những điều này cũng sẽ kết thúc bằng một dòng chứa 'BSD' hoặc 'Mac OS X' ở mỗi đầu.

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.