views:

260

answers:

10

Hi,

I have used just Windows for programming so far. Now, I have an internship starting in two weeks and I will be using just Linux environment with Python programming language. I've installed Ubuntu on my system but have no exposure to shell scripting.

I need some advice on how I can quickly learn to use the Linux terminal quickly. Any books or web resources that you can suggest?

Also, is there a particular IDE that is generally preferred for Python programming on Linux, or is Vim preferred? How can I best prepare myself for the internship ahead?

Thanks for taking the time.

A: 

For a Python IDE, I recommend using either IDLE or Eclipse with PyDev.

Keep in mind you can also just use python on the linux command-line. It supports loading code from files, and if you use two command windows then one of them will be your "REPL" where you will be running python and dynamically loading code - and the other window can run your editor.

Regarding linux command line, I cannot recommend any great resources. However, you will be off to a great start if you immerse yourself in this environment and only use linux for the next 2 weeks. Just keep learning, and when you do not know how to do something, read a manpage or google it to find the answer.

Justin Ethier
+2  A: 

Your lack of shell scripting knowledge shouldn't matter in this case, although it won't be hard to learn. I read over some shell tutorials and put them into practice. Try doing everything from the command line, including find (grep), find/replace all (sed), finding files (find), automating things using python scripts etc. Basically, don't cheat. You'll pick up a lot this way. You'll also probably end up wondering how you ever managed with Windows.

What I use depends on the project. I really like Eclipse+PyDev but that's my personal preference, I also use Vim depending on where I am/what I'm doing. Remember you can just type python from the command line and it drops you into the python environment.

Ninefingers
A: 

for a very beginner intro to the command line, check out: http://en.flossmanuals.net/CommandLineIntro/GettingStarted

Corey Goldberg
+6  A: 

As an intern you'll want to use the tools your mentor is most comfortable with. If you get stuck you'll be able to ask for advice quickly.

Learning your way around either vi, vim, or emacs to start with will help. The basic concepts used in one will transfer to the other. You'll need to be able to open and read files, search through files, edit and save files, and learn how to apply any python formatting helpers correctly.

You should also familiarize yourself with version control if you haven't already. Again any one will do, you need to focus on concepts and etiquette rather than the specific tool.

The goal of the internship (and really your entire time at university) should be used to learn concepts rather than specific tools. If you learn the concepts you'll be well placed to apply those concepts using any tool. You will also "learn how to learn" a new tool, which is really valuable.

Freiheit
+1 for version control.
Fletcher Moore
Can you please elaborate on what version control is?
Shailesh Tainwala
A: 

As far as a Python editor goes, I personally prefer to use SciTE. It's just a programmer's text editor with syntax highlighting for various languages. I prefer a lightweight editor over a more complicated environment, but if you want a full-fledged IDE you can always try out NetBeans, IDLE, or Komodo (all of which are available in both Windows and Linux).

bta
+1  A: 

Learn to understand man(ual) pages.

For almost any old linux command/program there is a man page which usually explains the command in good detail.

So basics for filesystem navigation:

Show directory contents (list)

ls

Show hidden files

ls -a

Show details

ls -l

Change directory

cd /full/path/name

Print current directory

pwd

Delete a file

rm file

Delete a directory (recursive)

rm -r directoryName

Make a directory

mkdir directoryName

Move (or rename) a file

mv /path/to/file /new/path/to/file

Show the man page for mv

man mv

Learning vim might be necessary, depending on your intern environment. I do my Python (and everything that isn't simple text editing) in Eclipse. You should in any case learn enough to open a file, makes some changes and save the changes in Vim.

Keep in mind, Ubuntu is very easy. To make things harder on yourself, use the command line for every conceivable thing. Open programs by typing their names into a terminal. Browse your files with the terminal. Do simple editing with vim. That should provide good practice for the day you need to SSH into a computer in Neverland and download and install a local copy of your favorite interpreter from source in order to set up a cron job to run a script to play a clock noise.

Fletcher Moore
Learning vim during an internship without any prior linux exposure?
tstenner
I think learning around this much would be sufficient for most editing::q,:x,x,w,b,$,0,j,k,h,l,a,i,d,dd,y,yy,pYou don't need to go crazy with your .vimrc just to use the program, but I do think learning some kind of command line text editor to a passable degree is essential.
Fletcher Moore
+1  A: 

In addition to the great advice already written, I'd suggest you install IPython (Open a terminal with Applications>Accessories>Terminal and type):

sudo apt-get install ipython

Also at the terminal, you can then type ipython to start the Python interpreter. Unlike the built in python interpreter, ipython gives you tab completion.

For example, if you type the name of an object followed by a period and TAB (e.g. sys.[TAB]), ipython will show you (almost) all of object's attributes.

Type a question mark after an object name (e.g. sys?), and you get documentation on that object.

This is a great way to explore Python.

unutbu
+1  A: 

I recommend Eclipse + PyDev too. You can get started quickly with this develop environment. I also recommend the website Dive Into Python. It provides you a online free version of Dive Into Python book, which is very easy to read, easy to understand, and very suitable for Python beginners. If you really want a paper book at hand, Learning Python, a.k.a. The Animal Guide, is simply the best.

zihaoyu
+1  A: 

have no exposure to shell scripting

Good! You've got Python so hopefully there should be no need to resort to writing actual scripts with the shell. It may be more powerful than DOS batch files, but it's just as ugly.

I need some advice on how I can quickly learn to use the Linux terminal quickly.

Something like this?

As well as learning the commands, you'll want to get used to using tab-completion and arrow key command recall (if you don't already do that with the Windows Command Prompt), scrolling with shift-arrows, and so on. Also useful to know the & (perform in background) command suffix, ctrl-C-to-stop, ctrl-Z-to-pause, jobs, and screen.

Incidentally if you will be spending any amount of time in the interactive Python interpreter it is well worth adding tab completion there, too. (This is just as much the case on Windows, but on Win you tend not to get pyreadline by default.)

is there a particular IDE that is generally preferred for Python programming on Linux

Just like on Windows, there are IDEs available if you want them but many people just use a normal text editor. vim is fine if that's what you like. nano is another in-terminal text editor you usually get that's relatively simple. Ubuntu's default desktop-based editor gedit is also fine. It's a matter of personal taste.

(If you are interning at a particular company they might have their own development environment they'd prefer you to use.)

bobince
A: 

Hello there, as for terminall and quick way to understand it's and learn it there are a nice cheat sheets on net like this: http://fosswire.com/post/2007/8/unixlinux-command-cheat-sheet/

djura-san
As for vim you should learn the basics at least (save and/or quit (:wq and :q!) etc.). More about this can be found here:http://www.tuxfiles.org/linuxhelp/vimcheat.html(i'm sorry for 2 posts but im new here so i cant add more than one hyperlink in one anwser. Sorry again :| )
djura-san