Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When installing the TextWrangler in OSX you also get an edit command which allows you to open any text file from the command line.

Is it possible to have a similar functionality in Ubuntu to type some command on the terminal to open a file in a specific text editor (say Kate)?

share|improve this question
up vote 9 down vote accepted

To open a file using kate, you can run something like:

kate filename

This might show some messages like:

kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/usr/share/mime/magic"
kate(3702)/kdecore (services) KMimeTypeFactory::parseMagic: Now parsing  "/home/user/.local/share/mime/magic"
Bus::open: Can not get ibus-daemon's address. 
IBusInputContext::createInputContext: no connection to ibus-daemon

To remove these messages, redirect the error output stream to /dev/null:

kate filename 2>/dev/null

If you want to continue using the same terminal, add an & after the command:

kate filename 2>/dev/null &

If you want to run edit filename to open it, you could create a bash function in your ~/.bashrc file. Add the next code to your ~/.bashrc file:

edit() { kate "$@" 2>/dev/null & }
share|improve this answer
This gets closer to what I was looking for. Thanks for actually running the commands and see the problems that would arise with the most obvious solutions. I guess what I'll do is to create a new command which I can just call as edit filename to run the whole kate filename 2>/dev/null &. – Juan A. Navarro Apr 7 '11 at 15:59
@Juan: I've added an example for doing that. The $@ is needed in case you need to pass additional options like line number. As an alternative, you can tweak this function to support edit filename linenumber. – Lekensteyn Apr 7 '11 at 16:34
You have a bug in your answer, and I can't seem to edit it. You forgot the quotes around $@ (should be "$@"), which means that your script will fail with filenames what contain spaces. – Scott Severance Apr 7 '11 at 18:34
@mssever: Thank you for noticing. Fixed :) – Lekensteyn Apr 7 '11 at 18:46

You can open (Up to my knowledge) any of the editors like this:


gedit filename (Ubuntu)
kate filename (Kubuntu)
bluefish filename
kwrite filename
libreoffice filename

You can even open a web page the same way
firefox filename.html
chrome filename.html
banshee filename.ogg or .mp3

You can see the tendency here..

share|improve this answer
Actually it should be gedit filename & otherwise the terminal remains unusable. The same thing happens with kate but, even with the & it makes the terminal unusable because it starts spitting debug (or whatever) information to the terminal. Is there a way to avoiding the & in the end at all? As I do with edit from TextWrangler? – Juan A. Navarro Apr 7 '11 at 15:56
Nevermind, the answer from Lekensteyn is (at least closer) to what I was looking for. – Juan A. Navarro Apr 7 '11 at 16:18
True, you can add the & or even add 2>/dev/null to it to not output error and stuff in the console if you want to keep using it. – Luis Alvarado Apr 7 '11 at 16:29

If you prefer to use the command edit in Ubuntu also because you are used to do so you could also define an alias for your favourite editor like for Kate:

alias edit='kate'

To make this alias permant just add this line to ~/.bash_aliases.

share|improve this answer

If you don't have any graphics environment and you are running on console you can always use:

vim foo.txt
nano bar.txt
pico foo.html
emacs bar.xml

and so on falls back to the first answer..

share|improve this answer
"emacs -nw" or "xemacs -nw" if you want VT100 (x)emacs even inside a windowed environment. – barrycarter Apr 7 '11 at 16:18

You can use CLI command for the desired editor to open and edit files.For example gedit in gnome or kate in KDE.

Just type:

kate filename

to open file in kate.

share|improve this answer

I sometimes use a classical terminal where mcedit is my prefered editor, and often like to pass a line number, to correct a program/script.

To uniformely call them edit 123 I wrote this script, which I placed as 'edit' in the path:

#   - edit a file using mcedit or gedit, depending on X11 or console invoking.
#   - jump to specified line, if any.


if [[ $TERM = "linux" ]]; then
    if [ $# -eq 1 ]; then
        mcedit $1
        else if [ $# -eq 2 ]; then
#           echo "edit invoked\t/usr/bin/mcedit +$2 $1" >> /tmp/edit.log
            /usr/bin/mcedit +$2 $1
            else if [ $# -eq 0 ]; then
    else if [[ $TERM = "xterm" ]]; then
        # scheint nicht zu helfen
        # LANGUAGE=C
        export LC_ALL=C
        if [ $# -eq 1 ]; then
            $Xedit $1
            else if [ $# -eq 2 ]; then
#               echo "edit invoked\t/usr/bin/scite -open:$1 -goto:$2" >> /tmp/edit.log
                # $Xedit -open:$1 -goto:$2
                $Xedit +$2 $1 
                else if [ $# -eq 0 ]; then

Use see old debug instructions from when I used scite, not gedit, as graphical editor.

Something, which doesn't work this way, is opening of multiple files like this:

 edit *.html

if there is more than one html-File, so the pattern gets expanded to multiple files.

Valid invocations are:

 edit foofile 
 edit foofile 123

from X or terminal.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.