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

Ring Automorphisms that fix 1.

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

Should I use a zero-interest credit card for a large one-time purchase?

Output the ŋarâþ crîþ alphabet song without using (m)any letters

Dating a Former Employee

Can a non-EU citizen traveling with me come with me through the EU passport line?

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

Why do we bend a book to keep it straight?

Understanding Ceva's Theorem

How do pianists reach extremely loud dynamics?

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

How to align text above triangle figure

What is Arya's weapon design?

How much time will it take to get my passport back if I am applying for multiple Schengen visa countries?

Gordon Ramsay Pudding Recipe

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

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

What is the meaning of the new sigil in Game of Thrones Season 8 intro?

Sci-Fi book where patients in a coma ward all live in a subconscious world linked together

How come Sam didn't become Lord of Horn Hill?

Using audio cues to encourage good posture

What's the meaning of 間時肆拾貳 at a car parking sign

Denied boarding although I have proper visa and documentation. To whom should I make a complaint?

Can I cast Passwall to drop an enemy into a 20-foot pit?



How to find all the available tools in mac terminal?



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Should an RSS feed of hot network questions feed any chat room(s) here?How to migrate my Mac OS X application and data from MacBook Pro to Mac Mini?Automating terminals at startupLoad .bash_profile automatically on Terminal.app startup?Auto open 4 terminal sessions and SSH them to a given hostTerminal bash commands stopped workingHelp Understanding Terminal's CommandHow to programmatically start commands in Terminal tabs without losing focusIs it possible to make a folder look and behave like a file?How can I fix my terminal when editing the PATH in .bash_profile has the startup hang and I get no prompt?How can I make sure that the title of a Terminal tab/window is identical to the command I typed





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







14















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
    yesterday


















14















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
    yesterday














14












14








14


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







Spear A1

















asked yesterday









Spear A1Spear A1

765




765








  • 10





    The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance: hpftodit, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4. Ok, that's an extreme example, I claim the point is still valid.

    – Gordon Davisson
    yesterday














  • 10





    The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance: hpftodit, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4. Ok, that's an extreme example, I claim the point is still valid.

    – Gordon Davisson
    yesterday








10




10





The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance: hpftodit, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4. Ok, that's an extreme example, I claim the point is still valid.

– Gordon Davisson
yesterday





The list will be more overwhelming than informative. On macOS 10.14.4, I see 1,302 executables in /bin, /sbin, /usr/bin, and /usr/sbin. Most of them obscure and/or single-purpose. For instance: hpftodit, which converts fonts from HP tagged font metric (TFM) format for use with an HP Laser-Jet 4-series (or newer) printer with groff -Tlj4. Ok, that's an extreme example, I claim the point is still valid.

– Gordon Davisson
yesterday










6 Answers
6






active

oldest

votes


















19














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































    15














    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
        17 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









            19














            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




























              19














              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


























                19












                19








                19







                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.9k12151




                20.9k12151

























                    15














                    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






























                      15














                      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




























                        15












                        15








                        15







                        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

                        1,014715




                        1,014715























                            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
                              17 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
                              17 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 16 hours ago

























                            answered yesterday









                            fd0fd0

                            6,47511431




                            6,47511431








                            • 1





                              If your $PATH contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...)) subshell so word-splitting only happens on newline.

                              – Peter Cordes
                              17 hours ago














                            • 1





                              If your $PATH contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...)) subshell so word-splitting only happens on newline.

                              – Peter Cordes
                              17 hours ago








                            1




                            1





                            If your $PATH contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...)) subshell so word-splitting only happens on newline.

                            – Peter Cordes
                            17 hours ago





                            If your $PATH contains spaces but not newlines, you can tr spaces to newlines inside an (IFS=$'n'; ls $(...)) subshell so word-splitting only happens on newline.

                            – Peter Cordes
                            17 hours ago











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

























                                answered 19 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 10 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 9 hours ago

























                                                answered 16 hours ago









                                                Nimesh NeemaNimesh Neema

                                                17.1k74879




                                                17.1k74879















                                                    Popular posts from this blog

                                                    Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

                                                    Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

                                                    Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...