Windows-to-Linux roadmap: Part 2. Console crash course
控制台速成
Any administrative task can be done from the console in Linux. In many cases, using the console is faster than using a graphical program and may provide additional functionality. Furthermore, any console task can be placed into a script, and thus automated. To really take control of your Linux environment, you will want to learn how to do things from the console. The information here is a guide to get you started at the Linux console if you have a DOS/Windows background.
在Linux中任何管理任务可以在控制台中完成。在许多情况下,使用控制台比使用一个图像化程序更快并且可能提供额外的功能。另外,任何控制台任务可以被放于一个脚本,因此而自动化。为了真正的控制你的Linux环境,你想要学习怎样从控制台去做事情。如果你有DOS/Windows背景。这里的信息是一个让你在Linux的控制台有个开始的引导。
Accessing a console
If your system boots into text mode (a common configuration for servers to conserve overhead for services), then you are already at a console when you execute a text login. On a typical Linux system, you can get to additional consoles by pressing Ctrl + Alt + (F1 - F6). Each console is a completely different session on the system and can be accessed as different users at the same time.
访问一个控制台
如果你的系统启动进入文本模式(一个服务器的普遍配置来为服务保留资源),当你执行一个文本登录那你已经在一个控制台中了,你可以获得额外的控制台通过按 Ctrl + Alt + (F1 - F6). 每个控制台是系统中完全不同的会话,可以被不同的用户在同一时间访问。
This multi-console behavior is different from the multiple-desktop in Windows. In Linux, each console can be controlled by a completely different user. For example, you can be logged as root on console 1, and logged in as joeuser on console 2. Both consoles run different programs in their own user space. In the same vein, different users can be logged into a Windows system remotely. In this instance, Linux provides capabilities more like a mainframe than a simple server or workstation.
If you are in a graphical mode, then you can open a terminal to get access to a console screen. The terminal will usually have a button on your desktop's task bar, or you can find it under System Tools in the Program menu. You can also open a terminal from the context menu (right click on the desktop).
Commands
There are many potential commands available from the console. Some of these tools are only truly useful when writing scripts. Here are some of the first ones that you'll probably need. Remember that all commands and options are case sensitive. -R is different from -r, and will probably do different things. Console commands are almost always lowercase.
命令
这有很多潜在的命令可以从控制台使用。有一些这样的工具只有当些脚本时菜真正有用。这有一些泥可能需要。记得所有的命令和脚本是大小写敏感的。-R和-r不同。可能做不同的事情。控制台命令几乎总是小写
cd
Moving around in directories uses the familiar cd
command. The main trick is to remember that in Linux the forward-slash (/) is used where you are accustomed to using the back-slash (/). The back-slash is still used, but it specifies that a command should be continued on the next line. This is sometimes done for readability when typing in a particularly long command.
使用熟悉的cd命令在目录中移动,这个主要的窍门是记住 在linux中斜杠/被用在你已经习惯使用反斜杠的地方。反斜杠仍然在使用,但是它指定一个命令可能会持续到下一行。当输入一个特别长的命令,有时这样做是为了可读性
ls
Listing files in a directory can be done with the ls
command. There are several switches you can use to alter the look of the listing:
目录中的文件清单可以使用ls命令来完成,这儿有一些你可以改变清单样子的开关
Listing files
ls -l |
Shows a long listing, including files size, date and time, and attributes 显示一个长的列表,包括文件大小,日期与时间,所有的属性 |
ls -t |
Sorts files by time 按照时间对文件排序 |
ls -S |
Sorts files by size 按照文件大小对文件进行排序 |
ls -r |
Combined with one of the sorting switches, reverses the order. 和排序开关中的一个组合使用,翻转顺序。ls -lt以最新的一个在列表顶端的方式显示文件。ls -lrt以最新的一个在底部来显示文件 |
ls -h |
Human readable. Uses friendly k, M, and G indicators to show file size rather than listing them in bytes. 可读性,使用友好的K,M和G指示符来显示文件大小而不是以字节的方式列出他们 |
ls -a |
Shows all the files in a directory, even the hidden ones 显示一个目录中的所有的文件,即使是隐藏的 |
cp
Copy files with the cp
command. The command works essentially the same as the DOS copy
command. Essential switches:
使用cp名来拷贝文件,这个命令本质上和dos中的copy命令一样。基本开关?
Copying files
cp -R |
Copies files recursively; required if you are copying an entire directory 递归的拷贝文件;如果你在拷贝一整个目录需要 |
cp -f |
Forces the copy and overwrites existing files without asking 强迫拷贝并不询问覆盖已经存在的文件 |
cp -l |
Links files instead of copying; see below 链接文件而不是拷贝。看下面 |
mv
Move files and rename files with the mv
command. It works essentially the same as the DOS move
command, except that it will move entire directory structures as well as files.
使用mv命令移动文件并重命名文件。它和dos的move命令本质相同,除了他将移动整个目录结构和文件。
cat
View files with the cat
command. This is the equivalent of the DOS type
command. It will dump the contents of a file to another file, to the screen, or to another command. cat
is short for concatenate, and can be used to sequence several files together into a larger file.
使用cat来查看文件,这是等同于dos的type命令。他将抽取一个文件的内容到另一个文件、屏幕或者另一个命令。cat是concatenate的缩写,也可以 被用来按顺序排放一些文件到一个大文件。
more
View information one page at a time with the more
command. It works essentially the same as the DOS more
command.
使用more命令查看一页信息。它和dos中的more命令本质相同
less
Use less
to view a text file with the ability to scroll up and down through the document and search for text patterns.
使用less来查看一个文本文件,具有上下滚动和查找文本模式的功能。
vi
Some might say that vi
stands for "virtually impossible." It is a text editor that has a long tradition in the Unix world. vi
is not really intuitive, but it is available in almost any Unix-like environment. There is a built-in tutorial for the version installed in Linux, and once you get used to it, you can do some truly incredible things in a few keystrokes. Truly, no editor has managed to replace vi
for editing password and configuration files.
一些可能说法是vi事实上不可替代。他是一个在unix世界有很长传统的文本编辑器。vi不是真正的???,但是几乎在任何一个像unix环境都可以使用。在linux中内建了一个指导。一旦你开始使用它,你可以通过敲击键盘做一些真正的不可思议的事情,真正地,没有编辑器可以管理替换vi来编辑密码和配置文件。
man
View documentation for a command with the man
command. Man is short for manual. Documentation tends to be thorough. To learn more about man
, type:
man man
查看文档
infoinfo
is like man
except it provides hyperlinked text to make browsing documentation easier.
Back to top
Which shell?
One critical difference between DOS/Windows and Linux is that the command shell is a layer separated from the operating system. The shell environment affects the features you have, such as editable command lines and scrolling histories. The shell also determines the syntax required to do functions in scripts. In DOS/Windows, there was only one option for scripting, the lowly .BAT file. It did a lot, but required a good deal of creativity on the part of the script writer to do more than basic tasks. In Linux, scripts can contain loops and do more than basic conditional statements, including many things that you expect from a programming language. If you were good at writing .BAT files, shell scripts are going to let you shine.
The default shell is a parameter in each user account. The typical default shell in Linux is /bin/bash, though others are available. The man
documentation for each shell is actually very good and goes into detail about shells and how they work. Rather than try to paraphrase that information here, select a shell from the list below and look at its man page.
bash
The bash shell is a free version of the Bourne shell, the first Unix shell, and includes many additional features. Bash has editable command lines, a scrollable command history, and tab completion to help avoid typing long file names.
csh
The C shell uses a "C-like" syntax and has borrowed many features from the Bourne shell, but uses a different set of internal shell commands.
ksh
The Korn shell uses the same syntax as the Bourne shell and has included the user-friendly features of the C shell. ksh
is used in many installation scripts and should probably be installed on the system even if it's not your primary shell.
tcsh
The TC shell is an enhanced version of the C shell and is 100% compatible with it.
zsh
The Z shell is an enhanced version of the Korn shell with many features found in the bash shell.
Back to top
Link me up, Scotty!
One compelling feature in the Linux file system is the file link. A link is a reference to a file, so that you can let files be seen in multiple locations of the file system. However, in Linux, a link can be treated as the original file. A link can be executed, edited, and accessed without having to do anything unusual. As far as other applications on the system are concerned, a link is the original file. When you make edits to a file through the link, you are editing the original. A link is not a copy. There are two kinds of links: a hard link and a symbolic link.
A hard link can only reference files in the same file system. It provides a reference to the file's physical index (also called an inode) in the file's system. Hard links do not break when you move the original file around because they all point to the file's physical data rather than its location in the file structure. A hard-linked file does not require the user to have access rights to the original file and does not show the location of the original, so it has some security advantages. If you delete a file that has been hard linked, the file remains until all references have been deleted as well.
A symbolic link is a pointer to a file's location in the file system. Symbolic links can span file systems and can even point to files in a remote file system. A symbolic link shows the location of the original file and requires a user to have access rights to the original file's location in order to use the link. If the original file is deleted, all of the symbolic links become broken. They will point to a non-existent location in the file system.
Both types of links can be made with the command ln
. By default ln
will make a hard link. The -s
switch will make a symbolic link.
# Create a hard link from MyFile in the current
# directory to /YourDir/MyFile
ln MyFile /YourDir
# Create a symbolic (soft) link from MyFile in
# the current directory to /YourDir/YourFile
ln -s MyFile /YourDir/Yourfile
In the above examples, MyFile, /YourDir/MyFile, and /YourDir/Yourfile are all treated as the same file.
Back to top
Coming out of your shell
Learning to work from the console is a necessary skill for Linux administration. There are tools to avoid the console, but you will always be more limited by what you can do through a tool. Accessing a console is easy, and accessing command documentation is easy too with the man
and info
commands.