LinuxShort

From MediaWiki

(Difference between revisions)
Jump to: navigation, search
m (Screen command)
m (Make a series of single-page EPS files from various inputs)
Line 57: Line 57:
The resulting files will be nicely named as p00000001.eps .... p00000013.eps
The resulting files will be nicely named as p00000001.eps .... p00000013.eps
 +
 +
=== ''' Cut a portion of a .pdf file '''
 +
Make a script named boundingBox.sh:
 +
  gs                          \
 +
  -q                        \
 +
  -dBATCH                    \
 +
  -dNOPAUSE                  \
 +
  -sDEVICE=bbox              \
 +
  -dLastPage=1              \
 +
    $1 \
 +
  2>&1                        \
 +
  | grep %%BoundingBox
 +
 +
Call the  script from the line with file_name as input:
 +
./boundingBox.sh file.pdf
 +
 +
The result will be sth. like: %%BoundingBox: 42 510 305 746, where lower left img coords = (42,510) and upper right = (305,746). Finaly, to cut a box 305-42=263 px wide and 746-510=236 high, excluding 42 pixels from the left and 510 pixels from the bottom, make a script ''crop.sh'':
 +
  gs                                                      \
 +
    -o out.png                                            \
 +
    -sDEVICE=pngalpha                                    \
 +
    -g$2x$3                                            \
 +
    -dLastPage=1                                          \
 +
    -c "<</Install {$4 $5 translate}>> setpagedevice" \
 +
    -f $1
 +
 +
where $1x$2=width x height and $4 $5 are the portion excluded from the left and bootom. In this example:
 +
  ./crop.sh file.pdf 263 236 -42 -510
=== '''Convert eps to jpg using native gs''' ===
=== '''Convert eps to jpg using native gs''' ===

Revision as of 11:29, 27 May 2014

Contents

Usefull short commands

Kill a process tree

When some script is started from a command line in a for-loop and a process tree is made, one should find the parent process and its PID and then simply kill it:

   $ pstree username -p 
   sshd(19953)---bash(19954)---bash(22238)---idl(22323)-+-{idl}(22326)
                                                        |-{idl}(22327)
                                                        |-{idl}(22328)
                                                        `-{idl}(22329) 
   sshd(20096)---bash(20097)
   sshd(20762)---bash(20763)
   sshd(21087)---bash(21088)-+-grep(21309)
                             `-top(21308)
   sshd(21736)---bash(21737)
   sshd(21780)---bash(21781)---pstree(22331)

Or if this tree is to long, one should grep the program (here:idl) with: $ pstree usrname -p | grep idl

   $ kill 19953  
   $ pstree username -p  
   sshd(20096)---bash(20097)
   sshd(20762)---bash(20763)
   sshd(21087)---bash(21088)-+-grep(21309)
                             `-top(21308)
   sshd(21736)---bash(21737)
   sshd(21780)---bash(21781)---pstree(22332)

Change sth inside file

  sed -i s/'\-9999'/'NaN'/g filename 

This will change -9999 with NaN inside a file, without making some tmp file in between.

Print rotated picture

  lp -o media=a4 -o orientation-requested=4 -o fitplot figure.ps

Print in fixed width format with awk

 echo $a $b $c |  awk '{for (i=1; i<=NF; i++) printf("%-20s ",$i);printf ("\n")}' > outfile.dat

where strings a,b,c may be entire lines.

Make a small size pdf out of several pdfs

 gs -sDEVICE=pdfwrite -q -dNOPAUSE -dBATCH -sOutputFile=MajorFile.pdf SmallFiles*.pdf 

Combined files can ba a mix of .pdf .ps and .eps files and output file can be a .ps also

Cut a portion of a pdf file saving resolution and sharpness

 gs -g2700x3500 -sOUTPUTFILE=output.pdf -sDEVICE=pdfwrite -dBATCH -c "<< /PageOffset [-30 -120] >> setpagedevice" -f input.pdf

Where [-30 -120] means - shift the content of the old image to its left corner by (x,y)=(30,120) pixels (change the origin of the image) and 2700x3500 are the dimensions of the new image. Be careful - input.pdf should be a single page.

Make a series of single-page EPS files from various inputs

 gs -sDEVICE=epswrite -q -dNOPAUSE -dBATCH -dSAFER -sOutputFile=p%08d.eps 5page-first.pdf 7page-second.ps 1page-third.eps 

The resulting files will be nicely named as p00000001.eps .... p00000013.eps

=== Cut a portion of a .pdf file Make a script named boundingBox.sh:

 gs                          \
  -q                         \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sDEVICE=bbox              \
  -dLastPage=1               \
   $1 \
 2>&1                        \
 | grep %%BoundingBox
Call the  script from the line with file_name as input: 
./boundingBox.sh file.pdf 

The result will be sth. like: %%BoundingBox: 42 510 305 746, where lower left img coords = (42,510) and upper right = (305,746). Finaly, to cut a box 305-42=263 px wide and 746-510=236 high, excluding 42 pixels from the left and 510 pixels from the bottom, make a script crop.sh:

 gs                                                      \
   -o out.png                                            \
   -sDEVICE=pngalpha                                     \
   -g$2x$3                                             \
   -dLastPage=1                                          \
   -c "<</Install {$4 $5 translate}>> setpagedevice" \
   -f $1 

where $1x$2=width x height and $4 $5 are the portion excluded from the left and bootom. In this example:

 ./crop.sh file.pdf 263 236 -42 -510

Convert eps to jpg using native gs

 gs -sDEVICE=jpeg -q -dJPEGQ=100 -dNOPAUSE -dBATCH -dSAFER -r100 -sOutputFile=image.jpg image.eps # -r100 should be changed to -r50 for denser image 

Convert (e)ps to png or gif

name="imgName"; figdir="/home/..../Figures"; text="my image"
1. convert $name.ps -depth 8 -alpha off -density 600 
2. convert $name.ps -depth 8 -alpha off -density 600 ${figdir}/${name}_large.gif 
3. convert $name.ps -depth 8 -alpha off -density 600 -resize 320x240 ${figdir}/${name}_large.gif
4. convert $name.ps -depth 8 -alpha off -density 600 -gravity Southeast -font helvetica -pointsize 75 \ 
-draw "text 150,100 '$text'" ${figdir}/${name}_large.gif

1. Resulting image will be named as .eps and will end up at the same place.

2. Resulting image will be named imgName_large.gif and will be placed in \$figdir.

3. Additionally, image can be resized in the same step.

4. Put text into image

Resize image

 mogrify -trim -resize 70% image.jpg   # or -resize 800x600 for fixed width

Screen command

 screen -S name # name a screen
 screen -ls # list all screens (those named will be easily read)
 Ctrl+a+d # detach screen
 screen -r name # attach to a screen
 screen -S name -X quit # kill detached screen and return to a terminal
 ls -laR /var/run/screen/ # lists when the screens start running

Some cool stuff

  • Very nice themes for Ubuntu 10.04
   sudo add-apt-repository ppa:bisigi
   sudo aptitude update
   sudo aptitude install bisigi-themes
  • Convert youtube .flv to .mp3 (FORUM)
  sudo apt-get install youtube-dl
  sudo youtube-dl -U
  sudo youtube-dl -U
  sudo apt-get install ffmpeg libavcodec-unstripped-52
  sudo apt-get install ubuntu-restricted-extras 
  # Example:
  youtube-dl http://www.youtube.com/watch?v=Md7IhGYKncs
  ffmpeg -i Md7IhGYKncs.flv -acodec libmp3lame -ab 128 indiana.mp3
Personal tools