If an organization is using Unix-like operating systems, all developers should know the basic terminal commands to navigate the file structure, create new files and directories, delete files, command-line build tools, using version control on the command-line, and perhaps basic shell scripting to help automate repetitive tasks. In my opinion, the power of the terminal and availability of command-line tools on Unix-like systems is a huge advantage, coupled with how easy it is to write scripts to automate a number of complex tasks that you might be performing on a regular basis.
There are a number of command-line applications that you might want to familiarize yourself with. Tools such as cat
, grep
, head
, tail
, more
, and less
come in handy for a number of tasks, ranging from searching through files to find text matches, to reading through log files to assist in debugging applications. The ability to use pipes and feed output through these applications is also useful to help you parse through the information that is available.
Knowledge of one of the major text editors (vi or emacs) would also be helpful. Which one you use is a personal opinion, but I would recommend using what your team uses (that way, if you have questions, there will be someone on your team to answer them). In my experiences, a lot of "hardcore" Unix developers prefer these tools to IDEs. Myself, I prefer an IDE (even in a Unix-like environment), but text editors do have their advantages when reading files. Their command-line nature makes it easy to search through files with the tools I mentioned in the last paragraph and then open all matching files within one of these editors.
Beyond the use of the tools provided with the operating system, you'll also want to be aware of differences in libraries. Libraries that make system calls (things involving threading come to mind, as a specific example) will probably be different across operating systems. Makefiles that have flags to compile on a specific architecture or for a specific OS will also potentially introduce problems. Knowing which operating system(s) are used would make this easier - you can find references that address how to implement certain functions within that OS. However, this is something that I would expect you to be able to pick up on-the-job (especially for operating systems that are typically used in enterprise environments and that individuals don't often have access to, such as Solaris).