How to find all the available tools in mac terminal?Is there a list of pre-installed command-line tools for macOS?Is there an easy way to list CLI tools installed on macOS?What commands can I run in the Terminal, and how do I use them?Unhide Partitions via TerminalHow to migrate my Mac OS X application and data from MacBook Pro to Mac Mini?Automating terminals at startupAuto open 4 terminal sessions and SSH them to a given hostTerminal bash commands stopped workingHelp Understanding Terminal's CommandIs 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 the Fixed-Term Parliaments Act be bypassed by a simple bill?

Would a horse be sufficient buffer to prevent injury when falling from a great height?

Caro-Kann c4-c5 push

Disable all sound permanently

I just compiled bitcoind and run for the first time. Do I already have a private key?

How important is knowledge of trig identities for use in Calculus

Realistically, how much do you need to start investing?

Does the US Armed Forces refuse to recruit anyone with an IQ less than 83?

Why does `FindFit` fail so badly in this simple case?

Short story about a potato hotel that makes its guests into potatoes throughout the night

What does a textbook look like while you are writing it?

Would an object shot from earth fall into the sun?

How to interpret the challenge rating of creatures?

PhD Length: are shorter PhD degrees (from different countries) valued differently in other counter countries where PhD Is a longer process?

Is the "spacetime" the same thing as the mathematical 4th dimension?

Can I bring this power bank on board the aircraft?

Can Familiars read and use spell scrolls?

How is this situation not a checkmate?

Should I be an author on another PhD student's paper if I went to their meetings and gave advice?

Replace zeros in a list with last nonzero value

What's the global, general word that stands for "center tone of a song"?

Why do Russians sometimes spell "жирный" (fatty) as "жырный"?

Sending mail to the Professor for PhD, after seeing his tweet

Looking for circuit board material that can be dissolved



How to find all the available tools in mac terminal?


Is there a list of pre-installed command-line tools for macOS?Is there an easy way to list CLI tools installed on macOS?What commands can I run in the Terminal, and how do I use them?Unhide Partitions via TerminalHow to migrate my Mac OS X application and data from MacBook Pro to Mac Mini?Automating terminals at startupAuto open 4 terminal sessions and SSH them to a given hostTerminal bash commands stopped workingHelp Understanding Terminal's CommandIs 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;









17















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?










share|improve this question





















  • 12





    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
    Apr 16 at 5:52

















17















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?










share|improve this question





















  • 12





    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
    Apr 16 at 5:52













17












17








17


2






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?










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 17 at 0:49







Spear A1

















asked Apr 15 at 20:00









Spear A1Spear A1

915 bronze badges




915 bronze badges










  • 12





    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
    Apr 16 at 5:52












  • 12





    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
    Apr 16 at 5:52







12




12





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
Apr 16 at 5:52





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
Apr 16 at 5:52










6 Answers
6






active

oldest

votes


















25
















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.






share|improve this answer
































    20
















    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





    share|improve this answer


































      5
















      You could take the PATH variable and translate 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 translate the colons to newlines.



      ( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") ) 





      share|improve this answer






















      • 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
        Apr 16 at 12:37


















      3
















      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.






      share|improve this answer


































        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





        share|improve this answer
































          1
















          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.






          share|improve this answer



































            6 Answers
            6






            active

            oldest

            votes








            6 Answers
            6






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            25
















            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.






            share|improve this answer





























              25
















              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.






              share|improve this answer



























                25














                25










                25









                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.






                share|improve this answer













                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.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Apr 15 at 20:14









                jksoegaardjksoegaard

                27k1 gold badge34 silver badges65 bronze badges




                27k1 gold badge34 silver badges65 bronze badges


























                    20
















                    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





                    share|improve this answer































                      20
















                      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





                      share|improve this answer





























                        20














                        20










                        20









                        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





                        share|improve this answer















                        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






                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited Apr 15 at 22:30

























                        answered Apr 15 at 20:45









                        slmslm

                        2,4449 silver badges24 bronze badges




                        2,4449 silver badges24 bronze badges
























                            5
















                            You could take the PATH variable and translate 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 translate the colons to newlines.



                            ( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") ) 





                            share|improve this answer






















                            • 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
                              Apr 16 at 12:37















                            5
















                            You could take the PATH variable and translate 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 translate the colons to newlines.



                            ( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") ) 





                            share|improve this answer






















                            • 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
                              Apr 16 at 12:37













                            5














                            5










                            5









                            You could take the PATH variable and translate 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 translate the colons to newlines.



                            ( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") ) 





                            share|improve this answer















                            You could take the PATH variable and translate 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 translate the colons to newlines.



                            ( IFS=$'n'; ls $(tr ':' 'n' <<<"$PATH") ) 






                            share|improve this answer














                            share|improve this answer



                            share|improve this answer








                            edited Apr 16 at 13:23

























                            answered Apr 15 at 20:39









                            fd0fd0

                            7,1141 gold badge16 silver badges32 bronze badges




                            7,1141 gold badge16 silver badges32 bronze badges










                            • 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
                              Apr 16 at 12:37












                            • 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
                              Apr 16 at 12:37







                            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
                            Apr 16 at 12:37





                            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
                            Apr 16 at 12:37











                            3
















                            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.






                            share|improve this answer































                              3
















                              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.






                              share|improve this answer





























                                3














                                3










                                3









                                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.






                                share|improve this answer















                                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.







                                share|improve this answer














                                share|improve this answer



                                share|improve this answer








                                edited Apr 16 at 11:32

























                                answered Apr 16 at 11:14









                                David AndersonDavid Anderson

                                16.4k5 gold badges23 silver badges50 bronze badges




                                16.4k5 gold badges23 silver badges50 bronze badges
























                                    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





                                    share|improve this answer





























                                      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





                                      share|improve this answer



























                                        1














                                        1










                                        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





                                        share|improve this answer













                                        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






                                        share|improve this answer












                                        share|improve this answer



                                        share|improve this answer










                                        answered Apr 16 at 19:44









                                        KevinKevin

                                        1189 bronze badges




                                        1189 bronze badges
























                                            1
















                                            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.






                                            share|improve this answer































                                              1
















                                              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.






                                              share|improve this answer





























                                                1














                                                1










                                                1









                                                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.






                                                share|improve this answer















                                                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.







                                                share|improve this answer














                                                share|improve this answer



                                                share|improve this answer








                                                edited Apr 16 at 20:46

























                                                answered Apr 16 at 13:45









                                                Nimesh NeemaNimesh Neema

                                                25.4k9 gold badges63 silver badges101 bronze badges




                                                25.4k9 gold badges63 silver badges101 bronze badges
















                                                    Popular posts from this blog

                                                    Tamil (spriik) Luke uk diar | Nawigatjuun

                                                    Align equal signs while including text over equalitiesAMS align: left aligned text/math plus multicolumn alignmentMultiple alignmentsAligning equations in multiple placesNumbering and aligning an equation with multiple columnsHow to align one equation with another multline equationUsing \ in environments inside the begintabularxNumber equations and preserving alignment of equal signsHow can I align equations to the left and to the right?Double equation alignment problem within align enviromentAligned within align: Why are they right-aligned?

                                                    Where does the image of a data connector as a sharp metal spike originate from?Where does the concept of infected people turning into zombies only after death originate from?Where does the motif of a reanimated human head originate?Where did the notion that Dragons could speak originate?Where does the archetypal image of the 'Grey' alien come from?Where did the suffix '-Man' originate?Where does the notion of being injured or killed by an illusion originate?Where did the term “sophont” originate?Where does the trope of magic spells being driven by advanced technology originate from?Where did the term “the living impaired” originate?