locate comando con regex equivalente in OSX

2

Sto imparando linux bash sul mio mac. Esiste un equivalente a questo comando in OSX?

locate --regex 'bin/(bz|gz|zip)'
    
posta user3064085 28.08.2017 - 04:43
fonte

2 risposte

2

La versione macOS di locate non ha un'opzione regex . Puoi utilizzare * e ? nel modello di ricerca ma il gioco è fatto.

Prima di poter usare locate devi abilitarlo (cioè aver costruito il locate database) usando il seguente comando: per impostazione predefinita è disabilitato:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
    
risposta data 28.08.2017 - 10:30
fonte
-1

La versione predefinita di locate su OS X / macOS non supporta questo, come indicato da Tom E.

Apple spedisce la versione BSD della maggior parte degli strumenti da riga di comando (precedentemente chiamata "sottosistema BSD").

Quindi ci sono due risposte alla tua domanda:

  1. Potresti costruire qualsiasi numero di equivalenti comandi oneliners che realizzi lo stesso del comando che hai citato. Per gli studenti, le parole chiave non sono solo regex, ma anche pipe, backtick e altro ancora.

  2. Ma per considerare la prima riga di contesto ("apprendimento linux bash") la seguente risposta potrebbe essere più appropriata:
    Il tuo esempio potrebbe provenire da un libro come "The Linux Command Line: A Complete Introduction". È problematico applicare parola per parola o comando per comando su OS X / macOS. Apple spedisce principalmente strumenti BSD e (quasi?) Tutti in versioni molto obsolete e non sicure (allergia GPL3 fanatica da parte di Apple). Linux spedisce principalmente strumenti GNU che potrebbero avere / avranno spesso gli stessi nomi ma diverse caratteristiche / opzioni rispetto ai loro equivalenti BSD.

macOS può quindi avere non solo un equivalente, ma esattamente lo stesso comando e sintassi che hai dato come esempio. Ma per quello devi installare gli strumenti GNU corrispondenti. Nel tuo caso sopra findutils . Questo contiene il comando locate nel flavor usato dal tuo esempio.

Questo è generalmente raccomandabile se vuoi imparare "linux bash". Installa tutti gli strumenti GNU necessari per seguire gli esempi. Questo include anche una bash attuale. Apple spedisce la versione orrendamente medievale di

/bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.

Mentre GNU bash è molto più recente:

/usr/local/bin/bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.7.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
  • Se vuoi imparare macOS / BSD bash / riga di comando dovresti ottenere altre guide o libri.

  • Se vuoi seguire le tue guide attuali o apprendere veramente il modo GNU / Linux, allora dovresti installare gli strumenti GNU.

Puoi usare i gestori di pacchetti per farlo su macOS, proprio come su altri BSD o linux.

I gestori di pacchetti disponibili semplicemente per la tua vita sono fink , macports e homebrew . Più link a loro e alcune discussioni sui loro rispettivi pregi e difetti possono essere trovati qui .

    
risposta data 28.08.2017 - 12:50
fonte

Leggi altre domande sui tag