From Windows to Linux – Total Commander replacement?


I finally scrapped all sorts of Windows from my laptop and turned to Linux, more specifically Ubuntu. Last time I did that was couple of years ago and it didn't go very well.

But now Ubuntu behaved just as I would expected and better, finishing a no hassle installation in few minutes. And every single device on my laptop worked automatically. Wi-Fi, bluetooth, webcam, sound, graphics, battery management - everything was there. Good job Ubuntu!

Working on Web is easy as you need only four applications: browser, text editor, file manager and image editor. Browser (Firefox and Chrome) exists on Ubuntu - check. Image Editor (gimp) - check. Text edit (Ultraedit for Linux) - check. But replacing a file manager, my trusty old Total commander, proved to be a much harder job.

Some features of Total commander I can't live without are:

  • Search for text through files and directories
  • Compare files by content (and live edit in compare)
  • Browse 'into' archives and perform file operations on archived files
  • FTP connection management

So far I installed and started testing the following Total commander alternatives on Linux:

  1. Worker
  2. Gnome Commander
  3. Tux Commander
  4. BSC
  5. Krusader
  6. emelFM2
  7. Double Commander

As I can see each has some strengths and weakness.

I'm eager to hear how you coped with a similar situation.


Suggested reading:


Posted in: Startups
TAGS:, , , , , , , , , , , , , , ,
leave a comment.

Comments:

21 Comments

  1. John
    Jul 1st, 2010

    Double Commander is it!

    I've been using Ubuntu for years, tried every file manager, and always gone back to Total Commander under Wine.

    I have been using Double Commander for a week now, and it really is good, with the look and feel of Total Commander it is better than all the rest.

  2. Matthias Klees
    Jun 25th, 2010

    I switched to Ubuntu about two years ago. My experience with the filemanager question was:
    Nautilus was to simple (on the first try), Konqueror was to overloaded, so i had the same idea like you and used Krusader. But after a short time i found out about the possibility to use plugins in Nautilus. There are plenty of them and you can customize the Filemanager to fit your needs. Anyway Krusader is alway also installed. It's a great piece of Software and in my opinion one of the most unrecordnized projects of the KDE community.

  3. Roman
    Jun 25th, 2010

    > Some features of Total commander I can't live without are:
    > * Search for text through files and directories
    > * Compare files by content (and live edit in compare)
    > * Browse 'into' archives and perform file operations on archived files
    > * FTP connection management

    All this you can do with JEdit editor with plug-ins http://www.jedit.org :)

  4. Magalaan
    May 30th, 2010

    Tried them all, Krusader is fine and mature, but only Double Commander gives me the look and feel of Total Commander. It has not even reached 1.0 but already it is has many of the great features you love about TC. Development is moving rapidly and this is the one I am going to stick to. One of the great potentials is it is multi-platform and it uses TC plugins. These can be used for the windows version, separate ones are made for Linux.

  5. rsystem
    May 18th, 2010

    Have you ever tried to turn to kde 4.4 ?? In my opinion it's the best desktop around . . . sure many things are different to gnome but i think more useful than every other desktop environment, more thought-out . . . and since 4.4 i love dolphin... it's twintabs it's instant console it's ftp , it's places . . . even if i browse directories with more than 100.000 files it's still fast enough . . .

    give it a try . . .

    http://kde.org

  6. Martin
    Mar 19th, 2010

    Midnight Commander (mc) is good as stated several places above.

    But the more I adjust Total Commander and the wine settings, the more "native" it behaves. For example, I can double click or press enter on a file, and it will open in Linux natively or in another wine program depending on the settings I made for that file extension.

    Currently, I more or less only miss coping with Linux file permissions, but that will probably never be possible. For that I use mc or just the command line.

    I don't like krusader. It tries to be TC, but it will never be!

  7. Wordpress Brian
    Feb 8th, 2010

    I'm afraid I'm still on dual boot.

    I need my daily fix of Call of Duty 4 and a properly working Skype.

    BUT...... I love Ubuntu and it is my default OS. To be able to download a program for free and have such an awesome community of support out there is amazing.

    If I had the money I would be hitting the 'donate' button on every site I visited. I applaud the Open Source community.

  8. Ash Goodman
    Feb 7th, 2010

    I too switched from Windows to Linux a few years back. Specifically Ubuntu. I Never looked back.

    I don't think my file management needs are as robust as yours, I just use nautilus. For FTP firefox's FireFTP and Gedit for editing files (open files from fireftp into gedit, edit and saves right back to the server).

    And I absolutely love Compiz Fusion for Productivity. I use the scale feature and shift switcher instead of a Task bar based widows menu

  9. wikiant
    Feb 5th, 2010

    hi vlado :)
    nice to read about your windows deleting session :)
    i'm totaly agree with you, that total commander is a great program from this swiss guy named ghisler. you can install this pure software also on linux using wine. wine is an acronyme means: windows not emulating. so the programs working with wine aren't slower than on windows. not every program is working out of the box. but total commander is working fine :)

    • Vladimir
      Feb 5th, 2010

      Hi Patrick :)

      I was thinking about wine but wanted something native. At the end I went with Krusader which was most like TC. I still miss a visual diff tool with live edit.

      ps. still in Bol?

      • wikiant
        Feb 6th, 2010

        hej vlado

        no, i'm back again. i was only for a very short time in bol. i think i'll go again at beginning of april... but not for sure... we were cutting the vineyard at bura time and couldn't finishing the rest :)

        i'm using krusader to. but i'm agree with "chenoel". means sometimes it is better for me to use the old school mc :) but there is the same problem with your visual diff util... have you tried the command:

        apt-cache search compare
        or
        apt-cache search compare gui

        there are many programs b.e. diff

  10. chenoel
    Feb 2nd, 2010

    oh my... i cant liv on my linux-box without "midnight commander"
    *i luv blue screen*

  11. groumph
    Feb 1st, 2010

    the package "mc" is quite good at what you specify, given the good plug-ins and fuse plug-ins. It's in console, but i use that interface since Norton Commander, back at the DOS times, it may seems barbaric to GUI users but it's an invaluable tool. An i read the rose book from hackers ;-)

    else the best is to learn a quick scripting language, to do what you need, personally i like, and recommend perl, it feels like assembly to me, it takes time to learn, but if you start to use it, wow, you'll look at other languages as if they were deficient (IMHO). but the choices are yours, python, ruby, php, lua, and such are also good choices.

    in linux you have all the developing tools you need and even more. in windows, you get wsh, vba or powershell. Then, freely available for students, visual studio languages (###).

    I'm used to handle, compare, store history or updates a few millions of files daily (around 3 millions on average (~2.875 exactly)), i prefer to spend one hour to figure out a way to write scripts to handle everything, and have a general database to access all those. A scripting language is the best solution. Once i get a solution i go to C or C++ then assembly for loops, get to know the toolchain you use if you start mixing languages.

    If it's for a job, loose time making your tools, you'll get free time after. if it's for yourself play with the tool you have at hand. Remember that it's easier in linux to write small scripts using a variety of tools, take what you get from whose you know.

    Learn about these: 7zip, arj, at, atq, atrm, bash, bg, cd, chgrp, chmod, chown, compress, cp, cpio, cron, crontab, df, dh, dmesg, du, edquota, expand, fdisk, fg, find, fmt, free, fsck, ftp, fuse, grep, groupadd, groupdel, groupmod, grpconv, grpunconv, gunzip, gzip, halt, info, init, ipfwadm, jobs, kill, lastlog, less, lilo, ln, locate, log, logger, logrotate, ls, man, mc, mkdir, mkfs, more, mount, mv, ncftp, newgrp, nice, nl, od, pack, passwd, pr, ps, pwconv, pwd, pwunconv, quotaoff, quotaon, renice, repquota, rm, rmdir, shutdown, sort, tar, tee, telnet, top, touch, tr, umount, uname, unarj, uncompress, uniq, unpack, unzip, updatedb, useradd, userdel, wc, wget, whatis, whereis, which, who, xargs, zip, zsh.

    Have fun!

    • Vladimir
      Feb 1st, 2010

      Did you just type all of those tools from your head?

      • groumph
        Feb 3rd, 2010

        @VLAD (= Virus Laboratories And Distribution, back in 1994 from Australia? -- just kidding)
        > Did you just type all of those tools from your head?

        nope, it's a list i keep around and update for more than 15 years. i have some example for my most common uses, and aliases, functions, in my .bashrc. i prefer zsh, and if you're learning, try zsh, sadly bash is everywhere and compile nearly everywhere easily (as with most gnu apps)... i just did a copy paste here. i'll give you some examples here after. another good paper i also keep at hand is the "Unix Rosetta Stone", it's useful if you are working with different systems (like aix, *ux, *bsd, osx, sco, solaris, etc). I actually have printed an A3 poster with it and it sits just next to my screens. check it out here: http://bhami.com/rosetta.html

        also with mc (moonlight commander), you might want to learn the gnu/screen program and how to attach and detach from a session. Instead of running xterm (or whatever you use, rxvt-utf8, gnome-terminal, konsole, etc.), use:

        xterm -e "screen -D -RR"

        learn the screen program, its short cuts and what you can use it for. and xterm is quite malleable and you can change it to whatever you like if you learn (again) to use it.

        It's difficult to start using unix systems, i remember the first time i used it, i thought i was a pc-guru, knowing assembly on different processors (C64, amiga, atari, or motorola 680x0 for that matter, x86 etc.), then i installed a slackware linux on one of my box and was in front of that horrible terminal where most of the things i knew were unusable (it was a time where X wasn't really good, and twm was still The Windows Manager, it was before the 1994 windows release of "Chicago"). I can crack most of the programs i know or i like, i can reverse engeneer a lot of protections, even on "alien" hardware with a bit of knowledge. but using linux wasn't an easy step. i felt quite frustated. it's like having a little stone in your shoe for a long walk. yet when you get thru the finish line, you're happy you did. perhaps i was the last to get to the end line, but i was the winner as i got a lot of knowledge forcing myself to know this system. now it's economic recession, and you get at least 5000 euros a month if you know such systems. if you know them well. i call that win-win ;-)

        the console is invaluable compared to click, drag'n'drop and other GUI apps, it let you do tons of actions quite rapidly... what's best? it let you write scripts that write scripts that do all your homework without you bothering about it... i know it sounds old fashion, but even with the better bells and whistles, you will not be as effective as with some scripts (and you can write your own plugins for mc...). instead of looking for a tool that does what you need, start thinking to make a tool that does what you want, not approximatively and you fixing it behind. i recommend perl, but it's up to you to choose your language. perl is hard to start with, but once you know it, wow, you look at other scripting languages with a smile, they're so simple and dumb compared to it (it's my humble opinion, well not really, perl is my god ;) ). anyway linux or other un*x(es) let you create your own tools, stop thinking as a windows user: i can do this clicking here and there. Start thinking: how the hell would i do if i was a stupid computer? learn, learn, learn, it takes years but once you master it, well you'll be the next pc-guru around ;) until there's some changes in the universe... ;-)

        If you wish to stay between windows and linux, there's a lot of solutions, try cygwin ( http://www.cygwin.com/ ), or even the windows services for unix tools ( SFU, http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX ). Even microsoft recognize that a simple way to talk to a computer is the best way to get things done... a computer is a tool you use. it's not a simple box lying around your desktop and letting you watch pr0n on the net, or playing games. It can actually get things done, if you KNOW how to ask it.

        here is an example of my bashrc for linux platforms, you should create a new user with no privileges to start using it, dwelve into it, check the man pages or the infos pages when you don't understand something. those are just my own tools, nothing magic here, but if you wanna learn, get a look at that stuff. It works both on linux and windows with cygwin.

        if you create a test user just copy the archive in the /home folder.

        i send you a copy to your email. it works (in general) for linux and windows (cygwin). and some other oses mentionned before.

        (sorry if i made mistakes, english isn't my mother tongue)
        ---------------------------------------------------------------------------------------------- .bashrc
        #!/bin/bash

        ######################################################################
        # Exported User Environment Variables

        export USER=`id -un` # username
        export GROUPS=`id -G` # list of groups id we're in
        export HOSTNAME=`hostname` # the machine we're using, define their address in /etc/hosts

        # Home dir
        for home in /home /Users; do # Check Un*x or MacOS
        if [[ -d "$home/$USER" ]]; then
        export HOME="$home/$USER" # our home directory
        fi
        done
        unset -v home

        # Temp dir
        export TMP="$HOME/tmp" # Temporary directory
        export TEMP="$TMP" # for dos/win apps
        export TMPDIR="$TMP" # i don't remember what's using this?!

        # xxx maybe create the temp dir
        if [[ ! -d $TMP ]]; then
        echo bashrc: Something is wrong with your TMP dir: "$TMP".
        unset -v TMP TEMP TMPDIR
        fi

        # History settings:
        export HISTFILESIZE=4096 # Number of line to save
        export HISTSIZE=1024 # Number of command to remember
        export HISTCONTROL="ignoreboth" # dont save already entered commands, and command starting with a space (same as ignoredups:ignorespace)
        export HISTIGNORE="..:...:....:cd *:df *:exit:fg:file *:gpg *:l:ll:loc *:ls *:man *:mc:mount *:su *:umount *:units *:wipe *" # remove those commands from history
        export PROMPT_COMMAND='history -a' # Save history everytime you issue a command, useful when multiple bash are running

        # Bash facilities
        #export TMOUT=300 # exit bash after 5 minutes (useful for remote users)
        export IGNOREEOF=1 # CTRL-D twice to exit
        export CDPATH=".:..:../..:~:~/.cdpath:/data:/media" # path to search when cd'ing (recurse up to 3 path first)

        ######################################################################
        # Setting PATH:

        # xxx check if PATH doesnt contain unknown locations
        unset -v PATH
        line=1
        while read -r path; do
        path=${path%#*}
        path=${path##*([$' \t\n'])}
        path=${path%%*([$' \t\n'])}
        eval "path=\"$path\""

        if [[ $path ]]; then
        if [[ -d "$path" && -r "$path" ]]; then
        PATH="$PATH:$path"
        else
        echo Discarded "$path" at line $line from your PATH.
        fi
        fi

        let line=line+1
        done 33[0;39m"

        # XTerm Title
        # PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

        #perl -e printf "33]0;\$PWD07\$PWD> "

        # PS1='\[33[0m\]\[33[0;31m\].:\[33[0m\]\[33[1;30m\][\[33[0m\]\[33[0;28m\]Managing 33[1;31m\]\j\[33[0m\]\[33[1;30m\]/\[33[0m\]\[33[1;31m\]$(ps ax | wc -l | tr -d '\'' '\'')\[33[0m\]\[33[1;30m\] \[33[0m\]\[33[0;28m\]jobs.\[33[0m\]\[33[1;30m\]] [\[33[0m\]\[33[0;28m\]CPU Load: \[33[0m\]\[33[1;31m\]$(temp=$(cat /proc/loadavg) && echo ${temp%% *}) \[33[0m\]\[33[0;28m\]Uptime: \[33[0m\]\[33[1;31m\]$(temp=$(cat /proc/uptime) && upSec=${temp%%.*} ; let secs=$((${upSec}%60)) ; let mins=$((${upSec}/60%60)) ; let hours=$((${upSec}/3600%24)) ; let days=$((${upSec}/86400)) ; if [ ${days} -ne 0 ]; then echo -n ${days}d; fi ; echo -n ${hours}h${mins}m)\[33[0m\]\[33[1;30m\]]\[33[0m\]\[33[0;31m\]:.\n\[33[0m\]\[33[0;31m\].:\[33[0m\]\[33[1;30m\][\[33[0m\]\[33[1;31m\]$(ls -l | grep "^-" | wc -l | tr -d " ") \[33[0m\]\[33[0;28m\]files using \[33[0m\]\[33[1;31m\]$(ls --si -s | head -1 | awk '\''{print $2}'\'')\[33[0m\]\[33[1;30m\]] [\[33[0m\]\[33[1;31m\]\u\[33[0m\]\[33[0;31m\]@\[33[0m\]\[33[1;31m\]\h \[33[0m\]\[33[1;34m\]\w\[33[0m\]\[33[1;30m\]]\[33[0m\]\[33[0;31m\]:.\n\[33[0m\]\[33[0;31m\].:\[33[0m\]\[33[1;30m\][\[33[0m\]\[33[1;31m\]\t\[33[0m\]\[33[1;30m\]]\[33[0m\]\[33[0;31m\]:. \[33[0m\]\[33[1;37m\]\$ \[33[0m\]'
        # PS1="${TITLEBAR}\T\[33[0m\]\[33[0;33m\]::\[33[0m\]\[33[1;30m\]\[33[0m\]\[33[0;37m\]\u\[33[0m\]\[33[0;33m\]@\[33[0m\]\[33[0;37m\]\h\[33[0m\]\[33[0;33m\]::\[33[0m\]\[33[1;33m\]\w\[33[0m\]\[33[0;33m\] \[33[0m\]\[33[0;32m\]\[33[0m\]\[33[1;37m\]\[33[0m\]\[33[1;37m\](\[33[0m\]\[33[0;33m\]\$(ls -l | grep \"^-\" | wc -l | tr -d \" \")\[33[0m\]\[33[1;37m\] \[33[0m\]\[33[1;30m\]\[33[0m\]\[33[0;37m\]files\[33[0m\]\[33[1;37m\], \[33[0m\]\[33[0;33m\]\$(ls --si -s | head -1 | awk '{print \$2}') \[33[0m\]\[33[0;37m\]total\[33[0m\]\[33[0;37m\])\n\[33[0m\]\[33[1;37m\]%\[33[0;0m\]"
        # dumb prompt
        #export PS1="\nDate: \d, \t\nUser: [\u@\H] Jobs: [\j] History: [\!]\n\w\$ "
        #export PS2="> "

        # New dircolors (see gen_filetypes.pl)
        eval `dircolors -b "$HOME/.dircolors"`
        # File Extentions xxx
        export ExtImages="*.bmp *.BMP *.gif *.GIF *.jpg *.JPG"

        # Some useful vars
        #export EDITOR="vim --servername VIM_$USER --remote-silent " # doesnt work as expected
        export EDITOR="vim"
        export EDITORCMD="vim --servername VIM_$USER --remote-silent"
        export GREP_COLOR=31
        export PAGER='less'
        export LESS='-iMQRSw -PM[%i/%m\: ?f%f:STDIN.] [C\:%c] [L\:?l%l:*.-?lb%lb:*./?L%L:*.] [P\:?d%d:*./?D%D:*.] [O\:?b%b:*./?B%B:*.] [?pt%pt:*.-?Pb%Pb:*.\%]'
        #eval `bin/lesspipe`
        #export LESSOPEN="| ~/bin/lesspipe %s";
        #export LESSCLOSE="~/bin/lesspipe %s %s";
        [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

        # Screen dir (in case compile-time opts set the tmp files somewhere else)
        # export SCREENRC="$HOME/.screenrc

        # Fix perl 5.8.0 weird behaviour with cygwin (\r\n -> \n)
        #export PERLIO='raw'

        ######################################################################
        # Load configurations file, possibly overriding previous definitions.
        # ATTN: All previously defined aliases will be removed!

        for file in ~/.bash/aliases_functions.sh ~/.bash/shell_options.sh ~/.bash/hosts/$HOSTNAME_*.sh; do
        if [[ -f $file && -r $file ]]; then
        . $file
        else
        echo bashrc: Not found: "$file".
        fi
        done
        unset -v file

        ########
        # Command line option/completion
        #

        # Command line completion
        export FIGNORE='.bck:bak:~' # ignored ext for completion
        export INPUTRC="$HOME/.inputrc" # process my readline settings

        complete -d cd # we only want to cd into directories
        complete -G "/mnt/*" mount # cant mount anything
        complete -G "/mnt/*" umount

        # i never remember all those pid
        complete -C "find_pid" kill

        # command completion
        if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
        fi

        ##### Function keys
        bind -x '"\C-b":cal -m3'

        bind -x '"\M--": pushd ..'
        bind -x '"\M-=": popd'

        # Clean
        unset -v WARNINGS

        ----------------------------------------------------------------------------------------------
        ---------------------------------------------------------------------------------------------- inputrc

        # Various Options
        # man readline (comments are a pain here)
        #

        $if bash
        set editing-mode emacs
        set keymap emacs
        set enable-keypad on

        # This one cause problems with correct display of $PS1
        #set horizontal-scroll-mode on

        #set convert-meta off
        #set input-meta on
        #set meta-flag on
        #set output-meta on
        #set bind-tty-special-chars on
        #set byte-oriented off

        set bell-style visible
        set prefer-visible-bell on
        set blink-matching-paren on

        set completion-ignore-case on
        set completion-query-items 256
        set disable-completion off
        #set page-completions off
        set print-completions-horizontally on
        set expand-tilde off
        set mark-directories on
        #set mark-symlinked-directories on
        set visible-stats on
        set match-hidden-files on
        set show-all-if-ambiguous on
        set show-all-if-unmodified off

        set history-preserve-point off
        set mark-modified-lines off

        set comment-begin #

        # Completion
        Tab: menu-complete

        # History (Up/Down arrowns)
        #"\M-OA": history-search-backward
        #"\M-OB": history-search-forward
        #"\e[A": history-search-backward
        #"\e[B": history-search-forward

        # Moving (Home/End)
        #"\e[1~": beginning-of-line
        #"\e[2~": quoted-insert
        #"\e[3~": delete-char
        #"\e[4~": end-of-line
        #"\e[5~": beginning-of-history
        #"\e[6~": end-of-history
        #"\e[5C": forward-word
        #"\e[5D": backward-word

        # Custom Shortcuts
        Control-L: clear-screen

        # Magic space
        Space: magic-space
        $endif

        ----------------------------------------------------------------------------------------------
        ---------------------------------------------------------------------------------------------- .bash/aliases_functions.sh

        ######################################################################
        # Title: ~/.bash/aliases_functions.sh configuration file
        # ------------------------------------------------------------------
        # Created: 1994-07-23_10:31:17
        # Version: 2007-02-27_20:01:07
        # Author: unknown groumph.
        #
        # Description: This bash initialisation file is read and executed
        # when starting a non-login shell from ~/.bashrc.
        ######################################################################
        # Note that comments beginning with:
        # - #! Modify the original command (those might cause bugs, I try to avoid them)
        # - #= Leave the command working as usual
        # - #> Create a new command (this might override something, but not to my knowledge)
        ######################################################################

        unalias -a # Delete all aliases
        alias realias="$EDITOR ~/.bash/aliases_functions.sh; source ~/.bash/aliases_functions.sh" #> Edit and reload aliases

        #alias diff='diff -u'

        ######################################################################
        # Navigate
        alias cd..='cd ..' #> yes, i was using dos first !#@?
        alias ..='cd ..' #> Norton Dos, in fact.... (which was better than 4Dos IMHO)
        alias ...='cd ../..' #>
        alias ....='cd ../../..' #> and i like long directory trees ;-)
        alias z='cd -' #> go back to previous directory
        alias tree='tree -df' #! not aviailable everywhere
        alias mkdir='mkdir -p' #= create nested subdirs too

        ######################################################################
        # List files
        alias ls='ls --color=auto --quoting-style=shell-always' #! We want fancy colors, in a quoted string ALWAYS!
        alias l='ls -F' #> two chars is faaar too long to type
        alias lU='ls -dFl [A-Z]*' #> list files/dirs begining with an uppercase letter
        alias lu='ls -dFl [a-z]*' #> list files/dirs begining with an uppercase letter
        alias l.='ls -adFx .*' #> list dot files/dirs
        alias ll='ls -lFh' #> list (h)uman-readable
        alias la='ls -lFha' #> list (a)ll, (h)uman-readable
        alias lt='ls -lFhart' #> list (a)ll, (h(uman-readable, time (recent goes last)
        alias ltc='ls -lFhatc' #> list (a)ll, (h(uman-readable, creation time (recent goes last)
        alias lz='ls -lFharS' #> list (a)ll, (h(uman-readable, size (biggest goes last)
        alias lx='ls -lFhaX' #> list (a)ll, (h(uman-readable, extension
        alias lsd='ls -lhd */' #> directories
        alias lad='ls -lhd */ .*/' #> directories

        ######################################################################
        # sockets
        alias showsocks='ss -apes | P' #> all types, processes infos, detailled infos
        # xxx lsof

        ######################################################################
        # Find files
        alias ff='find . -iname' #> find files in the current subdirs, case (i)nsensitive
        alias flist='find .' #> list all files in subdirs (with ./ relative path)
        alias flista='find `pwd` -print' #> list all files in subdirs (with absolute filename)
        alias loc='locate -i' #> find files from update db, case insensitive
        alias locf='locate -bei' #> find files from update db, only the basename, case insensitive, and if file still exists

        ######################################################################
        # Look at files
        alias P='less' #> Pager
        alias S='sort -f' #> Sort, case insensitive
        alias SP='S|P' #> Sort, case insensitive, results in pager
        alias SU='sort -uf' #> Sort, uniq, case insensitive
        alias SD='sort -f | uniq -id' #> Sort, dups, case insensitive
        alias SN='sort -nf' #> Sort, insensitive, numerical
        alias SUP='SU|P' #> Sort, uniq, case insensitive, results in pager
        alias SDP='SD|P' #> Sort, dups, case insensitive, results in pager
        alias SNP='SN|P'
        alias H='head -32' #> Show the first 32 lines of a file
        alias T='tail -32' #> Show the last 32 lines of a file
        alias Tf='tail -32 -f' #> Show the last 32 lines of a file and follow
        alias filez='file -kLpsz' #> Keep, dereference links, preserve date, special files, uncompress
        # xxx extract meta-data
        alias g='egrep --color=auto -i -r' #> Quick search with colors, case insensitive and recurse dirs
        #alias hex='hexdump -C' #> Canonical hexdump ofs hex ascii (you can use hd instead)
        alias hex='xxd -a -c 32 -g 4' #> hex dump
        alias hexpatch='xxd -r -a -c 32 -g 4' #> apply hexdump
        # xxx hexpatch
        alias stringz='strings -a' #> show all, print hex offset
        alias stringx='strings -atx' #> + hex offsets
        alias V='mcview' #>
        alias X='mcedit' #> I use this for the binary editor

        ######################################################################
        # Access rights
        alias R='chmod -Rc'
        alias O='chown -Rc'

        ######################################################################
        # Free space
        alias df='df -PTah --sync' #! All FS, human read-able, print FS type, sync first
        alias dfi='df -PTai --sync' #> All FS, list free inodes, FS type, sync first
        alias uspc='du -h --max-depth=1' #> used space in current dir and subdirectorires

        ######################################################################
        # Perl
        alias p='perl -nle' #> process file by line, chomp
        alias pp='perl -ple' #> process file by line, chomp and print
        alias pdbg='perl -de 1' #> perl debugger
        alias dpl='perl -MO=Deparse' #> show how perl see this code
        alias dpl2='perl -MO=Deparse,-p,-q,-sCT' #> show how perl see this code, with parens and more
        alias cpan='perl -MCPAN -e shell' #> Start CPAN

        ######################################################################
        # Processes and jobs
        alias psaux='ps ax --cols 1024 --format pid,euser,egroup,pri,nice,start,etime,%cpu,vsize,tty,args | less' #> i like this format...
        alias pstree='pstree -Aplnu | P' #> Process tree
        #alias psg='ps aux | egrep -i' # using pgrep instead
        #alias myps='ps -Af | egrep -i $USER'
        alias psg='pgrep'
        alias top10="uname -a; uptime; echo; ps -eo pcpu,rss,stime,user,pid,cmd --sort -pcpu | head -11 | cut -c -80; echo; ps -eo vsize,rss,size,stime,user,pid,cmd --sort -rss | head -11 | cut -c -80; echo; free -mt" # top 10 cpu/memory processes

        alias j='jobs -l' #> list process id too
        alias 1='fg 1'
        alias 2='fg 2'
        alias 3='fg 3'
        alias 4='fg 4'
        alias 5='fg 5'
        alias 6='fg 6'
        alias 7='fg 7'
        alias 8='fg 8'
        alias 9='fg 9'
        alias 0='fg 10'

        ######################################################################
        # Various useful shortcuts

        # Calculations, units convertions
        alias ?="qalc" #> quick calculations/units & money conversion (qalculate.sf.net)
        alias bc='bc -ql' #= bc should be quiet, and with mathlib
        alias units='units -qv' #! should be quiet AND verbose (guess that one)

        alias cls='echo -e \33c; clear' #> Reset terminal, clear screen

        # Various
        alias dmsg='dmesg | less' #> List kernel boot messages
        alias h='pman' #> manual page browser
        alias mrproper='find . \( -type f -and -iname \*.bak -or -iname \*.bck -or -iname \*~ \) -exec rm -f "{}" \;' #> Delete backups and other temp files
        alias notes='vim /data/dox/notes.txt' #> quickie
        alias tar='tar -b 32768 --atime-preserve' #! here block size ~16M are ok (faster/smaller), no access time modifications
        alias www='elinks'
        alias Z='sudo' #> Changing ug is shorter this way

        # Use the same editor
        #alias gvim="gvim --servername VIM_$USER --remote-silent" #! use the same gvim for every edit
        #alias vim="vim --servername VIM_$USER --remote-silent" #! use the same vim for every edit
        #alias vi="vim --servername VIM_$USER --remote-silent" #! no vi

        # Stupid aliases
        alias fortune='fortune -a' # Take all
        alias snes='snes9x -y3 -dfr' #> 2xSaI mode, show framerate

        # Date/Time Stamps
        alias ts="date -u +%Y%m%d_%H%M%S" #> Output a timestamp (UTC). Touch `ts`-newfile.
        alias tsd="date -u +%Y%m%d" #> Output a date timestamp (UTC).
        alias tsh="date -u +%H%M%S" #> Output an hour timestamp (UTC).

        # X aliases
        alias G="gqview"
        alias D0='export DISPLAY=:0'
        alias DS='echo DISPLAY=$DISPLAY TERM=$TERM $COLUMNS x $LINES'

        # Uncomment on mondays mornings...
        #alias rm='rm -i'
        #alias cp='cp -i'
        #alias mv='mv -i'

        #### Services
        #for service in `/etc/init.d/*`
        #do
        # alias "rc${service}"="/etc/init.d/${service}"
        #done

        alias t='todo'

        ########
        # Function
        #

        # MC
        # cd to last selected directory (from Torben Fjerdingstad)
        unset -f mc
        function mc () {
        mkdir -pm 0700 $HOME/.mc/tmp 2>/dev/null;
        OLD_TERM=$TERM
        TERM='xterm'
        MC=$HOME/.mc/tmp/mc-$$;
        TERM=$OLD_TERM
        /usr/bin/mc -a -P $MC "$@";
        cd "`cat $MC`";
        rm -f "$MC";
        unset -v OLD_TERM MC;
        }

        # Directory creations
        # mkdir and cd
        unset -f md
        function md () {
        mkdir -p "$*" && cd "$*"
        }

        alias rd="rm -Rf" # Remove non-empty directories

        # create a parent directory
        unset -f mpd
        function mpd () {
        mkdir -p ../$1;
        }

        ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- .bash/aliases_functions.sh

        # create a temporary dir and set $TSTMP
        unset -f mdtmp
        function mdtmp () {
        export TSTMP="~/tmp/`date -u +%Y%m%d_%H%M%S`-$1";
        mkdir -p "$TSTMP";
        }
        # xxx delete TSTMP

        # Safe Edit
        # copy and edit
        # xxx $1 -> command $rest files
        unset -f edt
        function edt () {
        local $old="$1.`date -u +%Y%m%d_%H%M%S`.$USER.edt"
        ### find old version of file
        cp "$1{,.$old}"

        cp "$1{,.$USER.`date -u +%Y%m%d_%H%M%S`.edt}"
        vim "$1"
        }

        # Save a copy of the file
        # xxx add support for: comment + filenames
        unset -f save
        function save() {
        cp "$1" "$1.`date -u +%Y%m%d_%H%M%S`.$USER.edt"
        }

        # Scripts Show
        # Save scripts for replay
        unset -f scriptrec
        function scriptrec () {
        local SCRIPT="$1.script"
        local TMPDIR="$TMP/`date -u +%Y%m%d_%H%M%S`-$SCRIPT"
        local TIMINGS="$SCRIPT.timings"
        local OUTFILE="$SCRIPT.tar.bz2"

        mkdir -pm 0700 "$TMPDIR"
        script -t "$TMPDIR/$SCRIPT" 2> "$TMPDIR/$TIMINGS"
        echo Usage: scriptreplay "$SCRIPT" "$TIMINGS" 3.5 > $TMPDIR/README
        tar -cj -C "$TMPDIR" -f "$OUTFILE" "$SCRIPT" "$TIMINGS" README
        rm -Rf $TMPDIR
        }

        # Replay a saved script with turbo 3.5x (looks good here)
        unset -f scriptplay
        function scriptplay () {
        local SCRIPT=${1%.tar.bz2}
        local TMPDIR="$TMP/`date -u +%Y%m%d_%H%M%S`-$SCRIPT"
        local TIMINGS="$SCRIPT.timings"

        mkdir -pm 0700 "$TMPDIR"
        tar -xj -C "$TMPDIR" -f "$1"
        scriptreplay "$TMPDIR/$SCRIPT.timings" "$TMPDIR/$SCRIPT" 3.5
        rm -Rf $TMPDIR
        }

        # From bash_aliases docs
        # csh compat

        alias unsetenv=unset
        unset -f setenv
        function setenv () {
        export $1="$2"
        }

        ######################################################################

        alias showpath='echo -e ${PATH//:/\\n}'

        unset -f loadpath
        function loadpath () {
        local LINE=1
        local DIR
        local NEWPATH

        while read -r DIR; do
        DIR=${DIR%#*} # remove comments
        DIR=${DIR##*([$' \t\n'])} # trim trailling spaces
        DIR=${DIR%%*([$' \t\n'])}
        eval "DIR=\"$DIR\"" # evaluate vars

        if [[ $DIR ]]; then
        if [[ -d "$DIR" && -r "$DIR" ]]; then
        NEWPATH="$NEWPATH:$DIR"
        else
        echo loadpath: Discarded "$DIR" at line $LINE from your PATH.
        fi
        fi

        let LINE=LINE+1
        done ~/.xpdf-err-log& return; fi
        # if test -z "${S:#*PDF}" ; then xpdf $1 2>~/.xpdf-err-log& return; fi
        # if test -z "${S:#*dvi}" ; then xdvi $1 & return; fi
        # if test "${S/[0-9]//}" ; then gv $1 & return; fi
        # less $1;
        # #echo "vv(): file $1 is of unknown type." 1>&2;
        # }

        bind '"\C-t": possible-completions' # replaces 'transpose-chars'
        M-t": menu-complete' # replaces 'transpose-words'

        # alias newpw="pwgen --no-capitalize"

        ## changing terminal type
        # alias v1='export TERM=vt100'
        # alias v2='export TERM=vt220'
        # alias vl='export TERM=linux'
        # alias vx='export TERM=xterm-color'

        # sshot ()
        # { sleep 5; import -window root desktop.jpg }

        # ## find all suid files
        # suidfind ()
        # { ls -l /**/*(su0x) }

        # ispell -a -m -B |grep -v "@"

        # xset fp+ /font/path/

        # repeat n times command
        function repeat() {
        local i max
        max=$1; shift;
        for ((i=1; i C-like syntax
        eval "$@";
        done
        }

        ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- .bash/path.txt 100%
        /bin
        /sbin
        /usr/bin
        /usr/sbin
        /usr/bin/X11
        /usr/local/bin
        /usr/local/sbin
        /usr/share/bin
        /usr/share/sbin
        /opt/gnome/bin
        /opt/kde3/bin
        /usr/lib/hxtools/bin
        /usr/X11R6/bin
        /usr/games/
        $HOME/bin
        /c/windows
        /c/windows/system
        /c/windows/system32
        /c/windows/system32/wbem
        /c/prg/tools
        /c/prg/winrk
        /c/prg/lnk
        /c/prg/ultraedit
        /c/prg/mysql/bin
        /c/prg/perl/bin
        /c/prg/php
        /c/prg/python
        /c/prg/java/bin
        /c/prg/tcl/bin
        /c/prg/bordel
        /c/program files/microsoft sdks/windows/v6.0/bin
        /c/program files/microsoft sdks/windows/v6.0/vc/bin
        /c/program files/microsoft sql server/90/tools/binn
        /c/program files/quicktime/qtsystem
        /c/vstudio/common7/ide
        /c/vstudio/common7/tools
        /c/vstudio/sdk/v2.0/bin
        /c/vstudio/vc/bin
        /c/vstudio/vc/vcpackages
        /c/windows/microsoft.net/framework/v2.0.50727
        /c/windows/system32/windowspowershell/v1.0

        ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- .bash/shell_options.sh

        #!/bin/bash
        ######################################################################
        # Title: ~/.bash/shell_options.sh configuration file
        # ------------------------------------------------------------------
        # Created: 1994-07-23_10:31:17
        # Version: 2007-02-27_20:01:07
        # Author: groiumph
        #
        # Description: This bash initialisation file is read and executed
        # when starting a non-login shell from ~/.bashrc.
        # It comes from the output of `shopt -p`. I made it a
        # separate file due to the fact that different versions
        # of bash are probably installed on different hosts.
        ######################################################################

        # Option without comments means I've not investigated really far into the man page.

        shopt -u cdable_vars # you do not want 'cd here' to be the same as 'cd $here'
        shopt -s cdspell # correct minor typing errors in cd commands
        shopt -s checkhash # faster command completion
        shopt -s checkwinsize # check if the terminal changed size !after! each command
        shopt -s cmdhist # save multi-line commands into onliners
        shopt -u dotglob # find .bashrc with ls *bash*, but NOT with ls *
        shopt -u execfail
        shopt -s expand_aliases # Expand aliases before
        shopt -u extdebug
        shopt -s extglob # Enable extended pattern matching (!, *, ?, @, etc)
        shopt -s extquote
        shopt -u failglob
        shopt -s force_fignore
        shopt -u gnu_errfmt
        shopt -s histappend # do not overwrite history (i dig it!)
        shopt -u histreedit
        shopt -u histverify
        shopt -s hostcomplete # hostnames completion
        shopt -u huponexit
        #shopt -u igncr
        shopt -s interactive_comments # allow comments at the shell
        shopt -u lithist
        #shopt -s login_shell # !!!: read-only
        shopt -u mailwarn # bash do not even look at my mails
        shopt -s no_empty_cmd_completion # do not try to complete empty lines
        shopt -s nocaseglob # globs are case insensitive for me
        shopt -s nocasematch # case match are insentive too [[glob]]
        shopt -u nullglob
        shopt -s progcomp # enable programmable completion
        shopt -s promptvars # prompt is expanded
        shopt -u restricted_shell
        shopt -u shift_verbose # Allow variable paramters to functions
        shopt -s sourcepath # Allow "source xxx" if xxx is matched in $PATH
        shopt -u xpg_echo

        ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- .bash/hosts/endymion_shell_options.sh

        #!/bin/bash
        ######################################################################
        # Title: ~/.bash/shell_options.sh configuration file
        # ------------------------------------------------------------------
        # Created: 1994-07-23_10:31:17
        # Version: 2007-02-27_20:01:07
        # Author: groumph
        #
        # Description: This bash initialisation file is read and executed
        # when starting a non-login shell from ~/.bashrc.
        # It comes from the output of `shopt -p`. I made it a
        # separate file due to the fact that different versions
        # of bash are probably installed on different hosts.
        ######################################################################

        # Option without comments means I've not investigated really far into the man page.

        shopt -u cdable_vars # you do not want 'cd here' to be the same as 'cd $here'
        shopt -s cdspell # correct minor typing errors in cd commands
        shopt -s checkhash # faster command completion
        shopt -s checkwinsize # check if the terminal changed size !after! each command
        shopt -s cmdhist # save multi-line commands into onliners
        shopt -u dotglob # find .bashrc with ls *bash*, but NOT with ls *
        shopt -u execfail
        shopt -s expand_aliases # Expand aliases before
        shopt -u extdebug
        shopt -s extglob # Enable extended pattern matching (!, *, ?, @, etc)
        shopt -s extquote
        shopt -u failglob
        shopt -s force_fignore
        shopt -u gnu_errfmt
        shopt -s histappend # do not overwrite history (i dig it!)
        shopt -u histreedit
        shopt -u histverify
        shopt -s hostcomplete # hostnames completion
        shopt -u huponexit
        #shopt -u igncr
        shopt -s interactive_comments # allow comments at the shell
        shopt -u lithist
        #shopt -s login_shell # !!!: read-only
        shopt -u mailwarn # bash do not even look at my mails
        shopt -s no_empty_cmd_completion # do not try to complete empty lines
        shopt -s nocaseglob # globs are case insensitive for me
        shopt -s nocasematch # case match are insentive too [[glob]]
        shopt -u nullglob
        shopt -s progcomp # enable programmable completion
        shopt -s promptvars # prompt is expanded
        shopt -u restricted_shell
        shopt -u shift_verbose # Allow variable paramters to functions
        shopt -s sourcepath # Allow "source xxx" if xxx is matched in $PATH
        shopt -u xpg_echo

    • Michael
      Feb 1st, 2010

      Hey,

      generally, knowing about lilo is a good idea but ubuntu uses grub, so s/lilo/grub/
      pwconv and *quota might be out of scope if you just switched from win and learning vi/vim is generally a good idea. all other commands: good list, thumbs up!

      Michael

  12. Michael
    Feb 1st, 2010

    Vladimir,

    give "midnight commander" a shot. though it is console tool, it's very powerful and might so what you are missing. You will need to open a terminal and start midnight commander with: mc. But I doubt that there is a out-of-the-box tool that offers /all/ features you need.

    When doing the switch from win to lin a couple of years ago, I took the hard way and did all on the console, without tools like mc at. al. This forced me to learn and use all the powerful command line tools. But I am glad I did, b/c there is a tool for almost every aspect you described above.

    And you might want to check out galeon as a fast alternative to firefox. I love galeon as my browser-for-gmail :-)

    Regards,
    Michael

    • Vladimir
      Feb 1st, 2010

      Thanks for the galeon tip :)

  13. sergiu
    Feb 1st, 2010

    I had the same problem when I switched to Linux and finally I got pretty used to Krusader. I still like Total Commander better, but I manage well with Krusader. I think it meets all your requirements.

    • Vladimir
      Feb 1st, 2010

      I came to the same conclusion today. Krusader's only 'flaw' has to be poor FTP management and file selection (why couldn't they exactly copy what TC was doing)

  14. manoman
    Feb 1st, 2010

    Man o man. Who in this world does still use such old nerdy stuff. Move on to the modern world of Linux

Have your say

Your email is never published nor shared. Required fields are marked *

*
*

Subscribe without commenting

About

vladimir prelovac Vladimir Prelovac is CEO of Prelovac Media, a computer engineer by profession and an adventurer by state of mind. more +


"I would love to change the world, I just don't have the source code yet."

Services

Manage multiple WordPress sites

Built for WordPress enthusiasts, ManageWP helps you manage all your WordPress sites from one central location.

Books

WordPress Plugin Devleopment Book Read my book WordPress Plugin Development: Beginner's Guide

Published by Packt Publishing, available online through Amazon.