Command the power of the command line

By Mictlantecuhtli
Mar 13, 2006
  1. I came across this (hopefully) helpful article about command line basics.

    Speaking UNIX: Command the power of the command line

    Learn the basics of the UNIX shell and discover how you can use the command line to combine a finite set of UNIX utilities into data transforms.
  2. fgaliegue

    fgaliegue TS Rookie Posts: 51

    Good stuff, but then there's something wrong with his verbatim copy of a directory... You should add the p option to the tar extraction command, in order to preserve file attributes (ctime, mtime, atime, owner, group) - ie, tar xpvf and not tar xvf.

    I use this regularly in order to make verbatim copies of a directory:

    (cd /path/to/src/dir && tar cf - .)|(cd /path/to/dst/dir && tar xpvf -)
  3. fgaliegue

    fgaliegue TS Rookie Posts: 51

    Here's a good example of the command line in use. At my job, the internal DNS zone files only mapped addresses up to, thus unresolving all addresses from 82 to 254. With this simple command, I updated both the zone file and reverse zone file:

    for i in `seq 82 254`; do echo -e "dev$i\t\tIN A 192.168.1.$i" >>; echo -e "192.168.1.$i\t\tIN PTR dev$i." >>; done

    And voilĂ , job done - well, after hand editing both files and changing the serial and then typing service named reload.
  4. fgaliegue

    fgaliegue TS Rookie Posts: 51

    Another good one :p

    My girlfriend programs Java, and she got herself in her head to write a program to solve Sudoku grids (and it works!). However, she needed grids...

    Well, she found an URL giving different grids each time it was invoked, and gave it to me. I had to take the case with values in them and output for each grid the correct instructions to set the grid. To make matters more complex yet, the grids were 16x16, and numbers 10 to 16 were printed A, B, ..., G. She wanted the numbers.

    Complex task? No, a quick look at the generated HTML, and a one liner:

    for i in `seq 30`; do htmlcode=orig.$i; gridfile=grid$; wget -O $htmlcode -nv http://the.url/which/I/dont/remember; echo "// Grid $i" >$gridfile; perl -ne '($x, $y, $val) = /name="sudoku\[(\d+)\]\[(\d+)\]" value="(.)"/ or next; $val =~ /\D/ and $val = 10 + (ord($val) - ord("A")); print "grid.set($x, $y, $val);\n"' <$htmlcode >$gridfile; rm $htmlcode -f;done

    OK, this one is a little complex, but I did type it in one line only :p The time to build it properly, double check it, generate the thirty grids: 20 minutes, the vast majority of which has been spent downloading the grids...
Topic Status:
Not open for further replies.

Similar Topics

Add New Comment

You need to be a member to leave a comment. Join thousands of tech enthusiasts and participate.
TechSpot Account You may also...