How to find all the available tools in mac terminal? Announcing the arrival of Valued...
Ring Automorphisms that fix 1.
Why was the term "discrete" used in discrete logarithm?
Should I use a zero-interest credit card for a large one-time purchase?
Output the ŋarâþ crîþ alphabet song without using (m)any letters
Dating a Former Employee
Can a non-EU citizen traveling with me come with me through the EU passport line?
51k Euros annually for a family of 4 in Berlin: Is it enough?
Why do we bend a book to keep it straight?
Understanding Ceva's Theorem
How do pianists reach extremely loud dynamics?
Check which numbers satisfy the condition [A*B*C = A! + B! + C!]
How to align text above triangle figure
What is Arya's weapon design?
How much time will it take to get my passport back if I am applying for multiple Schengen visa countries?
Gordon Ramsay Pudding Recipe
Do I really need recursive chmod to restrict access to a folder?
At the end of Thor: Ragnarok why don't the Asgardians turn and head for the Bifrost as per their original plan?
What is the meaning of the new sigil in Game of Thrones Season 8 intro?
Sci-Fi book where patients in a coma ward all live in a subconscious world linked together
How come Sam didn't become Lord of Horn Hill?
Using audio cues to encourage good posture
What's the meaning of 間時肆拾貳 at a car parking sign
Denied boarding although I have proper visa and documentation. To whom should I make a complaint?
Can I cast Passwall to drop an enemy into a 20-foot pit?
How to find all the available tools in mac terminal?
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Should an RSS feed of hot network questions feed any chat room(s) here?How to migrate my Mac OS X application and data from MacBook Pro to Mac Mini?Automating terminals at startupLoad .bash_profile automatically on Terminal.app startup?Auto open 4 terminal sessions and SSH them to a given hostTerminal bash commands stopped workingHelp Understanding Terminal's CommandHow to programmatically start commands in Terminal tabs without losing focusIs it possible to make a folder look and behave like a file?How can I fix my terminal when editing the PATH in .bash_profile has the startup hang and I get no prompt?How can I make sure that the title of a Terminal tab/window is identical to the command I typed
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
I am trying to setup a bunch of development projects in my Mac. I have to run various tools like python, ruby, scala, groovy etc.
To see if a tool is available I use options like
ruby --version.
Instead I would like to see all the list of tools available in Mac terminal via a single command. What is the command/options for it?
macos terminal iterm
add a comment |
I am trying to setup a bunch of development projects in my Mac. I have to run various tools like python, ruby, scala, groovy etc.
To see if a tool is available I use options like
ruby --version.
Instead I would like to see all the list of tools available in Mac terminal via a single command. What is the command/options for it?
macos terminal iterm
10
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer withgroff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.
– Gordon Davisson
yesterday
add a comment |
I am trying to setup a bunch of development projects in my Mac. I have to run various tools like python, ruby, scala, groovy etc.
To see if a tool is available I use options like
ruby --version.
Instead I would like to see all the list of tools available in Mac terminal via a single command. What is the command/options for it?
macos terminal iterm
I am trying to setup a bunch of development projects in my Mac. I have to run various tools like python, ruby, scala, groovy etc.
To see if a tool is available I use options like
ruby --version.
Instead I would like to see all the list of tools available in Mac terminal via a single command. What is the command/options for it?
macos terminal iterm
macos terminal iterm
edited 5 hours ago
Spear A1
asked yesterday
Spear A1Spear A1
765
765
10
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer withgroff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.
– Gordon Davisson
yesterday
add a comment |
10
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer withgroff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.
– Gordon Davisson
yesterday
10
10
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:
hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.– Gordon Davisson
yesterday
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:
hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.– Gordon Davisson
yesterday
add a comment |
6 Answers
6
active
oldest
votes
The easiest is simply to open the Terminal and then press the TAB key twice. You'll be asked if you want to see all possibilities - reply "y" and you'll get the full list.
add a comment |
See the answers from this U&L Q&A titled:
List all commands that a shell knows
.
My personal favorite is to utilize compgen
since this is part of the family of tools used to build all the tab completion when you're in a terminal and hit tab> + tab twice.
$ compgen -c
Example
$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen
Incidentally, if you want to know where one of these executables lives on your HDD use type -a <cmd>
to find it:
$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible
This shows that the command ansible
is an alias and also lives locally on the HDD here: /usr/local/bin/ansible
.
References
- 8.7 Programmable Completion Builtins
add a comment |
You could take the PATH variable and tr
anslate the colons into spaces then list the files in those directories.
ls $(tr ':' ' ' <<<"$PATH")
And as Peter Cordes points out, the above will break if directory paths have spaces in their name. In a subshell, change the IFS (Internal Field Separator) to only a newline and tr
anslate the colons to newlines.
( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") )
1
If your$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an(IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.
– Peter Cordes
17 hours ago
add a comment |
When a command is installed, an entry should have been placed in the whatis
database. However, there is no requirement to do so. To get a one line description of a command in the database, enter whatis
followed by the command. For example, the output from entering whatis "ruby"
is shown below.
erb(1) - Ruby Templating
irb(1) - Interactive Ruby Shell
ri(1) - Ruby API reference front end
ruby(1) - Interpreted object-oriented scripting language
This the whatis
command will accept regular expressions. Therefore, to get a list of all commands in the database, enter the command given below.
whatis "."
The man page for whatis
states the following:
whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed.
There also exists a similar command called apropos
. The man page for apropos
states the following:
apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
Basically, the difference is apropos
does not require complete word matches. For example, whatis "string"
would not find a match when encountering strings
, but apropos "string"
would.
add a comment |
For completeness's sake, if you use zsh
, you can use ls "${(@)path}(N)"
. To get a list grouped by directory, use ls "${(@)path}"/*(-*N)
or printf "%sn" "${(@)path}"/*(-*N)
(unsorted but in the order they would be found); printf "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | sort -u
will give you a list of just the commands without paths.
Do note that this only shows executables, not aliases or functions. To get those, use alias
or typeset -f + | grep -v '^_'
respectively.
Sample output of each:
% ls "${(@)path}"(N)
/bin:
[ cat cp
[...]
sync test 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 "%sn" "${(@)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 "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | 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
add a comment |
Seconding what @jksoegaard already mentioned, the simplest way is to use Tab autocompletion feature in Bash. Hitting the Tab key twice lists all available shell internal commands, external commands and alias available. If you enter the initial characters of a command, the matching commands are listed when hitting Tab key twice.
There are 3rd party package managers available for macOS which lets you install command-line-tools which are either unavailable in the native installation of macOS, or have their older version installed. A couple popular package managers among software developers are Homebrew and MacPorts.
Thus, if you are interested in the broader spectrum of developer tools available to run on your Mac, you can also list all the command-line-tools available for easy installation and running by executing brew search
for Homebrew and port search
for MacPorts. Executing the said commands require the respective package managers to be installed on your system.
add a comment |
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
The easiest is simply to open the Terminal and then press the TAB key twice. You'll be asked if you want to see all possibilities - reply "y" and you'll get the full list.
add a comment |
The easiest is simply to open the Terminal and then press the TAB key twice. You'll be asked if you want to see all possibilities - reply "y" and you'll get the full list.
add a comment |
The easiest is simply to open the Terminal and then press the TAB key twice. You'll be asked if you want to see all possibilities - reply "y" and you'll get the full list.
The easiest is simply to open the Terminal and then press the TAB key twice. You'll be asked if you want to see all possibilities - reply "y" and you'll get the full list.
answered yesterday
jksoegaardjksoegaard
20.9k12151
20.9k12151
add a comment |
add a comment |
See the answers from this U&L Q&A titled:
List all commands that a shell knows
.
My personal favorite is to utilize compgen
since this is part of the family of tools used to build all the tab completion when you're in a terminal and hit tab> + tab twice.
$ compgen -c
Example
$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen
Incidentally, if you want to know where one of these executables lives on your HDD use type -a <cmd>
to find it:
$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible
This shows that the command ansible
is an alias and also lives locally on the HDD here: /usr/local/bin/ansible
.
References
- 8.7 Programmable Completion Builtins
add a comment |
See the answers from this U&L Q&A titled:
List all commands that a shell knows
.
My personal favorite is to utilize compgen
since this is part of the family of tools used to build all the tab completion when you're in a terminal and hit tab> + tab twice.
$ compgen -c
Example
$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen
Incidentally, if you want to know where one of these executables lives on your HDD use type -a <cmd>
to find it:
$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible
This shows that the command ansible
is an alias and also lives locally on the HDD here: /usr/local/bin/ansible
.
References
- 8.7 Programmable Completion Builtins
add a comment |
See the answers from this U&L Q&A titled:
List all commands that a shell knows
.
My personal favorite is to utilize compgen
since this is part of the family of tools used to build all the tab completion when you're in a terminal and hit tab> + tab twice.
$ compgen -c
Example
$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen
Incidentally, if you want to know where one of these executables lives on your HDD use type -a <cmd>
to find it:
$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible
This shows that the command ansible
is an alias and also lives locally on the HDD here: /usr/local/bin/ansible
.
References
- 8.7 Programmable Completion Builtins
See the answers from this U&L Q&A titled:
List all commands that a shell knows
.
My personal favorite is to utilize compgen
since this is part of the family of tools used to build all the tab completion when you're in a terminal and hit tab> + tab twice.
$ compgen -c
Example
$ compgen -c | tail
deepcopy-gen
kube-controller-manager
informer-gen
lister-gen
etcd
gen-apidocs
kube-apiserver
kubectl
kubebuilder
conversion-gen
Incidentally, if you want to know where one of these executables lives on your HDD use type -a <cmd>
to find it:
$ type -a ansible
ansible is aliased to `ANSIBLE_CONFIG=~/.ansible.cfg ansible'
ansible is /usr/local/bin/ansible
This shows that the command ansible
is an alias and also lives locally on the HDD here: /usr/local/bin/ansible
.
References
- 8.7 Programmable Completion Builtins
edited yesterday
answered yesterday
slmslm
1,014715
1,014715
add a comment |
add a comment |
You could take the PATH variable and tr
anslate the colons into spaces then list the files in those directories.
ls $(tr ':' ' ' <<<"$PATH")
And as Peter Cordes points out, the above will break if directory paths have spaces in their name. In a subshell, change the IFS (Internal Field Separator) to only a newline and tr
anslate the colons to newlines.
( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") )
1
If your$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an(IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.
– Peter Cordes
17 hours ago
add a comment |
You could take the PATH variable and tr
anslate the colons into spaces then list the files in those directories.
ls $(tr ':' ' ' <<<"$PATH")
And as Peter Cordes points out, the above will break if directory paths have spaces in their name. In a subshell, change the IFS (Internal Field Separator) to only a newline and tr
anslate the colons to newlines.
( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") )
1
If your$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an(IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.
– Peter Cordes
17 hours ago
add a comment |
You could take the PATH variable and tr
anslate the colons into spaces then list the files in those directories.
ls $(tr ':' ' ' <<<"$PATH")
And as Peter Cordes points out, the above will break if directory paths have spaces in their name. In a subshell, change the IFS (Internal Field Separator) to only a newline and tr
anslate the colons to newlines.
( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") )
You could take the PATH variable and tr
anslate the colons into spaces then list the files in those directories.
ls $(tr ':' ' ' <<<"$PATH")
And as Peter Cordes points out, the above will break if directory paths have spaces in their name. In a subshell, change the IFS (Internal Field Separator) to only a newline and tr
anslate the colons to newlines.
( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") )
edited 16 hours ago
answered yesterday
fd0fd0
6,47511431
6,47511431
1
If your$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an(IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.
– Peter Cordes
17 hours ago
add a comment |
1
If your$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an(IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.
– Peter Cordes
17 hours ago
1
1
If your
$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.– Peter Cordes
17 hours ago
If your
$PATH
contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...))
subshell so word-splitting only happens on newline.– Peter Cordes
17 hours ago
add a comment |
When a command is installed, an entry should have been placed in the whatis
database. However, there is no requirement to do so. To get a one line description of a command in the database, enter whatis
followed by the command. For example, the output from entering whatis "ruby"
is shown below.
erb(1) - Ruby Templating
irb(1) - Interactive Ruby Shell
ri(1) - Ruby API reference front end
ruby(1) - Interpreted object-oriented scripting language
This the whatis
command will accept regular expressions. Therefore, to get a list of all commands in the database, enter the command given below.
whatis "."
The man page for whatis
states the following:
whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed.
There also exists a similar command called apropos
. The man page for apropos
states the following:
apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
Basically, the difference is apropos
does not require complete word matches. For example, whatis "string"
would not find a match when encountering strings
, but apropos "string"
would.
add a comment |
When a command is installed, an entry should have been placed in the whatis
database. However, there is no requirement to do so. To get a one line description of a command in the database, enter whatis
followed by the command. For example, the output from entering whatis "ruby"
is shown below.
erb(1) - Ruby Templating
irb(1) - Interactive Ruby Shell
ri(1) - Ruby API reference front end
ruby(1) - Interpreted object-oriented scripting language
This the whatis
command will accept regular expressions. Therefore, to get a list of all commands in the database, enter the command given below.
whatis "."
The man page for whatis
states the following:
whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed.
There also exists a similar command called apropos
. The man page for apropos
states the following:
apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
Basically, the difference is apropos
does not require complete word matches. For example, whatis "string"
would not find a match when encountering strings
, but apropos "string"
would.
add a comment |
When a command is installed, an entry should have been placed in the whatis
database. However, there is no requirement to do so. To get a one line description of a command in the database, enter whatis
followed by the command. For example, the output from entering whatis "ruby"
is shown below.
erb(1) - Ruby Templating
irb(1) - Interactive Ruby Shell
ri(1) - Ruby API reference front end
ruby(1) - Interpreted object-oriented scripting language
This the whatis
command will accept regular expressions. Therefore, to get a list of all commands in the database, enter the command given below.
whatis "."
The man page for whatis
states the following:
whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed.
There also exists a similar command called apropos
. The man page for apropos
states the following:
apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
Basically, the difference is apropos
does not require complete word matches. For example, whatis "string"
would not find a match when encountering strings
, but apropos "string"
would.
When a command is installed, an entry should have been placed in the whatis
database. However, there is no requirement to do so. To get a one line description of a command in the database, enter whatis
followed by the command. For example, the output from entering whatis "ruby"
is shown below.
erb(1) - Ruby Templating
irb(1) - Interactive Ruby Shell
ri(1) - Ruby API reference front end
ruby(1) - Interpreted object-oriented scripting language
This the whatis
command will accept regular expressions. Therefore, to get a list of all commands in the database, enter the command given below.
whatis "."
The man page for whatis
states the following:
whatis searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output. Only complete word matches are displayed.
There also exists a similar command called apropos
. The man page for apropos
states the following:
apropos searches a set of database files containing short descriptions of system commands for keywords and displays the result on the standard output.
Basically, the difference is apropos
does not require complete word matches. For example, whatis "string"
would not find a match when encountering strings
, but apropos "string"
would.
edited 18 hours ago
answered 19 hours ago
David AndersonDavid Anderson
14.6k41846
14.6k41846
add a comment |
add a comment |
For completeness's sake, if you use zsh
, you can use ls "${(@)path}(N)"
. To get a list grouped by directory, use ls "${(@)path}"/*(-*N)
or printf "%sn" "${(@)path}"/*(-*N)
(unsorted but in the order they would be found); printf "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | sort -u
will give you a list of just the commands without paths.
Do note that this only shows executables, not aliases or functions. To get those, use alias
or typeset -f + | grep -v '^_'
respectively.
Sample output of each:
% ls "${(@)path}"(N)
/bin:
[ cat cp
[...]
sync test 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 "%sn" "${(@)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 "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | 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
add a comment |
For completeness's sake, if you use zsh
, you can use ls "${(@)path}(N)"
. To get a list grouped by directory, use ls "${(@)path}"/*(-*N)
or printf "%sn" "${(@)path}"/*(-*N)
(unsorted but in the order they would be found); printf "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | sort -u
will give you a list of just the commands without paths.
Do note that this only shows executables, not aliases or functions. To get those, use alias
or typeset -f + | grep -v '^_'
respectively.
Sample output of each:
% ls "${(@)path}"(N)
/bin:
[ cat cp
[...]
sync test 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 "%sn" "${(@)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 "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | 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
add a comment |
For completeness's sake, if you use zsh
, you can use ls "${(@)path}(N)"
. To get a list grouped by directory, use ls "${(@)path}"/*(-*N)
or printf "%sn" "${(@)path}"/*(-*N)
(unsorted but in the order they would be found); printf "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | sort -u
will give you a list of just the commands without paths.
Do note that this only shows executables, not aliases or functions. To get those, use alias
or typeset -f + | grep -v '^_'
respectively.
Sample output of each:
% ls "${(@)path}"(N)
/bin:
[ cat cp
[...]
sync test 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 "%sn" "${(@)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 "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | 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
For completeness's sake, if you use zsh
, you can use ls "${(@)path}(N)"
. To get a list grouped by directory, use ls "${(@)path}"/*(-*N)
or printf "%sn" "${(@)path}"/*(-*N)
(unsorted but in the order they would be found); printf "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | sort -u
will give you a list of just the commands without paths.
Do note that this only shows executables, not aliases or functions. To get those, use alias
or typeset -f + | grep -v '^_'
respectively.
Sample output of each:
% ls "${(@)path}"(N)
/bin:
[ cat cp
[...]
sync test 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 "%sn" "${(@)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 "%sn" "${(@)path}"/*(-*N) | xargs -L 1 basename | 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
answered 10 hours ago
KevinKevin
1189
1189
add a comment |
add a comment |
Seconding what @jksoegaard already mentioned, the simplest way is to use Tab autocompletion feature in Bash. Hitting the Tab key twice lists all available shell internal commands, external commands and alias available. If you enter the initial characters of a command, the matching commands are listed when hitting Tab key twice.
There are 3rd party package managers available for macOS which lets you install command-line-tools which are either unavailable in the native installation of macOS, or have their older version installed. A couple popular package managers among software developers are Homebrew and MacPorts.
Thus, if you are interested in the broader spectrum of developer tools available to run on your Mac, you can also list all the command-line-tools available for easy installation and running by executing brew search
for Homebrew and port search
for MacPorts. Executing the said commands require the respective package managers to be installed on your system.
add a comment |
Seconding what @jksoegaard already mentioned, the simplest way is to use Tab autocompletion feature in Bash. Hitting the Tab key twice lists all available shell internal commands, external commands and alias available. If you enter the initial characters of a command, the matching commands are listed when hitting Tab key twice.
There are 3rd party package managers available for macOS which lets you install command-line-tools which are either unavailable in the native installation of macOS, or have their older version installed. A couple popular package managers among software developers are Homebrew and MacPorts.
Thus, if you are interested in the broader spectrum of developer tools available to run on your Mac, you can also list all the command-line-tools available for easy installation and running by executing brew search
for Homebrew and port search
for MacPorts. Executing the said commands require the respective package managers to be installed on your system.
add a comment |
Seconding what @jksoegaard already mentioned, the simplest way is to use Tab autocompletion feature in Bash. Hitting the Tab key twice lists all available shell internal commands, external commands and alias available. If you enter the initial characters of a command, the matching commands are listed when hitting Tab key twice.
There are 3rd party package managers available for macOS which lets you install command-line-tools which are either unavailable in the native installation of macOS, or have their older version installed. A couple popular package managers among software developers are Homebrew and MacPorts.
Thus, if you are interested in the broader spectrum of developer tools available to run on your Mac, you can also list all the command-line-tools available for easy installation and running by executing brew search
for Homebrew and port search
for MacPorts. Executing the said commands require the respective package managers to be installed on your system.
Seconding what @jksoegaard already mentioned, the simplest way is to use Tab autocompletion feature in Bash. Hitting the Tab key twice lists all available shell internal commands, external commands and alias available. If you enter the initial characters of a command, the matching commands are listed when hitting Tab key twice.
There are 3rd party package managers available for macOS which lets you install command-line-tools which are either unavailable in the native installation of macOS, or have their older version installed. A couple popular package managers among software developers are Homebrew and MacPorts.
Thus, if you are interested in the broader spectrum of developer tools available to run on your Mac, you can also list all the command-line-tools available for easy installation and running by executing brew search
for Homebrew and port search
for MacPorts. Executing the said commands require the respective package managers to be installed on your system.
edited 9 hours ago
answered 16 hours ago
Nimesh NeemaNimesh Neema
17.1k74879
17.1k74879
add a comment |
add a comment |
10
The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance:
hpftodit
, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer withgroff -Tlj4
. Ok, that's an extreme example, I claim the point is still valid.– Gordon Davisson
yesterday