More useful commands

Discussion in 'Beginner Tutorials' started by Rob, Jul 9, 2013.

  1. Rob

    Rob Administrator Staff Member

    Messages:
    575
    Likes Received:
    229
    Trophy Points:
    43
    The command 'touch'

    Now we're going to talk about a touchy subject. The command 'touch' which is used to change the time and/or date of a file.

    You can use 'touch' if your boss yells at you about not having a report ready at lunchtime. You should quickly finish the report, then type:

    Code:
    touch -t 05070915 my_report.txt
    and it makes it look like you did it at 9:15. The first four digits stand for May 7 (0507) and the last four (0915) the time, 9:15 in the morning. Make sure your digits match your story. You don't want to have it look like you did it in February. Of course, if you punched in at 9:40, then you're in trouble.

    'touch' can be used also to create an empty file. You would just enter.
    touch [a file name]
    There may be times in the future when you need an empty file that will be filled up later automatically by the workings of some program. We'll deal with the uses of 'touch' in our later courses.

    Finding things with the command 'find'

    There's so much on a computer's hard drive, nobody could ever know from memory where everything is. Perhaps the smart lad who won the spelling bee by spelling 'prestidigitator' might be able to, but most of us are going to have to find things now and then.

    If you use a windows manager like KDE, you can use the find tool. It's very useful because it has a lot of options and you can use them to modify your searches.

    How to use the 'find' command

    But if you're getting used to using command line stuff, just type in:

    Code:
    find -name *hawaii*
    and find out where you put you pictures of you Hawaiian vacation. If you're in your /home directory, it will go through every directory and find every file that has the name 'hawaii' in it. The two asterisks make sure it does that. If they started with 'hawaii' you wouldn't need the first asterisk but you can leave it there if you want.

    You may have created some file recently. For example, you may want to find some file that you were working on, let's say from now up to 10 minutes ago, you could type.

    Code:
    find -mmin +0 -mmin -10
    This will list the files that you created or modified within the last ten minutes. If you choose to use a higher number for -mmin -? you should probably use a pipe, for example:

    Code:
    find -mmin +0 -mmin -120 | less
    will find things that you created or modified up to 2 hours ago and the '| less' part will make it easier to read.

    The 'grep' command

    In the last section we talked about the 'find' command which finds files. Now we'll talk about the 'grep' command which finds words in files. Your windows manager may have this incorporated into its find tool but then again, the beauty of Linux is having alternatives.

    What does 'grep' mean?

    'grep' is a Vulcan word that means "find". Actually it isn't, but it sort of looks like it, doesn't it?

    Kirk: "Find the solar system L10J, Mr. Spock."

    Spock: "Grepping now, Captain." *

    * Star Trek stuff copyright Paramount Pictures

    Let's have a little practice session with 'grep'. The best way is learning by doing, so let's do it.

    A 'grep' mini-tutorial

    With 'pico' or any Linux text editor, create a file called 'mary1.txt'

    Code:
    pico mary1.txt
    Then type: "Mary had a little lamb"

    Press CTRL-X in 'pico' (if you're using that) and it will prompt you to save.

    Then create: mary2.txt and enter the text Mary had a little cow.

    Save that and create the file: mary3.txt and type: Mary had a little too much to drink. Now we know what Mary was doing when she wasn't watching her lambs! Now save that file.

    OK, now we're ready to try out 'grep', so phasers on stun and let's go.

    Type the following command:

    Code:
    grep Mary mary*.txt
    Let's explain this a little. 'grep' looks for the word "Mary" in any text file that is called "mary(something).txt". You've created three files that start with 'mary', so the asterisk makes sure that 'grep' will look for the word 'Mary' in all three.

    You should get this output:

    mary1.txt Mary had a little lamb
    mary2.txt Mary had a little cow
    mary3.txt Mary had a little too much to drink

    The word 'Mary' is in all of those files, so you'll get this output.

    If you type grep little mary*.txt you'll get the same output because the word "little" is also in each of those files. But if you type the word "cow", you'll get this output:

    mary2.txt: Mary had a little cow

    because the word "cow" is only in mary2.txt.

    Typing grep drink mary*.txt will get us more or less the same, only that mary3.txt will show up instead of mary2.txt.

    Well, there's 'grep' in a nutshell. It's been a pleasure 'grepping' with you!

    Power user commands

    Here is a brief overview of some other commands that you may find interesting at some point as you use Linux. They will help you to get all of the power out of Linux.

    who

    'who' is a command to find out who's working on your system. As you now know, Linux is a multi-user system. Even if you're using one computer at your home, you may be working as more than one person. For example, if you logged in as 'root' but are working as 'bob'. You may see something like this:

    roottty1May 20 09:48
    bobtty2May 20 10:05

    This is just Linux's way of saying that 'root' started working on terminal 1 on May 20 at 9:48 in the morning and bob started working on terminal 2 at 10:05. This is mainly used in networked situations so the system administrator knows who's working. It can be used by your boss to find out that you've come in late too. You may use it to find out if you've opened more that one terminal so that you remember to log out.

    'tee', '>', '2>'

    In the lesson on the pipe command, I mentioned plumbing with Linux. I think I'm going to resist the temptation to make some sort of golf reference here in the lesson on the command 'tee'.

    'tee' is used to write out what appears on your screen into a file. You will be using this with the after a pipe '|' .
    You might do this:

    Code:
    ls -l | tee directory_listing
    to get a file with the listing of a directory. If you've placed files in a directory to be backed up, you could use this command to create a listing of that directory. You could print out the file on a label and stick it to the disk, tape, zip cartridge or whatever you used to make the backups.

    If you're using the 'tee' command for the backups I described before, you may want to put a date on the file. You can use this command:

    Code:
    date | tee -a directory_listing
    The command 'date' will enter the date and time in the file at the end. Remember to use the -a option if you're going to write to that file a second time. If you don't you will erase everything on the file in favor of whatever the second command was.

    The '>' command

    The "greater than" symbol '>' will do the same as 'tee'. You don't need the pipe command (|) with this one.

    Code:
    ls -l > directory_listing
    will give you the same result. If you want to add the date at the end, use the command:

    Code:
    date >> directory_listing
    with two "greater than" symbols (>>)

    The two symbols will add to the file without erasing its contents (appending).

    The '2>' command

    This command, the number two (2) with the "greater than" symbol >, is used for creating a file for an error message that you may get.

    You will probably not be using it a lot because we all know how perfect Linux is and how few errors there are when you're using it. But every once and a while you may want to download some software from the Internet You install it and - whoops! - there's some error. You may not have something installed that the program needs to run. You could just do something like this:

    [program X that doesn't work] 2> program_X_error

    You create a file with the error message. You could show it to someone who might know what's missing or you could send it to the author of the program. He or she would also like to know about it and will probably help you fix it.

    whoami

    whoami is a nice little program that tells you who you are, just in case you didn't know already. You amnesia victims are in luck! Actually it tells you who you are in terms of how Linux understands who you are, that is to say, your user name. So if your user name is bob and you type whoami you'll get: bob This comes in handy if you switch terminals a lot and work as a different user. You may, in terms of computer use anyway, forget who you are!

    whatis

    To show you how to use the 'whatis' command 'whatis' is a command so you can find out what a program does. If you explore your Linux system, you will find a lot of programs and you may not know what they do. You would simply type:
    Code:
    whatis grep
    for example, and you would get this:

    grep (1) - print lines matching a pattern

    Linux is good, but it's not all-knowing, so if you type:
    Code:
    whatis orange juice
    You will get this message:

    orange: nothing appropriate.

    juice: nothing appropriate.

    basically telling you that Linux has no idea what orange juice is

    whereis

    whereis is a nice command for finding other commands or programs. If you decide to download any program from the internet, that program may need other programs in order to work. If you want to know whether or not you have it, you can type:
    whereis [program name]
    and find out.

    If you wanted to find out if you have the 'pico' editor and where it is, you would type:

    Code:
    whereis pico
    and you may get this:

    pico: /usr/bin/pico /usr/man/man1/pico.1.gz

    It shows you where the command is as well as the location of its manual file.


    whereis isn't designed to find people, so if you type

    Code:
    whereis Harry
    Linux is just going to say Harry:

    which

    To show you another tool for locating programs 'which' is similar to 'whereis'. It will give you the location of a program. At times, a program may not find another program it needs to make it run. It will need to know its location or "path". For example, a program may need Java to run it but thinks its in another place. You would simply type:

    Code:
    which java
    and Linux will inform you of its location

    /usr/lib/java/bin/java

    This is a handy command because some locations of programs vary from one version of Linux to the next. A software developer may have designed his/her program to access Java, for example, from a different location. As Open Source software will always let you modify configuration files to get your program working according to your needs, you can get the program to work for your system.

    echo

    To show you some uses of the 'echo' command 'echo' is a little command that repeats anything you type. For example if you type
    Code:
    echo hello
    Linux will display the word 'hello' .

    There is really no need to do that under normal conditions. You may find 'echo' useful in the future if you start writing "shell scripts" which are like little programs that you could use to do a few commands at one time. You could use 'echo' in those scripts to tell you what the script is doing at any given time, or to prompt you to do something, like enter text. Shell scripts will be taken up in a later course.

    There is a practical use for 'echo' in everyday life. I sometimes use it to write short notes. If we use 'echo' along with 'pipe' (|) and 'tee', you've got a poor-man's post-it-note.

    For example:

    Code:
    echo remember to tell Bill Gates he owes me 5 bucks | tee -a bill_gates.note
    Will make you a nice reminder note about dear 'ole Bill. Just remember to read your note. You could type:

    Code:
    echo remember to open Gates note | tee -a remember_gates.note
    to make yourself a reminder for the other reminder note. Use less bill_gates.note or less remember_gates.note to read your notes

    wc

    People following this course from Europe may recognize this as the symbol for 'bathroom'. Unfortunately, if you type this in your terminal it will not show you the way to the 'facilities'.

    Actually, this command will give you the number of lines, words and letters (characters) in a file and in that order.

    Let's go back to the file about the people I owe money. If I type:

    Code:
    wc people_I_owe_money.note
    I will get this output:

    439 6510 197120 wc people_I_owe.note

    As you can see, there are 439 lines, so that means if each line represents one person, then I owe 439 people money. There are 6510 words and a total of 197120 characters.

    I might add that this is a good tool for people who write letters professionally and get paid by the word.

    dir

    The people who traveled down the MS-DOS road will know this one. Actually, dir=ls -l. It will give you the same result. If you do any downloading or uploading of files via FTP by way of a non-GUI FTP program in your terminal, you may find this command useful. I once ran into a case where the remote computer didn't recognize thels -l command. I just typed in dir and that did the trick. Then I fired off a nasty e-mail a****g why in the world they weren't using Linux!

    pwd

    The command pwd will show complete information on the directory you're working in. For example, if you type
    Code:
    pwd
    you may get something like this:

    /home/bob/homework

    which shows you that you're in the directory 'homework' in your user directory as 'bob', so you know exactly where you are.

    date

    Did you forget your wedding aniversary? Your boyfriend or girlfriend's birthday? Tax day? (everyone wants to forget that one!) No need for that to happen anymore with Linux. Just type:

    Code:
    date
    You'll get this: (or something like it, actually. If you get the same thing as I do, then I'd consider buying lottery tickets)

    Thu Sep 7 20:34:13 CEST 2000

    You probably get everything here. If you're living in central Europe, you will recogize the 'CEST' part. That stands for 'Central European Standard Time'. Linux recognizes world time zones and you set this up when you installed Linux. If you live on Mars, you're out of luck, unfortunately.

    There are other uses of the 'date' command. To see just the date, type:

    Code:
    date +%D
    To see just the time, type:

    Code:
    date +%T
    To see on what day Christmas falls this year (really, I'm not kidding!), type:

    Code:
    date --date 'Dec 25'
    and you'll get the day that Christmas falls on this year. Substitute that for any date that you'd like to see.

    There are many other options. Consult your manual file ('man date') or ('info date')

    cal

    Typing cal will give you the calendar of the present month on your screen, in the nice standard calendar format. There are a lot of useful options.

    If you type:

    Code:
    cal 2000
    You'll get the entire calendar for the year 2000. Substitute any year you like.

    If you type:

    Code:
    cal 12 2025
    You'll see the calender for December of 2025. Substitute any year or month you like.

    If you add the option cal -m, the week will start on Monday, as it is preferred in many countries.

    Just for fun, I typed
    Code:
    cal 10 1492
    and I found out that Columbus discovered America on a Friday. That was good luck for him because that way he got to relax for the weekend.

    exit

    As you can guess, you can get out of a terminal with the exit command. If you're working in text mode, typing exitwill prompt you to login again. If you want to work as another user, use logout instead.

    If you're in x-windows, exit will close the X-Terminal you're working with exit with the option "stage right" will get you an error message.
  2. muthuh

    muthuh New Member

    Messages:
    2
    Likes Received:
    1
    Trophy Points:
    1
    Did anyone see this 'pipe' command explained in more details anywhere? Can't find it anywhere.. :/
    Mr.Alvlir likes this.
  3. SLW210

    SLW210 Member

    Messages:
    89
    Likes Received:
    31
    Trophy Points:
    18
  4. Rob

    Rob Administrator Staff Member

    Messages:
    575
    Likes Received:
    229
    Trophy Points:
    43
    Piping allows you to take the output of one command and redirect it to another command..

    like:

    Code:
    ls | sort
    will sort by name (which ls already does)

    Code:
    ls |sort -r
    will sort the output of ls in reverse

    if you have a lot of files like in /etc and they scroll by when you type:
    Code:
    ls -l /etc/
    then you can pipe it to less so you can scroll through it:
    Code:
    ls -l /etc/ | less
    kumar_mys likes this.
  5. kumar_mys

    kumar_mys New Member

    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
    U r gr8 Rob... I may be new to linux... but i am fan linuxers.... gr8 job... happy learning :)
  6. muthuh

    muthuh New Member

    Messages:
    2
    Likes Received:
    1
    Trophy Points:
    1
  7. Azizzz

    Azizzz New Member

    Messages:
    1
    Likes Received:
    1
    Trophy Points:
    3
    Hello,

    So I created a file (file1) with 'nano' and write stuff in it. Then I gave the command:

    'echo hello world > file1'

    When I did a 'cat' on file1, the output was "hello world", but I lost the stuff I wrote initially.
    Is there a way to go back/recover my first stuff?
    DevynCJohnson likes this.
  8. Aaron San

    Aaron San New Member

    Messages:
    1
    Likes Received:
    2
    Trophy Points:
    3

    I don't know how to recover your stuff (it seems to be impossible), but you can prevent this to happen again by adding this line in your .bashrc file:
    set -o noclobber
    Thus, when you try to use '>' to overwrite a file, bash will prevent you from doing this.However, if you REALLY want to overwrite the file, use '>|' instead.
    DevynCJohnson and Virneto like this.
  9. Virneto

    Virneto Member

    Messages:
    46
    Likes Received:
    21
    Trophy Points:
    8
    Very usefull information. Didn't knew that.
    Cheers!!
  10. emekadavid

    emekadavid Member Staff Writer

    Messages:
    63
    Likes Received:
    5
    Trophy Points:
    8
    i prefer using the locate command than the find command, although you have to update database, updatedb, once in a while.
    DevynCJohnson likes this.
  11. JDG

    JDG New Member

    Messages:
    17
    Likes Received:
    2
    Trophy Points:
    3
    Sed and awk are also neat.
    DevynCJohnson likes this.
  12. ryanvade

    ryanvade Administrator Staff Member Staff Writer

    Messages:
    1,342
    Likes Received:
    447
    Trophy Points:
    83
    Not commands exactly, but I can't live without && and ||
  13. harikrishna

    harikrishna New Member

    Messages:
    5
    Likes Received:
    1
    Trophy Points:
    3
    good thing about the author is he make the subject funny and make every one to sit and listen
  14. serhata

    serhata New Member

    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
    Thanks for giving info so i'm on first step for Linux sys. admin. take care.
  15. feras al-harbi

    feras al-harbi New Member

    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
  16. jadhav.sudeep

    jadhav.sudeep New Member

    Messages:
    6
    Likes Received:
    5
    Trophy Points:
    3
    what about `dd` command
  17. nixsavy

    nixsavy Member

    Messages:
    65
    Likes Received:
    17
    Trophy Points:
    8
    The dd command reads the InFile (standard input) parameter, does the specified conversions, then copies the converted data to the OutFile (standard output) parameter.
    For Example: To convert an ASCII text file to EBCDIC, Below command will convert the text.ascii file to EBCDIC representation, storing the EBCDIC version in the text.ebcdic file.

    Code:
    dd  if=text.ascii of=text.ebcdic conv=ebcdic
  18. Saptarshi Nag

    Saptarshi Nag Member

    Messages:
    42
    Likes Received:
    28
    Trophy Points:
    18
    great tutorial..no doubt :)
  19. Collinux

    Collinux New Member

    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    1
    Great tutorial, love the humor with it :)
  20. Donald W. Grimes

    Donald W. Grimes New Member

    Messages:
    11
    Likes Received:
    4
    Trophy Points:
    3
    Definitely made the tutorial more interesting.

Share This Page