1. convert audible *.aax files to *.mp3 in Linux (April 2024 update)
  2. HTML to PDF conversion
  3. In August 2023 I used wkhtmltopdf. I had some problems with Greek characters so I had to add the following in the HTML:

        <meta charset="utf-8">
    … as advised here. Eventually, the final incantation used was:
     wkhtmltopdf --disable-smart-shrinking -O Landscape -s foo.html foo.pdf

  4. how to unzip files zipped with the AES encryption
  5. In April 2023 when trying to use unzip on a *.zip file I encountered the following message:

    $ unzip staging-2023-cred.zip 
    Archive:  staging-2023-cred.zip
       skipping: staging-2023-cred.txt   unsupported compression method 99
    It turns out that my unzip program was unable to unzip the archive as it used the Adavanced Encryption Standard (AES) encryption, which is not supported by unzip, at least not in the version I was using:
    $ unzip -v
    UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
    After some googling I realized I had to install the 7zip package which supports AES encryption:
    $ sudo apt update
    $ sudo apt install p7zip-full p7zip-rar
    … following the above, I was able to unzip using:
    $ 7z e staging-2023-cred.zip
    Note that the archive was password-protected and I was prompted for the password by the 7z program.

  6. recursively change modification timestamp in a set of files
  7.  for f in $(find some-dir/); do  sudo touch -a -m -t 202303062145.32 $f; done
    NB: the above procedure will NOT modify the "change date" of the file (ctime). The status change timestamp is shown with the stat command and is, by design, impossible to change. The only way to accomplish this would be to change the time in the entire system. See: here.
  8. overwrite modification timestamps when creating a tarball
  9. tar -cvf boo-2023-03-06.tar --sort=name --mtime='UTC 2023-03-06' boo/ 
  10. find files and sort based on modification time
  11. find src -regex '.*-func.tsx' -printf "%T@ %Tc %p\n" | sort -n

    — or, to search all non-directories, use:
    find src/components/ ! -type d -printf "%T@ %Tc %p\n" | sort -n
  12. looping through files with spaces in names
  13. I've successfully used the following script (source):

    find . -type f -name "*.csv" -print0 | while IFS= read -r -d '' file; do
        echo "file = $file"
        diff "$file" "/some/other/path/$file"
        read line </dev/tty

  14. format output to a specific line length
  15. source
    fold -s -w80 /some/file
  16. continuous work approach
  17. while inotifywait -e close_write contract.tex; do make; done
  18. remove metadata from PNG (and other) image files
  19. source

    The following command removes all metadata:

    $ exiftool -all= foo.png

    The following command displays metadata (notice the missing equals sign)

    $ exiftool -all foo.png

    One can also use the mogrify program:

    mogrify -strip foo.png

  20. rotate and resize PDF
  21. source

    The program pdfjam is installed with:

    sudo apt install texlive-extra-utils

    I then did:

    pdfjam --paper a4paper --angle 90 some-file.pdf

  22. ultra-useful script for reducing the size of PDF files by lowering resolution
  23. find . -iname \*.pdf -exec gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile='{}.2.pdf' '{}' \; -exec mv '{}.2.pdf' '{}' \; 

    NB: I have not found a way to specify a custom resolution that would be lower to that of /screen


    1. https://askubuntu.com/a/256449
    2. https://stackoverflow.com/a/6043896

  24. useful programs for examining / comparing binary files
  25. hexdump, cmp and the hexl-mode of emacs

  26. how I downloaded files from my Android phone to Ubuntu
  27. I installed the FileManager+ application on my Android device which has an option "Access from network" which I then used to download the files to my machine using the filezilla program. I tried the command-line version of ftp but it didn't support wildcards. Also, FTP support has been removed from Chrome so that wasn't an option either. Filezilla worked like a charm.

    On AM's Android device I couldn't find FileManager+ to install on the app store (only on dangerous 3rd party stores) so I installed (from the app store) the WiFi File Explorer app which offered a similar FTP functionality.

    update 2022-08-31. In August 2022 I used the same method with similar success on my Ubuntu 20.04 machine. I also note that, for some reason, Firefox too (besides Chrome) failed to open the FTP link. In any case, Filezilla delivered.

  28. concatenate PDFs (much simpler method)
  29. pdftk pg1.pdf pg2.pdf cat output all.pdf
  30. dead simple HTTP server
  31. source

    python3 -m http.server
    It should will serve whatever's in the CWD (e.g. index.html) at

  32. concatenate / merge multiple PDF into a single one
  33. NB: see simpler way above
    source 1 source 2
    I 've used the following:

    convert -density 300x300 -quality 100 1.pdf 2.pdf merged.pdf
    After I was hit with:
    convert: not authorized `*.pdf' @ error/constitute.c/ReadImage/412.
    I modified file
    as follows:
    <   <policy domain="coder" rights="none" pattern="PDF" />
    >   <policy domain="coder" rights="read|write" pattern="PDF" />

  34. analyze PDF document for malicious code
  35. Starting off from https://security.stackexchange.com/a/2897/131157 I used the following two programs:

  36. test mouse for click problems in Ubuntu
  37. xev | awk '/ButtonRelease/ {print $1, i++}'
  38. play music CDs from the command line
  39. mplayer -cdrom-device -cache 5000 /dev/sr0 cdda://
  40. decrypting PDF files
  41. source

    On 2019-03-08 I used the qpdf tool as described in the source:

    sudo apt-get install qpdf
    qpdf –password=password –decrypt /home/lori/Documents/secured.pdf /home/lori/Documents/unsecured.pdf
    … it worked like a charm.

    NB: I encountered problems when trying to use the other approach suggested in the same source, namely that of using pdftk:

    $ pdftk ~/Downloads/plan-to-conquer-the-world.pdf input_pw superdupersecretpwd output foo.pdf
    Error: Unexpected Exception in open_reader()
    Unhandled Java Exception in main():
       at gnu.gcj.runtime.NameFinder.lookup(libgcj.so.16)
       at java.lang.Throwable.getStackTrace(libgcj.so.16)
       at java.lang.Throwable.stackTraceString(libgcj.so.16)
       at java.lang.Throwable.printStackTrace(libgcj.so.16)
       at java.lang.Throwable.printStackTrace(libgcj.so.16)

  42. convert audible *.aax files to *.mp3 in Linux
  43. NB: this no longer works as of April 2024, see updated note here.

  44. getting a window's PID by clicking on it
  45. xprop _NET_WM_PID | cut -d' ' -f3
    {click on window}
  46. how to copy Audio CD in Ubuntu
  47. Install the awesome K3B (KDE Burning Tool) - much better than Brasero which has given me a lot of grief. The below worked like a charm in my 32-bit Ubuntu 12.04.5 LTS on July 2017.

    $ sudo apt-get install k3b -y --force-yes

    Launch with:

    $ k3b

  48. how to extract a slice out of an mp3 file without re-encoding (which might lead to quality degradation)
  49. ffmpeg -i long-boring-cd.mp3 -vn -acodec copy -ss 00:00:00 -t 00:03:03 my-favourite-track.mp3
  50. alsamixer settings
  51. Most of the alsamixer settings are about the microphones. Most of the settings are about the microphones But the PCM (Pulse Code Modulation) gain control effectively controls the volume.

    Pulse Code Modulation (PCM) is the primary way analog audio signals are converted into digital form by taking samples of the waveforms from 8 to 192 thousand times per second (8 to 192 kHz) and recording each sample as a digital number from 8 to 24 bits long (seesampling). PCM data are pure digital audio samples, and they are the underlying data in several music file formats (see WAV, FLAC and AIFF).

    The audio-out port on a sound card provides an analog signal to the speakers; however, compressed formats such as MP3 and AAC are converted to PCM, and the PCM data are converted to analog (see D/A converter). Sound cards may also output PCM and other digital signals such as Dolby Digital (see S/PDIF). With regard to input, an analog microphone is plugged into the audio-in port, and the sound card converts the analog signals to PCM.

  52. sound issues in Ubuntu 16.04
  53. I recently (Autumn 2017) lost sound in two separate occassions, on two separate machines (Ubuntu 14.04 and Ubuntu 16.04). I managed to restore sound with the following two methods:

    In both cases I tried playing with the alsamixer dB gains settings but that didn't fix my problem.

    To verify the solutions I used:

    play /usr/share/sounds/alsa/Front_Center.wav

  54. how to encrypt PDF files in Ubuntu
  55. (source) — the following worked on Ubuntu 16.04 in 2017:
    sudo apt install pdftk
    pdftk ~/Downloads/mp.pdf output ~/Downloads/mp-encrypted.pdf owner_pw changeme user_pw changeme2
    The above incantation purposefully disallows printing the document. The owner and user passwords have to differ (I am not super-clear on the nuances).
  56. install Graphviz in Ubuntu 16.04
  57. how I managed to solve the dreaded suspend / resume failure on my Dell Precision M3800 laptop running Ubuntu 14.04 or 16.04
  58. install Chrome in Ubuntu 16.04
  59. synopsis:

    Download the package and install it force-installing the dependencies:

    sudo dpkg -i --force-depends google-chrome-stable_current_amd64.deb

    In case any dependencies didn't install (you would have a warning or failure message for this), you can force them via:

    sudo apt-get install -f

  60. Ubuntu 14.04 how to set sound levels on the command line
  61. source

    Increase volume by 5%

    amixer -D pulse sset Master 5%+

    Decrease volume by 5%

    amixer -D pulse sset Master 5%-

    Set volume to 50%

    amixer -D pulse sset Master 50%

    NB: Under i3wm I have binded the above commands to my laptop volume control keys. The bindings live in the ~/.config/i3/config file (on my Precision machine).

  62. how to install Skype on Ubuntu 14.04 64bit LTS
  63. The installation was eventfull — I ended up using the following links:

    1. installation instructions
    2. post-installation library problem fix — step 1
    3. post-installation library problem fix — step 2

    … I ended up adding the following line:
    alias skype='LD_PRELOAD=/usr/lib/i386-linux-gnu/me‌​sa/libGL.so.1 skype'
    … in the .bashrc_thisnode file for the Dell Precision laptop (where I am running Unbuntu 14.04 LTS 64 bit).

  64. how to merge multiple JPG or PNG files into a PDF file
  65. Use convert (source) to, e.g. do a:
    convert diploma-transcript-greek-pg1-col.jpg diploma-transcript-greek-pg2-col.jpg diploma-transcript-greek-full-size.pdf

    To control page size and background color you can do:

    convert IMG_20190331_143038.jpg IMG_20190331_143055.jpg IMG_20190331_143110.jpg -background white -page a4 plot-signed.pdf

    Following the conversion you may wish to compress the resultant PDF file.

    update When the files (e.g. PNG) are not already A4-sized I have also successfully used the below incantation:

    i=150; convert dell-stuff-pg1.png dell-stuff-pg2.png dell-stuff-pg3.png -resize $(echo ${i}*8.27 | bc)x$(echo ${i}*11.69 | bc) -density ${i}x${i} -repage $(echo ${i}*8.27 | bc)x$(echo ${i}*11.69 | bc) dell-stuff.pdf
    … based on this answer.

  66. how to compress a PDF file
  67. source
    gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
    If the /screen option results in too low quality, try /ebook instead.
  68. how to test what a site looks like from various other world-wide locations
  69. Use geopeeker.com.
  70. test network speed
  71. The speedtest.net web site can be used to test upload and download speed to any geographical region of the world.
  72. how to dump specific bytes of a binary file in a human-readable format
  73. Use dd and pipe the output to either xxd or hexdump.
    $ dd if=sample-rapid-file ibs=1 skip=164 count=20 2>/dev/null | xxd -b
    0000000: 00000000 00000000 00000000 10111101 00000000 00000000  ......
    0000006: 00000000 00000000 00000000 00000000 00000000 00000001  ......
    000000c: 00000000 00000000 00000000 00000000 00000000 00000000  ......
    0000012: 00000000 00000000                                      ..

    ... or:
    $ dd if=sample-rapid-file ibs=1 skip=164 count=20 2>/dev/null | hexdump -C
    00000000  00 00 00 bd 00 00 00 00  00 00 00 01 00 00 00 00  |................|
    00000010  00 00 00 00                                       |....|
  74. how to output the binary representation of a file
  75. xxd -bp sample.dat | head -3
  76. capture a window with a fused delay of 10 seconds
  77. This is useful when wanting to also capture a context popup menu (e.g. as typically launched by a right mouse click).
    $ gnome-screenshot -w -d 10

    gnome-screenshot --interactive
  78. Hex editor for the shell
  79. Emacs has the hexl-mode for hexadecimal viewing/editing.
  80. infinite loop in bash; and break on problem
  81. while true; do ./valgraph-harvest-wrongsets-last-30-days-html; if [[ $? != 0 ]]; then break ; fi ; done
  82. proper way to encode a string in MD5 using md5sum
  83. Simply doing a:
    echo "password" | md5sum
    ... will not work as the shell also insidiously suffixes an end-of-line character.
    Either of the two ways have to be used instead:
    $ echo -n password | md5sum
    5f4dcc3b5aa765d61d8327deb882cf99  -
    $ printf '%s' "password" | md5sum
    5f4dcc3b5aa765d61d8327deb882cf99  -

    The insidious suffixing of an end-of-line character can be confirmed with the following:
    printf '%s\n' "password" | md5sum
  84. how to customize Conkeror with your own default key-bindings
  85. The instructions I found most useful are here. Also this page contains examples of using the define_key function which I found useful and actually used.
    My own Conkeror customizations are under git in ~/environment/.conkerorrc/ and they of course have to be symlinked from home:
    ln -s environment/.conkerorrc/

    ... in order for Conkeror to pick them up.
  86. how to install Conkeror in Ubuntu (again, latest approach)
  87. On 15.IX.2014 I used the following approach to install Conkeror: The source was this answer
  88. install the apt repository for Nightly built Conkeror Debian Pakcages
  89. source
    Add the following lines to your /etc/apt/sources.list (for Wheezy as in my system that's what cat /etc/debian_version shows):
    deb     http://noone.org/conkeror-nightly-debs wheezy main
    deb-src http://noone.org/conkeror-nightly-debs wheezy main

    Then add the latest key to your APT key ring without verfication, just execute the following as root:
    apt-key adv --keyserver pgp.uni-mainz.de --recv-keys 0F84088E
  90. Install the conkeror packages
  91. source
    sudo apt-get udpate
    sudo apt-get install conkeror conkeror-spawn-process-helper
  92. finally, rely on the (already existing by now) conkeror script and Dash integration using alacarte as described in the alternative instructions (used in the past) below
  93. convert PDF to PNG high-quality
  94. The below seems to give good results (source):
    convert -density 300 cds-oai-dc-problem.pdf -trim -quality 100  cds-oai-dc-problem.png
    By passing -trim as an option we also get rid of a subsequent trimming step.
  95. command line to convert a PDF file to PNG in Ubuntu
  96. convert database-high-level.pdf -background White -flatten database-high-level.png
    (the above incantation also replaces the transparent background with white background)
  97. trim PNG images in Ubuntu
  98. Use the trim command of the convert program from the ImageMagick package:
    convert input.png -trim output.png
  99. meld alternative (that also supports comparisons among more than 2 files)
  100. sudo apt-get install diffuse
  101. install DbVisualizer 9.1 in Ubuntu
  102. In the past I had some successes with the Linux x86 setup installer you can get from here, but today I failed repeatedly to get it to properly install using that script, so in the end I just downloaded the UNIX tar.gz archive (from the same location), exploded it locally and then added dbvis on the launchpad Dash using alacarte. I then searched my gmail for the dbvis.license key I have.
  103. add an arbitrary application to the Ubuntu Dash overlay of the launchpad
  104. Use alacarte. Info here.
  105. compare files in current directory only with those of another directory
  106. way 1
    The below way uses the snapshot_dir as the reference directory, so if a file is missing there it is not compared.
        for f in $(find snapshot_dir -maxdepth 1 -type f -iname \*.xsd -o -iname \*.dtd) ; do diff `basename $f` $f ; done

    way 2
    The below way uses the local_dir as the reference directory, so if a file is missing there is is not compared.
        for f in $(find . -maxdepth 1 -type f -iname \*.xsd -o -iname \*.dtd) ; do diff $f snapshot_dir/$f ; done
    I suppose the most rigorous check is combining both ways in a single script.
  107. how to install Conkeror in Ubuntu
  108. Original link here. Four steps:

    1. instal xulrunner
    2. follow top answer here.

      Note that for some reason the sudo sh -c "wget -O- $XURL | tar -xj" command didn't work for me and I had to manually download $XURL (in my case it was this link), and then do a:

      sudo cat ~/Downloads/xulrunner-23.0.en-US.linux-i686.tar.bz2 | sudo tar -xj
    3. install Conkeror
    4. For that, I didn't follow my earlier routine (described here), but rather I simply cloned Conkeror's git repository:
      git clone http://repo.or.cz/r/conkeror.git
    5. preapare a conkeror script
    6. In my case, that script I prepared (based on instructions found here resides in the ~tools git repository.
    7. add the script to the Dash using alacarte
    8. Instructions here.

  109. how to open up a terminal in any folder of the file browser
  110. sudo apt-get install nautilus-open-terminal

    then, right-clicking on a folder shows option "Open in Terminal" (a log-off / log-in cycle may be necessary)
  111. how to install bd (quickly go back to a specfic parent directory)
  112. Original link:

    (I 've downloaded it at ~/tools, so I it's not on /usr/bin/bd)
  113. get diff (esp. a recursive one) to produce very summarized output
  114. Pipe the output of diff to diffstat
  115. find out quickly the amount of memory recognized by the system
  116. free -mt
  117. find out if the Linux version and/or the hardware support PAE (Physical Address Extension)
  118. This is determined by searching for the string 'pae' in the output of the following programs, for the OS and the hardware, respectively:
    uname -a | grep pae
    grep --color=always -i PAE /proc/cpuinfo
  119. show system specs in Ubuntu
  120. There are many ways:
    sudo lshw
    sudo lshw -html > myspecs.html
  121. how to find which process binds on specific ports
  122. sudo netstat -tulpn 
    and then, once you have the PID (e.g. 3903), you can do a:
            ls -l /proc/3903/exe
            cat /proc/3903/cmdline
            ls -l /proc/3903/cwd 
    ... to find more about the process.
  123. pattern to use when in need to replace broken links in a systematic way:
  124. find . -iname \*.jar | while read ANS;
        do DIR=$(dirname "$ANS");
        cd "$DIR";
        rm $(basename "$ANS"); 
        ln -s ../../../../../../../../repo-wide-libs/$(basename "$ANS");
  125. interesting tar incantation
  126. tar jcpf archive-name.tar.bz2 www/{folderA,folderB} 
  127. report total disk usage of directory
  128. du -s
    Also, -b to report bytes and -h for human-readable.
  129. cleanse hash table info of the shell as to the location of executables
  130. hash -r
  131. alternative to diff
  132. one can use md5sum
  133. list open TCP sockets
  134. lsof | grep TCP
  135. recursively copy remote folder and keep permissions and modes (alternative to scp)
  136. ssh mperdikeas@ 'tar cpf - cluster/' | tar xpvf -
  137. how to find broken links
  138. find -L -type l
    I.e. find files following links (-L) and report those that remain links (-type l)
  139. find and kill an app
  140. Let's say we need to find and kill the Conkeror app:
    ps axwww | grep conkeror | grep -v grep

    or, better yet:

    ps axwww | grep 'c[o]nkeror'
    (note: I don't see any difference with the 'axw' flags)

    Once you get the pid a kill -7 should normaly suffice.

  141. troubleshooting sound problems in Ubuntu
  142. 'Tis a long and sad tale. The gist of the matter (and what worked for me) was a combination of purging pulseaudio (including locally modified config files in /etc/pulse) and re-installing it, (and doing the same for other Ubuntu audio libraries as well). Helpful material:
    1. trouble shooting procedure
      I followed the above guide on 2016-04-21 on my 12.04 LTS machine and what did the trick was Step 6 where I am asked to install and use pavucontrol:
      sudo apt-get install pavucontrol
    2. trouble shooting guide
    Actually, the second was rather more helpful than the first.

    Litmus tests:

    play /usr/share/sounds/alsa/Front_Center.wav
    ... and the Skype echo service.

    Another thing to check out for is to make sure that the user belongs to the audio group. I.e. do a:

    sudo \emacs -nw /etc/group
    Finally, I also tried this guide on setting the default audio card although it didn't have any effect in this particular case (maybe the problem wasn't there).
  143. re-enable the sound icon on Ubuntu precise
  144. The following incantation worked for me:
    sudo apt-get install indicator-sound
    killall unity-panel-service
  145. how to change a file's encoding from ISO8859-7 to UTF8
  146. It may happen that the javac compiler complains for the encoding used in a file. Rather than using the -encoding option to javac (in the build.xml, use <presetdef> to setup defaults for all of your javac invocations and pass -Dfile.encoding=iso-8859-7) one can also convert the file manually.

    To find the offending file:

     $ ant  2>&1 | grep unmapp | awk '{print $2}' | sed 's,:.*,,' | sort | uniq
    convert it with iconv:
    iconv -f ISO8859-7 -t UTF-8 
    (you may also have to export LANG=en_US.UTF-8)
  147. piping with xargs
  148. To rm all java files (you need the -print0 and -0 options to work with filenames containing spaces etc.):
    find . -iname \*.txt -print0 | xargs -0 rm
  149. pipe coloured output through less
  150. Use the 'ls -RG' option and make sure the original application (that generates the colour-coded output) is set to --color=always if such option exists.
  151. find the package a binary belongs to in Debian distros
  152. E.g. find the package for sensors:

    dpkg -S $(which sensors)
  153. monitor chipset and CPU sensors in Ubuntu
  154. Use sensors from package lm-sensors as in:
    watch sensors
  155. change hostname in Ubuntu
  156. simply edit /etc/hostname and /etc/hosts (for To flush the previous hostname from various applications a reboot may be required.
  157. setting HTTP proxy in Ubuntu
  158. export http_proxy="http://foo.bar:8080"
    subsequent wget requests will redirect to foo.bar:8080
  159. package managers
  160. apt is used in Debian, Ubuntu and rpm in Fedora, Redhat, Suse. apt is better.

    Typical apt commands: apt-get install, apt-cache search, apt-get autoremove, apt-get update.

  161. curl
  162. curl is a Linux utility that can be used to simulate HTTP GET and HTTP POST requests. A simple:
    #curl www.in.gr
    ...will execute an HTTP GET against www.in.gr.
  163. SSE time
  164. get time in SSE:
    date +%s
  165. Linux Operating System Information
  166. General OS information (including whether the kernel is 32 or 64 bit):
    uname -a

    or (if you are only interested in 32bit vs. 64bit):
    x86_64 GNU/Linux indicates that you've a 64bit Linux kernel running. If you use see i386/i486/i586/i686 it is a 32 bit kernel.
    NB:This applies to the operating system kernel, not the CPU itself.
  167. Find if CPU is 32 or 64 bits
  168. grep ^flags /proc/cpuinfo | uniq | grep lm

    ("lm" means long mode CPU - 64 bit CPU)
  169. find installed packages
  170. apt-cache search  - or -
                          dpkg --get-selections | grep 
  171. how to find a file named "compile_decoder.sh" in a set of bz2 files
  172. for f in `ls *.bz2` ; do tar -jtvf  $f ; done | grep compile_decoder.sh

    ... Actually, the following also works and produces identical output:
    for f in `ls *.bz2` ; do tar -jtvf $f | grep compile_decoder.sh ; done
  173. to find out the release
  174. $ lsb_release -a
  175. how to start xserver in Cygwin:
  176. startxwin
    ... and then to redirect X output from the new shell:
    ssh -X mperdikeas@remote.location
  177. see all processes run by user 'mperdikeas':
  178. $ps -u mperdikeas
  179. bootable USB drive from ISO image
  180. In order to create a bootable USB drive from an ISO image it is not possible to use dd and perform a binary data copy. Special magic has to be used. Ttsiodras sent me a folder with the necessary magic. Bottom line is that the files in the ISO image are actually copied and that special bits are set in the flash drive's filesystem to denote the partition as bootable. See folder CreateUSBstickFromISO. However I was not able to make it work; the USB flash drive was formated and created but I wasn't ablt to boot it. In the end I just burned a CD. BTW the following page: http://www.ubuntu.com/download/ubuntu/download created detailed instructions on how to create a USB flash drive and suggests another solution ("Pen Drive Linux's USB Installer"). There is also another option which is to create a Live Linux USB stick or even a persistent one (with the ability to save files, install programs and so on). This option is possible using the "LinuxLive USB Creator 2.8.10.exe" program.
  181. to find the Linux kernel release and distro:
  182.         uname -mrs
            lsb_release -a
  183. how to find if a Linux machine is 32 or 64 bits:
  184. uname -m
    - or -
    cat /proc/cpuinfo
  185. Print recursive size of folders (i.e. including contents):
  186.                 sudo du - s -m *
    (because ls -lah only displays the size of the directory file).
  187. proper way to copy recursively directory tree a into b (including file permissions etc):
  188. cp -a a b

    You don't need anything else and the internal symbolic links are nicely preserved.
  189. how to find in which package a binary belongs, e.g. the lsb_release binary:
  190. dpkg -S $(which lsb_release)
  191. to show the versions of debian apt packages use the apt_show_versions utility
  192. apt things ...
  193. The /etc/apt/sources.list file is not directly related to the operations of the: apt-get dist-upgrade command the dist-upgrade command always stays in the same Debian version but implements the progression: stable->testing->unstable. So, for instance from the stable phase it takes two invocations of the dist-upgrade to reach the unstable phase; from the testing phase only one. And you can't go backwards. The /etc/apt/sources.list file "simply" provides the URL of the repositories for each version.
  194. hex-dump:
  195. hexdump -C  ('C' for console output)
    to edit:
  196. how to cut the first few lines of a file (in the below example, the 1st one):
  197. tail -n +2 "$FILE"
  198. how to remove the last line from a file (in place editing):
  199. sed -i '$d' filename
  200. how to remove the last n lines from a file (in the below example n = 2):
  201. head -`wc -l thefile | awk '{print ($1-1)}'` thefile