Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I know this is a silly question, but since I am trying so hard to learn linux by myself, I need some help from you fellows.

I found this task on the internet and I am trying to solve it but I don't understand exactly how can I use makefiles in linux and how can I create them.

Let's suppose my print working directory is /home/george/Documents

I want to create a makefile which does the following:

  1. Displays a message as follows "hello work, today is Sun". Sun comes from Sunday. So I must use date command in this make file to display just first three letters.
  2. compress /etc/hosts in /tmp using gzip (probably here should be something like

    gzip -c SOURCE DESTINATION # ?? 


share|improve this question
Makefiles are there to selectively build outdated object files from source files, in a software development activity. It has nothing to do to what you would do. – enzotib Aug 17 '13 at 14:21
up vote 7 down vote accepted

to answer your question I cant give you a one line / paragraph answer because it deals with every thing.Read the first link it have everything you need with examples too.

Good tutorial that can explain everything about make

share|improve this answer

A Makefile is used as a "map" for C programs compilation. They work with the make utility, an describe how a program has to be compiled/linked in order to work correctly once turned into a executable file. For global UNIX/shell tasks, you're looking for shell scripts, not makefiles :)

See for more information about makefiles, and to discover shell scripts.

A basic shell script for what you're trying to do could be :

echo "Hello world, today is $(date +%a)"

Store this in a file, and execute it using your shell prompt (bash, sh, ...). You can also make the script executable using :

chmod +x

And then execute it with your default interpretor with :

share|improve this answer
I am trying to create a makefile which does this not a shell script. – Adrian George Aug 17 '13 at 14:27
Then you have to develop a C program which does this, and compile it using a Makefile, if you want. Makefiles do not execute Linux tasks, they guide C programs compilation, it is a completely different thing. – John WH Smith Aug 17 '13 at 14:30
@JohnWHSmith There is nothing special about compiling C programs. Makefiles can be used to perform a variety of tasks. (With that said, many tasks are poorly suited for the use of makefiles.) – Eliah Kagan Aug 17 '13 at 15:06

Why not create a shell script, then create a symbolic link that points to the shell script you created? Place the symbolic link in a directory that's in the PATH, so that you can 'run' the symbolic link no matter the directory in which you are located.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.