linux系统入门学习

  • A+
所属分类:linux技术
摘要

严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。

linux系统入门学习

严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。

Linux 是一个多用户多任务的操作系统,也是一款自由软件,完全兼容POSIX标准,拥有良好的用户界面,支持多种处理器架构,移植方便。

为程序分配系统资源,处理计算机内部细节的软件叫做操作系统或者内核。如果你希望详细了解操作系统的概念,请查看操作系统教程

用户通过Shell与Linux内核交互。Shell是一个命令行解释工具(是一个软件),它将用户输入的命令转换为内核能够理解的语言(命令)。

Linux下,很多工作都是通过命令完成的,学好Linux,首先要掌握常用命令。

Linux版本

内核版本指的是在 Linus 领导下的开发小组开发出的系统内核的版本号。Linux 的每个内核版本使用形式为 x.y.zz-www 的一组数字来表示。其中:

  • x.y:为linux的主版本号。通常y若为奇数,表示此版本为测试版,系统会有较多bug,主要用途是提供给用户测试。

  • zz:为次版本号。

  • www:代表发行号(注意,它与发行版本号无关)。

    当内核功能有一个飞跃时,主版本号升级,如 Kernel2.2、2.4、2.6等。如果内核增加了少量补丁时,常常会升级次版本号,如Kernel2.6.15、2.6.20等。

    一些组织或厂家将 Linux 内核与GNU软件(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,例如Ubuntu、Red Hat、Centos、Fedora、SUSE、Debian、FreeBSD等。相对于内核版本,发行套件的版本号随着发布者的不同而不同,与系统内核的版本号是相对独立的。因此把Red Hat等直接说成是Linux是不确切的,它们是Linux的发行版本,更确切地说,应该叫做"以linux为核心的操作系统软件包"。

    Linux体系结构

    下面是Linux体系结构的示意图:

    linux系统入门学习

    在所有Linux版本中,都会涉及到以下几个重要概念:

  • 内核:内核是操作系统的核心。内核直接与硬件交互,并处理大部分较低层的任务,如内存管理、进程调度、文件管理等。

  • Shell:Shell是一个处理用户请求的工具,它负责解释用户输入的命令,调用用户希望使用的程序。

  • 命令和工具:日常工作中,你会用到很多系统命令和工具,如cp、mv、cat和grep等。在Linux系统中,有250多个命令,每个命令都有多个选项;第三方工具也有很多,他们也扮演着重要角色。

  • 文件和目录:Linux系统中所有的数据都被存储到文件中,这些文件被分配到各个目录,构成文件系统。Linux的目录与Windows的文件夹是类似的概念。

    系统启动(开机)

    如果你有一台装有Linux的电脑,加电后系统会自动启动,然后提示你登录系统,只有登录后才能进行其他操作。

    登录Linux

    第一次使用Linux,会看到登录的提示,如下所示:

    login: 

    登录步骤:

  • 登录Linux必须有用户名(用户ID)和密码,如果没有,可以向管理员所要。

  • 在登录提示处输入用户名并回车;用户名是区分大小写的,输入时要注意。

  • 然后会提示你输入密码,密码也是区分大小写的。

  • 如果用户名和密码正确,那么会成功登录,并看到上次登录信息。

    login : amrood    amrood's password:    Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73    $ 

    登录后会出现命令提示符($),你可以输入任何命令。下面通过 cal 命令来查看日历:

    $ cal         June 2009    Su Mo Tu We Th Fr Sa        1  2  3  4  5  6    7   8  9 10 11 12 13    14 15 16 17 18 19 20    21 22 23 24 25 26 27    28 29 30         $ 

    修改密码

    Linux系统通过密码来保证数据和文件的安全,防止黑客破解和攻击。你可以通过以下方法来修改密码:

  • 输入 password 命令。

  • 输入你现在使用的密码。

  • 输入新密码。注意密码不要过于简单,简单的密码往往会为入侵者大开便利之门。

  • 确认密码,再输入一遍刚才的密码。

    $ passwd    Changing password for amrood    (current) Linux password:******    New Linux password:*******    Retype new Linux password:*******    passwd: all authentication tokens updated  successfully         $ 

    注意:输入的密码是看不到的,只会看到一个占位符(*)。

    查看目录和文件

    在Linux中,所有的数据都被保存在文件中,所有的文件又被分配到不同的目录;目录是一种类似树的结构,称为文件系统。

    你可以使用 ls 命令来查看当前目录下的文件和目录。下面的例子,使用了 ls 命令的 -l 选项:

    $ ls -l    total 19621    drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml    -rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg    drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ    drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia    -rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar    drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr    -rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php    -rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar    -rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid    -rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf         $ 

    注意:以 d* 开头的为目录,如 uml、univ、urlspedia等;其他的都是文件。

    查看当前用户信息

    登录系统后,如果你希望知道自己的用户名(用户ID),可以使用 whoami 命令:

    $ whoami    amrood         $ 

    如果你希望了解更多关于当前用户的信息,可以使用 who am i 命令,读者可以自己尝试一下。

    查看当前在线用户

    如果你希望知道当前在线的用户(同时登录到系统的用户),可以使用 users、who 和 w 命令:

    $ users    amrood bablu qadir         $ who    amrood ttyp0 Oct 8 14:10 (limbo)    bablu  ttyp2 Oct 4 09:08 (calliope)    qadir  ttyp4 Oct 8 12:09 (dent)         $ 

    w 命令可以看到在线用户的更多信息,读者可以自己尝试。

    退出登录

    完成工作后,你需要退出系统,防止他人使用你的账户。

    使用 logout 命令即可退出登录,系统会清理有关信息并断开连接。

    关闭系统(关机)

    关系Linux系统可以使用下列命令:

    命令 说明
    halt 直接关闭系统
    init 0 使用预先定义的脚本关闭系统,关闭前可以清理和更新有关信息
    init 6 重新启动系统
    poweroff 通过断电来关闭系统
    reboot 重新启动系统
    shutdown 安全关闭系统

    注意:一般情况下只有超级用户和root用户(Linux系统中的最高特权用户)才有关闭系统的权限,但是给普通用户赋予相应权限也可以关闭系统。

    Linux文件管理

    Linux中的所有数据都被保存在文件中,所有的文件被分配到不同的目录。目录是一种类似于树的结构,称为文件系统。

    当你使用Linux时,大部分时间都会和文件打交道,通过本节可以了解基本的文件操作,如创建文件、删除文件、复制文件、重命名文件以及为文件创建链接等。

    在Linux中,有三种基本的文件类型:

    1) 普通文件

    普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行。

    2) 目录

    目录可以包含普通文件和特殊文件,目录相当于Windows和Mac OS中的文件夹。

    3) 设备文件

    有些教程中称特殊文件,是一个含义。Linux 与外部设备(例如光驱,打印机,终端,modern等)是通过一种被称为设备文件的文件来进行通信。Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux 和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存在。

    例如,每一个终端都有自己的设备文件来供 Linux 写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。

    设备文件和普通文件不一样,设备文件中并不包含任何数据。

    设备文件有两种类型:字符设备文件和块设备文件。

  • 字符设备文件以字母"c"开头。字符设备文件向设备传送数据时,一次传送一个字符。典型的通过字符传送数据的设备有终端、打印机、绘图仪、modern等。字符设备文件有时也被称为"raw"设备文件。

  • 块设备文件以字母"b"开头。块设备文件向设备传送数据时,先从内存中的buffer中读或写数据,而不是直接传送数据到物理磁盘。磁盘和CD-ROMS既可以使用字符设备文件也可以使用块设备文件。

    查看文件

    查看当前目录下的文件和目录可以使用 ls 命令,例如:

    $ls         bin        hosts  lib     res.03    ch07       hw1    pub     test_results    ch07.bak   hw2    res.01  users    docs       hw3    res.02  work 

    通过 ls 命令的 -l 选项,你可以获取更多文件信息,例如:

    $ls -l    total 1962188         drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml    -rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg    drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ    drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia    -rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar    drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr    drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01    -rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php    -rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar    -rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid    -rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf    drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3    $ 

    每一列的含义如下:

  • 第一列:文件类型。

  • 第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目。

  • 第三列:文件的所有者,即文件的创建者。

  • 第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组。

  • 第五列:文件大小(以字节计)。

  • 第六列:文件被创建或上次被修改的时间。

  • 第七列:文件名或目录名。

    注意:每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",所以对于一个空目录,第二列应该为 2。

    通过 ls -l 列出的文件,每一行都是以 a、d、- 或 l 开头,这些字符表示文件类型:

    前缀 描述
    - 普通文件。如文本文件、二进制可执行文件、源代码等。
    b 块设备文件。硬盘可以使用块设备文件。
    c 字符设备文件。硬盘也可以使用字符设备文件。
    d 目录文件。目录可以包含文件和其他目录。
    l 符号链接(软链接)。可以链接任何普通文件,类似于 Windows 中的快捷方式。
    p 具名管道。管道是进程间的一种通信机制。
    s 用于进程间通信的套接字。

    提示:通俗的讲软连接就是windows的快捷方式,原来文件删了,快捷方式虽然在但是不起作用了。

    元字符

    元字符是具有特殊含义的字符。* 和 ? 都是元字符:

  • * 可以匹配 0 个或多个任意字符;

  • ? 匹配一个字符。

    例如

    $ls ch*.doc 

    可以显示所有以 ch 开头,以 .doc 结尾的文件:

    ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc    ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc    ch01-2.doc ch02-1.doc c 

    这里,* 匹配任意一个字符。如果你希望显示所有以 .doc 结尾的文件,可以使用

    $ls *.doc。 

    隐藏文件

    隐藏文件的第一个字符为英文句号或点号(.),Linux程序(包括Shell)通常使用隐藏文件来保存配置信息。

    下面是一些常见的隐藏文件:
    .profile:Bourne shell (sh) 初始化脚本
    .kshrc:Korn shell (ksh) 初始化脚本
    .cshrc:C shell (csh) 初始化脚本
    .rhosts:Remote shell (rsh) 配置文件

    查看隐藏文件需要使用 ls 命令的 -a 选项:

    $ ls -a         .         .profile       docs     lib     test_results    ..        .rhosts        hosts    pub     users    .emacs    bin            hw1      res.01  work    .exrc     ch07           hw2      res.02    .kshrc    ch07.bak       hw3      res.03    $ 

    一个点号(.)表示当前目录,两个点号(..)表示上级目录

    注意:输入密码时,星号(*)作为占位符,代表你输入的字符个数。

    创建文件

    在Linux中,可以使用 vi 编辑器创建一个文本文件,例如:

    $ vi filename 

    上面的命令会创建文件 filename 并打开,按下 i 键即可进入编辑模式,你可以向文件中写入内容。例如:

    This is Linux file....I created it for the first time.....    I'm going to save this content in this file. 

    完成编辑后,可以按 esc 键退出编辑模式,也可以按组合键 Shift + ZZ 完全退出文件。这样,就完成了文件的创建。

    $ vi filename    $ 

    编辑文件

    vi 编辑器可以用来编辑文件。由于篇幅限制,这里仅作简单介绍,将在后面章节进行详细讲解。

    如下可以打开一个名为 filename 的文件:

    $ vi filename 

    当文件被打开后,可以按 i 键进入编辑模式,按照自己的方式编辑文件。如果想移动光标,必须先按 esc 键退出编辑模式,然后使用下面的按键在文件内移动光标:

  • l 键向右移动

  • h 键向左移动

  • k 键向上移动

  • j 键向下移动

    使用上面的按键,可以将光标快速定位到你想编辑的地方。定位好光标后,按 i 键再次进入编辑模式。编辑完成后按 esc 键退出编辑模式或者按组合键 Shift+ZZ 退出当前文件。

    查看文件内容

    可以使用 cat 命令来查看文件内容,下面是一个简单的例子:

    $ cat filename    This is Linux file....I created it for the first time.....    I'm going to save this content in this file.    $ 

    可以通过 cat 命令的 -b 选项来显示行号,例如:

    $ cat -b filename    1   This is Linux file....I created it for the first time.....    2   I'm going to save this content in this file.    $ 

    统计单词数目

    可以使用 wc 命令来统计当前文件的行数、单词数和字符数,下面是一个简单的例子:

    $ wc filename    2  19 103 filename    $ 

    每一列的含义如下:

  • 第一列:文件的总行数

  • 第二列:单词数目

  • 第三列:文件的字节数,即文件的大小

  • 第四列:文件名

    也可以一次查看多个文件的内容,例如:

    $ wc filename1 filename2 filename3 

    复制文件

    可以使用 cp 命令来复制文件。cp 命令的基本语法如下:

    $ cp source_file destination_file 

    下面的例子将会复制 filename 文件:

    $ cp filename copyfile    $ 

    现在在当前目录中会多出一个和 filename 一模一样的 copyfile 文件。

    重命名文件

    重命名文件可以使用 mv 命令,语法为:

    $ mv old_file new_file 

    下面的例子将会把 filename 文件重命名为 newfile:

    $ mv filename newfile    $ 

    现在在当前目录下,只有一个 newfile 文件。

    mv 命令其实是一个移动文件的命令,不但可以更改文件的路径,也可以更改文件名。

    删除文件

    rm命令可以删除文件,语法为:

    $ rm filename 

    注意:删除文件是一种危险的行为,因为文件内可能包含有用信息,建议结合 -i 选项来使用 rm 命令。

    下面的例子会彻底删除一个文件:

    $ rm filename    $ 

    你也可以一次删除多个文件:

    $ rm filename1 filename2 filename3    $ 

    标准的Linux流

    一般情况下,每个Linux程序运行时都会创建三个文件流(三个文件):

  • 标准输入流(stdin):stdin的文件描述符为0,Linux程序默认从stdin读取数据。

  • 标准输出流(stdout):stdout 的文件描述符为1,Linux程序默认向stdout输出数据。

  • 标准错误流(stderr):stderr的文件描述符为2,Linux程序会向stderr流中写入错误信息。

    Linux目录

    目录也是一个文件,它的唯一功能是用来保存文件及其相关信息。所有的文件,包括普通文件、设备文件和目录文件,都会被保存到目录中。

    主目录

    登录后,你所在的位置就是你的主目录(或登录目录),接下来你主要是在这个目录下进行操作,如创建文件、删除文件等。

    使用下面的命令可以随时进入主目录:

    $cd ~    $ 

    这里 ~ 就表示主目录。如果你希望进入其他用户的主目录,可以使用下面的命令:

    $cd ~username    $ 

    返回进入当前目录前所在的目录可以使用下面的命令:

    $cd -    $ 

    绝对路径和相对路径

    Linux 的目录有清晰的层次结构,/ 代表根目录,所有的目录都位于 / 下面;文件在层次结构中的位置可以用路径来表示。

    如果一个路径以 / 开头,就称为绝对路径;它表示当前文件与根目录的关系。举例如下:

    /etc/passwd    /users/sjones/chem/notes    /dev/rdsk/Os3 

    不以 / 开头的路径称为相对路径,它表示文件与当前目录的关系。例如:

    chem/notes    personal/res 

    获取当前所在的目录可以使用 pwd 命令:

    $pwd    /user0/home/amrood        $ 

    查看目录中的文件可以使用 ls 命令:

    $ls dirname 

    下面的例子将遍历 /usr/local 目录下的文件:

    $ls /usr/local         X11       bin          gimp       jikes       sbin    ace       doc          include    lib         share    atalk     etc          info       man         ami 

    创建目录

    可以使用 mkdir 命令来创建目录,语法为:

    $mkdir dirname 

    dirname 可以为绝对路径,也可以为相对路径。例如

    $mkdir mydir    $ 

    会在当前目录下创建 mydir 目录。又如

    $mkdir /tmp/test-dir    $ 

    会在 /tmp 目录下创建 test-dir 目录。mkdir 成功创建目录后不会输出任何信息。

    也可以使用 mkdir 命令同时创建多个目录,例如

    $mkdir docs pub    $ 

    会在当前目录下创建 docs 和 pub 两个目录。

    创建父目录

    使用 mkdir 命令创建目录时,如果上级目录不存在,就会报错。下面的例子中,mkdir 会输出错误信息:

    $mkdir /tmp/amrood/test    mkdir: Failed to make directory "/tmp/amrood/test";    No such file or directory    $ 

    mkdir 命令增加 -p 选项,可以一级一级创建所需要的目录,即使上级目录不存在也不会报错。例如

    $mkdir -p /tmp/amrood/test    $ 

    会创建所有不存在的上级目录。

    删除目录

    可以使用 rmdir 命令来删除目录,例如:

    $rmdir dirname    $ 

    注意:删除目录时请确保目录为空,不会包含其他文件或目录。

    也可以使用 rmdir 命令同时删除多个目录:

    $rmdir dirname1 dirname2 dirname3    $ 

    如果 dirname1、dirname2、dirname3 为空,就会被删除。rmdir 成功删除目录后不会输出任何信息。

    改变所在目录

    可以使用 cd 命令来改变当前所在目录,进入任何有权限的目录,语法为:

    $cd dirname 

    dirname 为路径,可以为相对路径,也可以为绝对路径。例如

    $cd /usr/local/bin    $ 

    可以进入 /usr/local/bin 目录。可以使用相对路径从这个目录进入 /usr/home/amrood 目录:

    $cd ../../home/amrood    $ 

    重命名目录

    mv (move) 命令也可以用来重命名目录,语法为:

    $mv olddir newdir 

    下面的例子将会把 mydir 目录重命名为 yourdir 目录:

    $mv mydir yourdir    $ 

    点号(.)

    一个点号(.)表示当前目录,两个点号(..)表示上级目录(父目录)。

    ls 命令的 -a 选项可以查看所有文件,包括隐藏文件;-l 选项可以查看文件的所有信息,共有7列。例如:

    $ls -la    drwxrwxr-x    4    teacher   class   2048  Jul 16 17.56 .    drwxr-xr-x    60   root              1536  Jul 13 14:18 ..    ----------    1    teacher   class   4210  May 1 08:27 .profile    -rwxr-xr-x    1    teacher   class   1948  May 12 13:42 memo    $ 

    Linux文件权限

linux系统入门学习

本文由博客一文多发平台 OpenWrite 发布!