Solved Discovering FreeBSD interactively

Hello !

Is there a way to discover the FreeBSD system tools interactively ?

I mean, on Windows we know that we can go the Control Panel to have a list and description of all the system utilities available. I am in search of something equivalent for FreeBSD that can be used from the shell.

I'd like to be able to have a list of all the programs installed on the system in the following format :

<ProgramName> | Short Description

Ideally, it would be great to be able to display this list by category too. For example : Networking, Hardware Management, File System, User Management and so on.

What is the recommended / usual way to achieve this ?

I have spent quite a fair amount of time in the Handbook, so I know the basics of how the system is organized, but being able to discover the system interactively would be greatly helpful. This is about knowing which manual to read - (not about trying to avoid them).

I find that knowing which utilities can be used for a particular task is the hardest part of learning Unix (and the main reason I haven't done it already). I can't figure how to learn to find my way without relying on the internet and external resources - which is very impractical. If I could become comfortable at doing that, this would allow me to ditch Windows once for all.

Thanks !
 
New to FreeBSD and finding pkg to be good. For instance I was looking to install gkrellm system monitor but pkg install gkrellm didn't work. pkg search gkrellm however revealed that I needed to install gkrellm2-2.3.10_1 which I've now installed



Didn't know about pkg info either, so thanks for that Scottro
 
Thanks for your input rufwoof. Just want to highlight that my use case is not finding information on packages I know I need, but discovering packages and utilities that I may need and/or which are relevant for a certain context. This is about discovery.
 
Discovery is all part of the fun Reddy. Even after years of using Linux (having ditched Windows totally since XP support was pulled) I still find surprises now and then (FreeBSD for instance has totally surprised me (moving across from having previously used Debian (un)Stable)).

htop is another of my regular choices for system monitoring



If you want things handed to you then something like PC-BSD has a synaptic type graphical method to search for programs by name or group (that they call AppCafe). Not tried/used PC-BSD myself however.
 
Yep, I'm totally with you on the fact that discovery is where the fun is and am happy to go through the process (By the way, I want to stay clear of TrueOS as Windows 10 definitely got me sick of pre-packaged OSes). I do not mind - and am actually seeking to - spend time discovering FreeBSD specific utilities and reading the man pages. I even want to avoid installing a Desktop Environment for now as I am trying to get very familiar with the barebone system.

What I am asking for is a categorization of the system utilities (the built-in ones) to which one can refer to. Something shell-based. The closest example I can think of is the Control Panel of Windows centralizing shortcuts to the system utilities. This is not about having things handed and preconfigured, but about knowing what to configure. And more precisely, this is about being able to discover it on your own from within the system by using the system in a reasonably convenient manner.

Because I would say that there is discovery and discovery. There is discovery where you can follow signs to find a neighborhood and enter various retail stores until you find one having the product you are after, and there is discovery where you are lost in the middle of a city with a map in your pocket and need to rely on asking strangers.

The handbook is like an offline map and while being useful to get an idea, it does not replace being able to see signs when you are actually walking in the city. There do not need to be a sign at a every corner, but there needs to be at least a few otherwise the process is more complicate than needed.

Right now, Unix systems are like a city without signs to me, they look like you need to be a scout to find your way through them. But I'm skeptical this is really the case so I'm asking in case there is something I am missing.

I hope this clarifies it
 
One thing that I like about FreeBSD is its consistency. With others such as Debian things can be all over the place and move between versions. FreeBSD seems much simpler (better/consistent) on that front.

For learning/finding, perhaps start with /sbin and use man to find out what each command does. 130 odd commands (files) there - not too many considering that a lot of those might be skimmed over relatively quickly. Then move on to /usr/sbin .... etc. Personally I don't know of anything that at the cli level groups those however, other than what Scottro highlighted.

The HOME choice at the top of the forum takes you to the main FreeBSD web page and within that the Documentation section (as you've already discovered) is excellent. The consistency over time also means that older methods of doing things are likely still valid today. From there, generally for each individual task/problem simple searches more often reveal the history and solution for others having experienced the same/similar problem in the past.

I don't think there is any alternative simpler choice/method. At least not that I'm aware of. Just a case of a relatively steep initial learning curve, that tapers off over time, but where you still continue to learn no matter how long you use/study.
 
If you are dealing with console or a terminal session, there's good old whatis:
Code:
[dude@house01 /usr/bin]$ whatis y*
byacc, yacc(1) - an LALR(1) parser generator
chfn, chpass, chsh, ypchfn, ypchpass, ypchsh(1) - add or change user database information
gyes(1) - output a string repeatedly until killed
passwd, yppasswd(1) - modify a user's password
yes(1) - be repetitively affirmative
ypcat(1) - print the values of all keys in a NIS database
ypmatch(1) - print the values of one or more keys in a NIS database
ypwhich(1) - return hostname of NIS server of map master
[dude@house01 /usr/bin]$ whatis diff
diff(1) - compare files line by line
git-diff(1) - Show changes between commits, commit and working tree, etc
git-diff-files(1) - Compares files in the working tree and the index
git-diff-index(1) - Compare a tree to the working tree or index
git-diff-tree(1) - Compares the content and mode of blobs found via two tree objects
llvm-diff39(1) - LLVM structural 'diff'
llvm-diff40(1) - LLVM structural 'diff'
diff(7) - Comparing and Merging Files
 
If you are dealing with console or a terminal session, there's good old whatis:
Code:
[dude@house01 /usr/bin]$ whatis y*
byacc, yacc(1) - an LALR(1) parser generator
chfn, chpass, chsh, ypchfn, ypchpass, ypchsh(1) - add or change user database information
gyes(1) - output a string repeatedly until killed
passwd, yppasswd(1) - modify a user's password
yes(1) - be repetitively affirmative
ypcat(1) - print the values of all keys in a NIS database
ypmatch(1) - print the values of one or more keys in a NIS database
ypwhich(1) - return hostname of NIS server of map master
[dude@house01 /usr/bin]$ whatis diff
diff(1) - compare files line by line
git-diff(1) - Show changes between commits, commit and working tree, etc
git-diff-files(1) - Compares files in the working tree and the index
git-diff-index(1) - Compare a tree to the working tree or index
git-diff-tree(1) - Compares the content and mode of blobs found via two tree objects
llvm-diff39(1) - LLVM structural 'diff'
llvm-diff40(1) - LLVM structural 'diff'
diff(7) - Comparing and Merging Files

Many thanks, this is exactly what I was after ! Since this searches within the man pages, this achieves the categorization/filtering I was after.
 
Back
Top