How to find all the available tools in mac terminal? Announcing the arrival of Valued...

Why am I getting the error "non-boolean type specified in a context where a condition is expected" for this request?

Storing hydrofluoric acid before the invention of plastics

51k Euros annually for a family of 4 in Berlin: Is it enough?

Coloring maths inside a tcolorbox

At the end of Thor: Ragnarok why don't the Asgardians turn and head for the Bifrost as per their original plan?

Error "illegal generic type for instanceof" when using local classes

Why was the term "discrete" used in discrete logarithm?

If a contract sometimes uses the wrong name, is it still valid?

Why is "Consequences inflicted." not a sentence?

What causes the vertical darker bands in my photo?

The logistics of corpse disposal

Single word antonym of "flightless"

Check which numbers satisfy the condition [A*B*C = A! + B! + C!]

Identify plant with long narrow paired leaves and reddish stems

Is the Standard Deduction better than Itemized when both are the same amount?

Is it true that "carbohydrates are of no use for the basal metabolic need"?

How to deal with a team lead who never gives me credit?

What exactly is a "Meth" in Altered Carbon?

Can a USB port passively 'listen only'?

Book where humans were engineered with genes from animal species to survive hostile planets

Dating a Former Employee

Do I really need recursive chmod to restrict access to a folder?

Short Story with Cinderella as a Voo-doo Witch

How to tell that you are a giant?



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;
}







13















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




















  • 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
    19 hours ago


















13















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




















  • 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
    19 hours ago














13












13








13


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 24 mins 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 with groff -Tlj4. Ok, that's an extreme example, I claim the point is still valid.

    – Gordon Davisson
    19 hours ago














  • 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
    19 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
19 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
19 hours ago










6 Answers
6






active

oldest

votes


















17














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































    14














    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

































      4














      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
        12 hours ago



















      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









            17














            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




























              17














              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


























                17












                17








                17







                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 yesterday









                jksoegaardjksoegaard

                20.8k12151




                20.8k12151

























                    14














                    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






























                      14














                      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




























                        14












                        14








                        14







                        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 yesterday

























                        answered yesterday









                        slmslm

                        982615




                        982615























                            4














                            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
                              12 hours ago
















                            4














                            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
                              12 hours ago














                            4












                            4








                            4







                            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 11 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
                              12 hours ago














                            • 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
                              12 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
                            12 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
                            12 hours ago











                            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 13 hours ago

























                                answered 13 hours ago









                                David AndersonDavid Anderson

                                14.6k41846




                                14.6k41846























                                    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 5 hours ago









                                        KevinKevin

                                        1189




                                        1189























                                            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 4 hours ago

























                                                answered 11 hours ago









                                                Nimesh NeemaNimesh Neema

                                                17.1k74879




                                                17.1k74879















                                                    Popular posts from this blog

                                                    El tren de la libertad Índice Antecedentes "Porque yo decido" Desarrollo de la...

                                                    Puerta de Hutt Referencias Enlaces externos Menú de navegación15°58′00″S 5°42′00″O /...

                                                    Castillo d'Acher Características Menú de navegación