Domanda:
Come trovare tutti gli strumenti disponibili nel terminale mac?
Spear A1
2019-04-16 01:00:30 UTC
view on stackexchange narkive permalink

Sto cercando di impostare una serie di progetti di sviluppo sul mio Mac.Devo eseguire vari strumenti come python, ruby, scala, groovy ecc. Per vedere se uno strumento è disponibile, utilizzo opzioni come

  ruby --version.
 

Vorrei invece vedere tutto l'elenco degli strumenti disponibili nel terminale Mac tramite un unico comando.Qual è il comando / le opzioni per esso?

L'elenco sarà più travolgente che informativo.Su macOS 10.14.4, vedo 1.302 eseguibili in / bin, / sbin, / usr / bin e / usr / sbin.La maggior parte di loro oscuri e / o monouso.Ad esempio: `hpftodit`, che converte i caratteri dal formato HP Tagged Font Metric (TFM) per l'uso con una stampante HP Laser-Jet serie 4 (o più recente) con` groff -Tlj4`.Ok, questo è un esempio estremo, sostengo che il punto sia ancora valido.
Sei risposte:
jksoegaard
2019-04-16 01:14:54 UTC
view on stackexchange narkive permalink

Il più semplice è semplicemente aprire il Terminale e quindi premere due volte il tasto TAB.Ti verrà chiesto se vuoi vedere tutte le possibilità - rispondi "y" e otterrai l'elenco completo.

slm
2019-04-16 01:45:03 UTC
view on stackexchange narkive permalink

Guarda le risposte di questo U&L Q&A intitolato: Elenca tutti i comandi che una shell conosce .

Il mio preferito è utilizzare compgen poiché fa parte della famiglia di strumenti utilizzati per creare il completamento di tutte le schede quando sei in un terminale e premi tab> kbd > + tab due volte.

  $ compgen -c
 

Esempio

  $ compgen -c | coda
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversione-gen
 

Per inciso, se vuoi sapere dove si trova uno di questi eseguibili sul tuo HDD usa digita -a <cmd> per trovarlo:

  $ tipo -a ansible
ansible è alias di "ANSIBLE_CONFIG = ~ / .ansible.cfg ansible"
ansible è / usr / local / bin / ansible
 

Questo mostra che il comando ansible è un alias e risiede anche localmente sull'HDD qui: / usr / local / bin / ansible .

Riferimenti

fd0
2019-04-16 01:39:49 UTC
view on stackexchange narkive permalink

Potresti prendere la variabile PATH e tr anslare i due punti negli spazi, quindi elencare i file in quelle directory.

  ls $ (tr ':' '' <<< "$ PATH")
 

E come sottolinea Peter Cordes, quanto sopra si interromperà se i percorsi delle directory hanno spazi nel loro nome.In una sottoshell, cambia l'IFS (separatore di campo interno) solo con una nuova riga e tr anslate i due punti in una nuova riga.

  (IFS = $ '\ n'; ls $ (tr ':' '\ n' <<< "$ PATH"))
 
Se il tuo "$ PATH" contiene spazi ma non newline, puoi inserire spazi in newline all'interno di una sottoshell `(IFS = $ '\ n'; ls $ (...))` così la suddivisione delle parole avviene solo su newline.
David Anderson
2019-04-16 16:14:56 UTC
view on stackexchange narkive permalink

Quando viene installato un comando, dovrebbe essere stata inserita una voce nel database whatis . Tuttavia, non è necessario farlo. Per ottenere una descrizione di una riga di un comando nel database, inserisci whatis seguito dal comando. Ad esempio, l'output dell'inserimento di whatis "ruby" è mostrato di seguito.

  erb (1) - Ruby Templating
irb (1) - Interactive Ruby Shell
ri (1) - Front-end di riferimento dell'API Ruby
ruby (1) - Linguaggio di scripting orientato agli oggetti interpretato
 

Questo comando whatis accetterà espressioni regolari. Pertanto, per ottenere un elenco di tutti i comandi nel database, immettere il comando fornito di seguito.

  whatis "."
 

La pagina man di whatis afferma quanto segue:

whatis ricerca una serie di file di database contenenti brevi descrizioni di comandi di sistema per parole chiave e visualizza il risultato sullo standard output. Vengono visualizzate solo le corrispondenze di parole complete.

Esiste anche un comando simile chiamato apropos . La pagina man di apropos afferma quanto segue:

apropos ricerca una serie di file di database contenenti brevi descrizioni di comandi di sistema per parole chiave e visualizza il risultato sullo standard output.

Fondamentalmente, la differenza è che apropos non richiede corrispondenze di parole complete. Ad esempio, whatis "string" non trova una corrispondenza quando incontra stringhe , ma apropos "string" sì.

Nimesh Neema
2019-04-16 18:45:45 UTC
view on stackexchange narkive permalink

Seguendo ciò che @jksoegaard ha già menzionato, il modo più semplice è usare la funzionalità di completamento automatico Tab in Bash. Premendo due volte il tasto Tab vengono elencati tutti i comandi interni della shell disponibili, i comandi esterni e gli alias disponibili. Se inserisci i caratteri iniziali di un comando, i comandi corrispondenti vengono elencati quando premi due volte il tasto Tab .

Sono disponibili gestori di pacchetti di terze parti per macOS che ti consentono di installare strumenti della riga di comando che non sono disponibili nell'installazione nativa di macOS o hanno installato la versione precedente. Un paio di gestori di pacchetti popolari tra gli sviluppatori di software sono Homebrew e MacPorts.

Pertanto, se sei interessato al più ampio spettro di strumenti per sviluppatori disponibili per l'esecuzione sul tuo Mac, puoi anche elencare tutti gli strumenti della riga di comando disponibili per una facile installazione ed esecuzione eseguendo brew search per Homebrew e ricerca porta per MacPorts. L'esecuzione di tali comandi richiede l'installazione dei rispettivi gestori di pacchetti sul sistema.

Kevin
2019-04-17 00:44:21 UTC
view on stackexchange narkive permalink

Per completezza, se usi zsh , puoi usare ls "$ {(@) path} (N)" . Per ottenere un elenco raggruppato per directory, utilizza ls "$ {(@) path}" / * (- * N) o printf "% s \ n" "$ {(@) path} "/ * (- * N) (non ordinato ma nell'ordine in cui verrebbero trovati); printf "% s \ n" "$ {(@) path}" / * (- * N) | xargs -L 1 nome base | sort -u ti fornirà un elenco dei soli comandi senza percorsi.

Nota che questo mostra solo eseguibili, non alias o funzioni. Per ottenerli, usa alias o typeset -f + | grep -v '^ _' rispettivamente.

Esempio di output di ciascuno:

 % ls "$ {(@) path}" (N)
/bidone:
[gatto cp
[...]
 test di sincronizzazione wait4path

/ sbin:
apfs_hfs_convert fsck fstyp
[...]
 
 % ls "$ {(@) path}" / * (- * N)
/ bin / [/ usr / bin / nc / usr / local / bin / gmktemp
/ bin / bash / usr / bin / ncal / usr / local / bin / gmv
/ bin / cat / usr / bin / ncctl / usr / local / bin / gnice
/ bin / chmod / usr / bin / ncdestroy / usr / local / bin / gnl
/ bin / cp / usr / bin / ncinit / usr / local / bin / gnohup
/ bin / csh / usr / bin / nclist / usr / local / bin / gnproc
 
 % printf "% s \ n" "$ {(@) path}" / * (- * N)
/ usr / local / bin / 2to3
/ usr / local / bin / 2to3-2
/usr/local/bin/2to3-2.7
[...]
/ usr / sbin / AppleFileServer
/ usr / sbin / BootCacheControl
/ usr / sbin / DevToolsSecurity
/ usr / sbin / DirectoryService
[...]
 
 % printf "% s \ n" "$ {(@) path}" / * (- * N) | xargs -L 1 nome base | sort -u
2to3
2to3-
2to3-2
2to3-2.7
2to3-3.7
7z
7za
7zr
AppleFileServer
AssetCacheLocatorUtil
AssetCacheManagerUtil
[...]
znew
zprint
zsh
zsh-5.7.1
 


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...