Noop, it is not available on Linux. It was SCO / Solaris / HP-UX UNIX command.
Edit: I found something @ SF.net ~ The Heirloom Project provides standard Unix utilities including what command. Download and compile the same
https://sourceforge.net/projects/heirloom
Here is the source code for what.c:
Code:
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/*
* Copyright 2002 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* from what.c 1.11 06/12/12
*/
/* from OpenSolaris "what.c" */
/*
* Portions Copyright (c) 2006 Gunnar Ritter, Freiburg i. Br., Germany
*
* Sccsid @(#)what.c 1.12 (gritter) 4/14/07
*/
/* from OpenSolaris "sccs:cmd/what.c" */
#if __GNUC__ >= 3 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 4
#define USED __attribute__ ((used))
#elif defined __GNUC__
#define USED __attribute__ ((unused))
#else
#define USED
#endif
static const char sccsid[] USED = "@(#)what.sl 1.12 (gritter) 4/14/07";
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define MINUS '-'
#define MINUS_S "-s"
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
static int found = FALSE;
static int silent = FALSE;
static char pattern[] = "@(#)";
static void dowhat(FILE *);
static int trypat(FILE *,char *);
int
main(int argc, register char **argv)
{
register int i;
register FILE *iop;
int current_optind, c;
if (argc < 2)
dowhat(stdin);
else {
current_optind = 1;
optind = 1;
opterr = 0;
i = 1;
/*CONSTCOND*/
while (1) {
if(current_optind < optind) {
current_optind = optind;
argv[i] = 0;
if (optind > i+1 ) {
argv[i+1] = NULL;
}
}
i = current_optind;
c = getopt(argc, argv, "-s");
/* this takes care of options given after
** file names.
*/
if((c == EOF)) {
if (optind < argc) {
/* if it's due to -- then break; */
if(argv[i][0] == '-' &&
argv[i][1] == '-') {
argv[i] = 0;
break;
}
optind++;
current_optind = optind;
continue;
} else {
break;
}
}
switch (c) {
case 's' :
silent = TRUE;
break;
default :
fprintf(stderr,
"Usage: what [ -s ] filename...\n");
exit(2);
}
}
for(i=1;(i<argc );i++) {
if(!argv[i]) {
continue;
}
if ((iop = fopen(argv[i],"r")) == NULL)
fprintf(stderr,"can't open %s (26)\n",
argv[i]);
else {
printf("%s:\n",argv[i]);
dowhat(iop);
}
}
}
return (!found); /* shell return code */
}
static void
dowhat(register FILE *iop)
{
register int c;
while ((c = getc(iop)) != EOF) {
if (c == pattern[0])
if(trypat(iop, &pattern[1]) && silent) break;
}
fclose(iop);
}
static int
trypat(register FILE *iop,register char *pat)
{
register int c = 0;
for (; *pat; pat++)
if ((c = getc(iop)) != *pat)
break;
if (!*pat) {
found = TRUE;
putchar('\t');
while ((c = getc(iop)) != EOF && c &&
!strchr("\"\\>\n", c&0377))
putchar(c);
putchar('\n');
if(silent)
return(TRUE);
}
else if (c != EOF)
ungetc(c, iop);
return(FALSE);
}
__________________
Vivek Gite
Linux Evangelist

Be proud
RHEL user, and let the world know about your enterprise choices!
Join RedHat user group.

Always use
CODE tags for posting system output and commands!

Do you run a Linux? Let's face it,
you need help