Difference between revisions of "Linux"

From PHYSpedia
Jump to: navigation, search
(The Command Line)
(Processing Text Files)
Line 85: Line 85:
 
;<code>sed 's/old/new/g' [file]</code>
 
;<code>sed 's/old/new/g' [file]</code>
 
: read from stdin, or from a file, and replace all instances of 'old' with 'new', then print to stdout
 
: read from stdin, or from a file, and replace all instances of 'old' with 'new', then print to stdout
 +
 +
;<code>gawk '{print $1,$2}' [file]<code>
 +
: read from stdin, or from a file, and print columns (in this example, we would be printing columns 1 and 2).
 +
: <code>gawk</code> is often more useful than <code>cut</code> because it considers columns/fields to be separated by any white space
 +
: <code>gawk</code> can be used to re-order columns easily
 +
: <code>gawk</code> can be used to "transform" columns easily (for example, multiply a column by 2)
  
 
===Pipes===
 
===Pipes===

Revision as of 10:41, 7 February 2013

Misc Links

These topics have their own pages.

Getting Started

Gnuplot

Common C, C++, FORTRAN Libraries

The Command Line

Useful Commands

The following is a (short) list of useful command when manipulating data in text files. Some common options are listed, but may not be explained. For full descriptions of each command, see the man page. stdin, stdout, and stderr refer to standard input, output and error, respectively.

File Management: Creating, Viewing, Moving, Deleting, Etc.

ls [dir]
list the contents of a directory to stdout
if no directory is given, the contents of the current directory are listed
common options: -l, -a
cd [dir]
change current working directory to a directory. i.e. go into a directory
used to navigate the filesystem
mkdir dir
make directory named 'dir'
rm file1 [file2 [...] ]
remove one or more files
if trying to remove a directory, the -r option must be given
mv source [source2 [...] ] dest
move a file or files. if multiple files are given, then the last argument must be a directory.
the move command will do different things depending on how many arguments are given, and whether the arguments are files or directories.
see a list of examples here
cp source [source2 [...] ] dest
copy a file or files. if multiple files are given, then the last argument must be a directory.
like the move command, cp will do different things depending on the arguments given. see the examples for mv to see how arguments determine the outcome.
cat [file1 [ file2 [...] ] ]
print text file(s) to stdout. if multiple files are given, their text is concatenated
useful for starting a pipeline of commands from the contents of a text file

Processing Text Files

cat [file1 [ file2 [...] ] ]
print text file(s) to stdout. if multiple files are given, their text is concatenated
useful for starting a pipeline of commands from the contents of a text file
grep "pattern" [ file1 [ file2 [...] ] ]
find text matching 'pattern' in files, or from stdin, and print matching lines to stdout
useful for finding a file containing a specific configuration options
useful for filtering output of a program to only those lines that are interesting
see a list of examples here
echo [args...]
print arguments to stdout
useful for starting a pipeline of commands from a variable's value
useful for printing output to the terminal from inside a script
sort
read from stdin, sort lines, and write to stdout
common options: -k, -t, -n, -g
cut
read from stdin and write selected columns to stdout.
common options: -d, -f
column
read from stdin and write to stdout such that columns are aligned
common options: -t
head [file]
read from stdin, or from a file, and print the first 10 lines
useful for taking a peak at the contents of a large file
useful for limitng the output of a pipeline
common options: -n
tail [file]
read from stdin, or from a file, and print the last 10 lines
similar uses to head
can be used with head to print a single line, or range of lines, in a file
common options: -n
sed 's/old/new/g' [file]
read from stdin, or from a file, and replace all instances of 'old' with 'new', then print to stdout
gawk '{print $1,$2}' [file]<code>
read from stdin, or from a file, and print columns (in this example, we would be printing columns 1 and 2).
<code>gawk is often more useful than cut because it considers columns/fields to be separated by any white space
gawk can be used to re-order columns easily
gawk can be used to "transform" columns easily (for example, multiply a column by 2)

Pipes

Pipes allow you to use multiple commands together. Any command that reads input from stdin and writes to stdout can be used in a pipe.

Shell Scripts

Shell scripts are just text files that contain a list of commands for the shell to run. Anything you can run at the command line can be ran in a shell script. To create a shell script, you must do two things.

  1. create a text file with the comment #! /bin/bash on the first line.
  2. make the text file "executable" with the chmod command.

Here is an example of a simple "hello world" script.


#! /bin/bash

echo "hello world"

If you save this in a file named 'hello.sh', then to run it you must first make it executable.


user@host:~$ chmod +x hello.sh
user@host:~$ ./hello.sh

You may find some more information on the scripting page.