A Shortcut for Creating Shortcuts

 in

If you come from the world of Windows, you undoubtedly understand the concept of a shortcut. In the Linux world, shortcuts do exist, but they're generally referred to as symbolic links, or symlinks. They are so named because, like shortcuts, a symlink is really just a symbolic placeholder or link to the file or directory you're trying to get at.

Of course, the world of pretty graphics and windows provides ways of creating symlinks. However, for the impatient, the command line allows you to do the job with less clicking around. Let's have a look at an example.

Suppose I'm working on a Web site, and I want all of the Web site files to be located in /home/jonesy/public_html/websites/testing/site1. I need to have quick access to this directory on a pretty regular basis, so it would be nice to have a shortcut on my desktop so I can get to it in a single click. It also would be nice to be able to drag files to the folder without having to browse to it first.

In this scenario, we call /home/jonesy/public_html/websites/testing/site1 the source directory, and I create that directory using the mkdir command. Follow along at home:

mkdir -p /home/jonesy/public_html/websites/testing/site1

Remember to change jonesy to your own login name.

Again, we've just created the source directory. The mkdir command creates a directory anywhere you have permission to do so. The -p option tells mkdir to create any parent directories along the way that don't already exist.

We call the symlink itself the target, and it points to the source we just created. Note that we can call the target whatever we want. In this case, I just call it site1. To make a link that shows up on my desktop, I open up Konsole and run the following command:

@cx:ln -s /home/jonesy/public_html/websites/testing/site1<\n>/home/jonesy/Desktop/site1

Again, remember to change jonesy in the above command to your own login name.

The ln command can make other types of links besides symbolic links, so it's important to remember to feed it the -s option to let it know that you want to create a symbolic link. Though it happens, it is relatively rare to use the ln command without the -s option, even for hard-core geeks.

For Aspiring Geeks
If you forget the -s option, you'll create what's called a hard link. Though the differences are subtle, they are significant. Depending on the location of the link in relationship to the source, you can generate an error, because hard links cannot cross drive partition boundaries. In the guts of the system, the plain facts are that a hard link is actually just another alternative name for the same bunch of data stored somewhere on the disk (in technical terms, the hard link and the original file would point to the same inode).

But Wait! There's More!

Of course, making a link to a particular file is exactly like making a link to a directory. So, if I want to make a link to my favorite photo (/home/jonesy/Photos/mypic.jpg) on my desktop, I can do it like this:

ln -s /home/jonesy/Photos/mypic.jpg /home/jonesy/Desktop/

I threw in a little trick in the above command. Because I didn<\#213>t want the symlink to have a different name from the file it points to, I simply use a . (period), which is shorthand for saying, don't change the name.

For more information about the ln command, try running

man ln

, which is the manual or man page for the ln command.

About the Author

Brian Jones is a system/network/database administrator and sometime Web developer for the Computer Science Department at Princeton University. He is also a freelance writer and editor, spending most of his freelance time writing about technology for various Web and print publications. In his free time, he enjoys brewing beer, home recording and playing billiards.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A Shortcut for Creating Shortcuts

Neb's picture

Why not just press and hold Ctrl+Shift keys together while draging a file or a folder to your Desktop.? It will creat a shortcut on the desktop in the same image as the original file and/or folder.
Cheers!
Neb

I found this guide on

Anonymous's picture

I found this guide on shortcuts/symbolic links really useful. OK some of the formatting may be a bit confusing
but if you have any experience with Linux at all it's fine. I have to use Linux more and more for my job and I must admit I feel like I've got 1 hand tied behind my back when I use linux as I have 10 years+ experience with windows. It's frustrating when you know what you want to do but don't know how! Good work :)

minor article issues

ciotog's picture

Nice, quick introduction to symlinks for beginners. However, I noticed a couple of minor issues.

1. Why did you need to open Konsole to run the first ln command when presumably you already had it open to run the mkdir command?

2. I would also wager there are some formatting issues with the first ls command:

@cx:ln -s /home/jonesy/public_html/websites/testing/site1<\n>/home/jonesy/Desktop/site1

doesn't look quite right (the @cx: at the start ought to be removed and the <\n> in the middle ought to be replaced with a space).

3. Besides the . in the jpeg filename, I don't see the . you're referring to in the explanation of the second ln command.

4. "didn<\#213>t" should probably be "didn't"

Oh, no, please, no

Federico Jara's picture

First it was renaming "directories" to "folders" and nowadays noone knows what a directory is.

And now symlinks to shortcuts?

Noooooooooo!

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState