Linux 入门教程——基本操作与常用命令

气象家园投稿第二篇:基本操作与常用命令

上一期跟大家谈了谈我对 Linux 的一些个人感受,也讲了 Fedora 23 的安装过程,那么接下来就是关于“如何用好 Linux”的内容了。本期我将以“让初学者快速上手”为主要目标,介绍 Linux 下的基本操作与常用命令,分享一些我使用时的小经验,希望大家喜欢 :P

快速上手

下面的内容均在 Fedora 20 下进行示范,可能有的小伙伴已经安装了其他 Linux 发行版(如 Ubuntu、CentOS 等),但那并不会造成太大影响。
启动 Fedora 20 以后,进行用户登陆,之后弹出来一个桌面,看起来和 Windows 差不多嘛!正如上期所言,许多 Linux 发行版都具有图形界面,如果你想切换成字符界面,可以通过组合键 Ctrl+Alt+F2~F6 来实现。你可以直接就用字符界面来进行后面的操作,但若想使用图形界面(或许是因为你想一边放音乐一边练习命令),就需要把桌面提供的终端调出来,即在程序列表里面找类似 Terminal 的程序。当然我建议你上网搜一下,你所用系统里调出终端的快捷键是什么?如果你和我一样使用了 Fedora(桌面为 GNOME),那么需要自行设置快捷键 Settings → Keyboard → Shortcuts → Custom Shortcuts → '+',如下图:
pic_1.png
其中 Name 随意填写,Command 栏写上 /usr/bin/gnome-terminal。确定以后可以点击图中 Terminal 蓝色长条的右端,即可设置快捷键,我这里是 Super+T,Super 即 Windows 键。不管你是用的是字符界面,还是桌面下的终端,接下来就开始进行一些简单的操作吧!

进入终端(或字符界面)以后,会出现类似下面的命令提示行,意思是用户 N 在计算机 Dell 上登录了,当前路径是~

1
[N@Dell ~]$

以前 Windows 下从“我的电脑”(即文件浏览器)中查看文件,新建文件夹,复制、移动文件等,现在均以在终端敲命令的方式实现,我们先看下面这一系列操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[N@Dell ~]$ pwd
/home/N
[N@Dell ~]$ ls
Data Documents intel Music Public Templates
Desktop Downloads Model Pictures Temp Videos
[N@Dell ~]$ cd Temp
[N@Dell Temp]$ ls
fhello_world_mpi hello sin solve_equation test1.c
fhello_world_mpi.f90 hello.f90 sin.c test1
[N@Dell Temp]$ cp hello hello2
[N@Dell Temp]$ mkdir new
[N@Dell Temp]$ mv hello2 new/
[N@Dell Temp]$ new/hello2
Hello world!
[N@Dell Temp]$ rm new/hello2
rm: remove regular file ‘new/hello2’? y
[N@Dell Temp]$ rmdir new/
[N@Dell Temp]$ cd ..
[N@Dell ~]$

pwd 是查看当前的目录位置,为 /home/Nls 为显示当前目录下的内容,可以看到有 Data、Documents......,它们可能是文件夹、各类文件、可执行程序等等;cd 为切换目录,这里进入 Temp 目录,并 ls 显示了 Temp 目录下的内容;cp 为复制文件,把 hello 这个文件复制成 hello2mkdir 为建立新目录,mv 为移动文件,我把复制得到的 hello2 移动到新建的 new 目录下了;new/hello2 的意思是执行 hello2,这说明 hello2 是个可执行文件,即 Windows 下的 .exe 文件,看,它在屏幕上给你打了个招呼呢!最后我用 rm、和 rmdir 分别删除了 hello2 文件和 new 文件夹,并回到上一级目录(cd ..)。
对于上述执行的这些命令,我有几点要说明一下:

  1. 绝对路径和相对路径(可能会有人不太清楚):绝对路径即完整的路径,如 pwd 后得到的 /home/N;相对路径即相对于当前目录位置的路径,例如当你要进入 /home/N/Temp,但你现在位置为 /home 时,就可以输入 cd N/Temp。顺便提一下几个特殊路径,~ 为用户家目录(如对于用户 N,~ 相当于 /home/N),.(点)为当前目录,..(两个点)为上一级目录,- 为上一次路径。大家可以用 cd ~cd .cd ..cd - 试试效果。

    1
    2
    3
    4
    5
    6
    7
    [N@Dell ~]$ pwd
    /home/N
    [N@Dell ~]$ cd /home/N/Temp/solve_equation/method1/
    [N@Dell method1]$ cd -
    /home/N
    [N@Dell ~]$ cd ..
    [N@Dell home]$
  2. 所谓命令,其实也就是程序而已,当你输 ls 的时候,实际上你就是运行了 /usr/bin/ls 这个程序。之前我们也在 /home/N/Temp 下输入 new/hello2 来运行 hello2 这个程序,在我看来,lshello2 本质上没多大区别,只是一个是系统自带的程序,一个是我写的程序。由于 hello2 被我删了,我们就运行下 hello 吧。以绝对路径的形式。

    1
    2
    3
    4
    5
    [N@Dell ~]$ /usr/bin/ls
    Data Documents intel Music Public Templates
    Desktop Downloads Model Pictures Temp Videos
    [N@Dell ~]$ /home/N/Temp/hello
    Hello world!

    不过如果这样输入呢?

    1
    2
    3
    4
    5
    [N@Dell ~]$ ls
    Data Documents intel Music Public Templates
    Desktop Downloads Model Pictures Temp Videos
    [N@Dell ~]$ hello
    bash: hello: command not found...

    当你输入 ls 时,系统明白你要运行 /usr/bin/ls ,但输入 hello 时系统就晕了,因为你没有事先告诉它你的 hello 在哪。实际上你只需要在某个文件(.bashrc)里写上 hello 的绝对路径,系统就会由那个文件获取 hello 的路径。这样就可以通过直接敲入 hello 来执行而无需敲完整路径了!关于那个文件的事情我们以后再详细聊~
    你也可以用相对路径的行式来运行 hello,首先 cd /home/N/Temp/,再敲入 ./hello,注意这和直接敲 hello 是不同的,之前说过 .(点)是代表当前目录,./hello 相当于给出了相对路径,与 cd /home/N/Temp/ 组合起来,系统就知道你的 hello 文件的位置然后正常运行了。
    这儿有个叫 which 的命令需要提一下,它可以查看某命令的文件路径在哪。

    1
    2
    [N@Dell ~]$ which mv
    /usr/bin/mv

    若你没有将 hello 的绝对路径写到 .bashrc 文件里,那么 which hello 的结果就是“找不着”哦!

    1
    2
    [N@Dell ~]$ which hello
    /usr/bin/which: no hello in ...(这里省略了若干路径)
  3. 不管是所谓的命令,还是你自己写的程序,实际上我们运行它们都是类似这样的形式

    1
    [N@Dell ~]$ command [-option] para1 para2 …

    command 可以是 ls/home/N/Temp/hello 等等;-option 为选项,通常以 ---(横杠或双横杠)开头;para1para2 等即参数。如 ls -l .. 会显示上一级目录的详细(因为有 -l 选项)内容;如 cp -r dir1 dir2,加上 -r 使你可以复制文件夹。实际上,对于每个命令,都有一堆可选择的选项,而又有这么多的命令,怎么可能都记得住嘛!别急,绝大多数命令都有 --help 选项,加上这个选项就可以迅速浏览某命令的各选项简述。若要获得某个命令的详细描述,则可以使用 maninfo 这两个命令:

    1
    2
    3
    [N@Dell ~]$ ls --help
    [N@Dell ~]$ man cp
    [N@Dell ~]$ info mkdir

    我觉得吧,了解了之前的那些简单操作后,大家应该先学好 man 命令,这样以后遇到新命令,就直接 man 一下,就什么都知道了哦!另外,你可以先 man 一下 man ,里面会有对 man 的详细说明的,然后百度一下就会了!

    1
    [N@Dell ~]$ man man
  4. 有时候我们需要反复执行同一条命令,当这条命令超级长的时候,我想你肯定不耐烦一遍遍输入吧,因此我们要了解下如何查看历史操作。一般在命令行直接用 , 方向键就行了,不过这里再介绍下其他方式:

    1
    2
    [N@Dell ~]$ history
    [N@Dell ~]$ !1000

    history 会列出你之前执行的命令,!1000 则执行 history 中编号为1000的那条命令。另外,在命令行按下组合键 Ctrl+r 后再输入你的命令,也能快速搜索历史操作并执行。
    还有自动补全功能,tabtabtab(按两次),也能让你少敲不少字符。(ps:有些系统并不是用 tab 来进行补全哟~)
    对了,如果执行某个命令时半天没有回应,你可以试试按下组合键 Ctrl+C 来终止命令。比如你用 du 时:

    1
    [N@Dell ~]$ du –sh /

其他常用的命令

用户权限:chownchgrpchmodpasswdsu
压缩、解压及打包:gzipbzip2tar
查看文件内容:catmorelessheadtail
搜索:whichfindgreplocate
网络:pingifconfig
系统资源信息:dfdutopfree
文件:lntouchdiffstat
日期:datecal
……
我简单列了一些命令供大家查询练习,但 Linux 的神奇与强大,需要大家自己去摸索研究~
还有大家平时就用普通用户帐号(如我的 N 帐号)吧,管理系统时才需要使用 root 帐号。

心得(不如说是感慨吧)

  1. 作为非计算机专业的我们,其实并不需要“按部就班”地学习 Linux,或者说不需要抱着本书从头看到尾,而是在了解基本知识后就可以边学习边使用它做些工作了。这样不用浪费太多时间,最重要的是使用它会让你更快地熟悉了解它。
  2. 由于我们是“跳着”学的,肯定会经常遇到不懂的问题需要上网搜索,这时对信息的检索能力就十分重要了,才可以迅速找到解决方法啊!相互交流,多多讨教也是一种有效的方式!
  3. 从计算机的角度出发进行思考。我时常会琢磨,Linux 作为一类优秀的系统,有哪些能力是理所当然会具备的呢?或者对于 Windows 下许多功能,它又将如何实现呢?比如 Linux 应该能对各用户合理分配资源吧,那需要做些什么呢?再想想 Linux 下怎么查看一个文件夹含有的所有文件数呢?就这样自己思考问题,然后去搜索答案,那么许多问题在出现之前就已经被解决了,相比临时遇到问题再搜索的方式,要节省时间得多。此外,这样也让你思维更活跃,说不定遇到问题时自己突然就知道如何解决了,嗯。

结语

因为我想让第一次使用 Linux 的人能够快速熟悉,许多操作说明难免有些繁琐、啰嗦,之后肯定会以更加简明的形式描述的。最后,如果有问题的话,可以去气象家园给我留言哈!