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
Can an alien society believe that their star system is the universe?
Is it fair for a professor to grade us on the possession of past papers?
What would be the ideal power source for a cybernetic eye?
How widely used is the term Treppenwitz? Is it something that most Germans know?
Sci-Fi book where patients in a coma ward all live in a subconscious world linked together
What is the meaning of the new sigil in Game of Thrones Season 8 intro?
Why are there no cargo aircraft with "flying wing" design?
Why did the IBM 650 use bi-quinary?
English words in a non-english sci-fi novel
What exactly is a "Meth" in Altered Carbon?
How does debian/ubuntu knows a package has a updated version
Should I discuss the type of campaign with my players?
Identify plant with long narrow paired leaves and reddish stems
How to tell that you are a giant?
What does this icon in iOS Stardew Valley mean?
Withdrew £2800, but only £2000 shows as withdrawn on online banking; what are my obligations?
What LEGO pieces have "real-world" functionality?
Why do we bend a book to keep it straight?
Seeking colloquialism for “just because”
List of Python versions
Is it ethical to give a final exam after the professor has quit before teaching the remaining chapters of the course?
String `!23` is replaced with `docker` in command line
Can a USB port passively 'listen only'?
How to Merge Multiple Columns in to Two Columns based on Column 1 Value?
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
21 hours ago
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 2 hours ago
Spear A1
asked yesterday
Spear A1Spear A1
715
715
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
21 hours ago
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
21 hours ago
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
21 hours ago
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
21 hours ago
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
14 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.8k12151
20.8k12151
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
982615
982615
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
14 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
14 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 13 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
14 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
14 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
14 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
14 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 15 hours ago
answered 15 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 7 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 6 hours ago
answered 13 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
21 hours ago