Tag: command path

As a Linux system administrator, you will need to find files in directories all over the file system. Especially those coming from a Windows background, often lost themselves while navigating file system.

Linux and other UNIX (BSD) OS offers an excellent collection of utilities, which can be use to finding the files and executables, remember you cannot memorize all the commands and files 😉 Commands to help you navigate:

file: Determines file types

which: Locates an executable in your PATH

whereis: Locates binaries and man page

find: Find the file

grep: Search for text/string in the named file name

strings: Find text string in a binary file

The which command

It is useful to locate a command. Some opertating system such as Solaris/HP-UX (even linux) have multiple homes. So you wanna find out which version you are going to use by order of the directories in your PATH variable. Try out following commands:$ which ls $ which vi $ which vim

The file command

You would like to find out if a command is a shell script or a binary file or simply cannot recognize file by its extension then use file command to determine file type.$ file /usr/sbin/useradd Output:

But wait sec, you don’t have to type full command path:$ file $(which adduser) Output:

/usr/sbin/adduser: perl script text executable

The whereis command

It locates binaries and man pages. When you get message command not found then use whereis command to locate binary file. For example ifconfig command:$ ifconfig Output:

bash: ifconfig: command not found

Now locate ifconfig binary, enter:$ whereis -b ifconfig Output:

ifconfig: /sbin/ifconfig

So let us try the full path, enter:$ /sbin/ifconfig

The grep command

The grep command can search for text or strings such as IP address, domain names and lots of other stuff inside a text file. Often new Linux sys admin forgets to configuration file names. However, you can use grep to find out those configuration file name. For example, find out the file containing IP address 192.168.1.1# grep -R "192.168.1.1" /etc/* | less

The strings Commands

The grep command is useful to search a text file, if you would like to find text string in a binary file then use strings command.# strings /usr/bin/users

You might think this is stupid idea to search inside binary file for text string. Well, no it is not a stupid idea. For example, you would like to quickly find out if internet service supports tcpd access control facility via /etc/hosts.allow and /etc/hosts.deny files (read as tcp wrappers) or not. Let us find out if sshd server support tcpd or not:# strings $(which sshd)| grep libwrap

libwrap.so.0
libwrap refuse returns

The find Command

Use find command to find the files. Find all files belonging to the user charvi: # find / -user charvi

Remove all core dump files # find / -name core -exec rm -i{}\;

Please see more find command examples here and here. For more info please read the man pages of find, grep, file, which.