Linux基础知识

操作系统发展史

Unix

  • 1970年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
  • 因为B语言的跨平台性较差,为了能够在其他电脑上也能够运行这个Unix操作系统Dennis Ritchie和Ken Thompson从B语言的基础上准备研究一个更好的语言
  • 1972年,美国贝尔实验室的Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
  • 1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统。

Minix

  • 意为小型UNIX(mini-UNIX)

Linux

  • 创始人Torvalds

发展史

  • Unix(只针对大型主机或服务器)
    • BSD
      • FreeBSD
    • Sun Solaris
    • IBM AIX
    • AT&T System V
      • Minix
        • Linux(适用于x86的个人计算机)
          • Ubuntu
          • Redhat
          • SUSE
          • Fedora

Linux不同版本以及应用领域

1. Linux内核及发行版介绍

Linux内核版本

  • 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。

  • Linux内核版本

    • 稳定版:具有工业级强度,可以广泛的应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动。
    • 开发板:由于要试验各种解决方案,所以变化很快。

Linux发行版本

  • Linux发行版(也被叫做GNU/Linux发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
    1. Linux Mint
    2. Debian
    3. Ubuntu
    4. openSUSE
    5. Redhat
    6. Fedora
    7. Manjaro
    8. Mageia
    9. CentOS
    10. Arch
    11. Elementary

2. 应用领域

个人桌面领域的应用

  • 典型代表:Ubuntu、Fedora、openSUSE

服务器领域

  • 典型代表
    • RedHat公司的AS系列
    • 完全开源的debian系列
    • suse EnterPrise 11系列等

嵌入式领域(如智能家居)

  • 主要应用:机顶盒、数字电视、网络电视、程控交换机、手机、PDA等都是其应用领域,得到了摩托罗拉、三星、NEC、Google等公司的大力推广

文件和目录

类Unix系统的目录结构

  • Ubuntu没有盘符这个概念,只有一个根目录 “/”,所有文件都在它下面

  • /

    • /bin
    • /sbin
    • /usr
      • bin
      • local
        • include
      • lib
    • /lib

    ## Linux目录

    • /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
    • /bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
    • /boot:放置Linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
    • /dev:存放Linux系统下的设备文件,访问该目录下的某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom/mnt
    • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etx/X11、/etc/sysconfig、/etc/xinetd.d
    • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu表示用户edu的家目录。
    • /lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
    • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
    • /mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
    • /opt:给主机额外安装软件所摆放的目录。
    • /proc:此目录的数据都在内存中,如系统核心、外部设备、网络状态,由于数据都存放在内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
    • /root:系统管理员root家目录。
    • /sbin:/usr/sbin:/usr/local/sbin:防止系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能“查看”而不能设置和使用。
    • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可防止在此目录下。
    • /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
    • /usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man:程序说明文件存放目录。
    • /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有登录文件存放目录,/var/spool/mail:邮件存放目录,/var/run:程序或服务启动后,其PID存放在该目录下 。

用户目录

相对路径和绝对路径

绝对路径

  • 从 / 目录开始描述的路径为绝对路径,如:

    •   cd /home
        ls /usr

相对路径

  • 从当前位置开始描述的路径为相对路径,如:

    •   cd ../../
        ls abc/def

. 和 ..

  • 每个目录都有. 和 ..
  • . 表示当前目录
  • .. 表示上一级目录,即父目录
  • 根目录下的. 和 ..都表示当前目录

访问权限

  • 读权限(r)
  • 写权限(w)
  • 可执行权限(x)

Linux命令

1. 命令使用方法

  • Linux命令的格式:

    •   command [-options] [parameter1] ...
    • command:命令名,相应功能的英文单词或单词的缩写

    • [options]:选项,可用来对命令进行控制,也可以省略

    • [parameter1]:传给命令的参数,可以是零个、一个或多个

2. 查看帮助文档

  • --help
    • 一般是Linux命令自带的帮助信息
  • man(manual)
    • man是Linux提供的一个手册,包含了绝大部分的命令、函数使用说明。
    • man中各个section意义如下:
      1. Standard commands(标准命令)
      2. System calls(系统调用,如open、write)
      3. Library functions(库函数,如printf、fopen)
      4. Special devices(设备文件的说明,/dev下各种设备)
      5. File formats(文件格式,如passwd)
      6. Games and toys(游戏和娱乐)
      7. Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII码、environ全局变量)
      8. Administrative Commands(管理员命令,如ifconfig)

3. 自动补全

  • 在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令

4. 历史命令

  • 当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来

文件、磁盘管理

文件管理

1. 查看文件信息:ls

  • ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。
  • Linux文件或者目录名称最长可以有265个字符,. 代表当前目录,.. 代表上一级目录,以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示。
  • ls常用参数:
    • -a:显示指定目录下所有子目录与文件,包括隐藏文件
    • -l:以列表方式显示文件的详细信息
    • -h:配合-l以人性化的方式显示文件大小

2. 输出重定向命令:>

3. 分屏显示:more

4. 管道:|

  • 一个命令的输出可以通过管道作为另一个命令的输入。

5. 清屏:clear

6. 切换工作目录:cd

  • cd ~ :切换到当前用户的家目录(/home/用户目录)
  • cd - :切换到上次所在的目录

7. 显示当前路径:pwd

8. 创建目录:mkdir

9. 删除目录:rmdir

10.删除文件:rm

  • rm -i:以进行交互式方式执行
  • rm -f:强制删除,忽略不存在的文件,无需提示
  • rm -r:递归的删除目录下的内容,删除文件夹时必须加此参数

11. 建立链接文件:ln

  • Linux链接文件类似于Windows下的快捷方式

  • 链接文件分为软链接和硬链接:

    • 软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
    • 硬链接:硬链接只能链接普通文件,不能链接目录。
  • 使用格式:

    •   ln 源文件 链接文件
        ln -s 源文件 链接文件
    • -s 为创建软链接,不加 -s 则创建硬链接

12. 查看或者合并文件内容:cat

13. 文本搜索:grep

  • Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。

  • 一般格式为:

    •   grep [-选项] '搜索内容串'文件名
  • 常用选项说明:

    • -v:显示不包含匹配文本的所有行(相当于求反)
    • -n:显示匹配行及行号
    • -i:忽略大小写
  • grep搜索内容串可以是正则表达式

14. 查找文件:find

  • find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属性的文件。

15. 拷贝文件:cp

16. 移动文件/重命名: mv

  • 移动文件:mv 文件名 移动目录
  • 使用方法:mv 原文件名 新文件名

17. 归档管理:tar

  • 计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
  • tar 使用格式:tar [参数] 打包文件名 文件
  • tar 命令很特殊,其参数前面可以使用 ”-“,也可以不使用
  • 常用参数:
    • -c:生成档案文件,创建打包文件
    • -v:列出归档解档的详细过程,显示进度
    • -f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
    • -t:列出档案中包含的文件
    • -x:解开档案文件
    • 注意:除了f需要放在参数的最后,其他参数的顺序任意

18. 文件压缩解压:gzip

  • tar与gzip命令结合使用实现文件打包、压缩。tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz

  • gzip使用格式:

    •   gzip [选项] 被压缩文件
  • 常用选项:

    • -d:解压
    • -r:压缩所有子目录
  • 也可使用 tar -zcvf ... 与 tar -zxvf ... 进行打包压缩与解压解包

19. 文件压缩解压:bzip2

  • tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
  • tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名为xxxx.tar.gz2
  • 在tar命令中增加一个选项(-j)可以调用bzip2实现一个压缩的功能,实行先打包后压缩的过程
  • 压缩用法:tar jcvf 压缩包包名 文件 ...
  • 解压用法:tar jxvf 压缩包包名

20. 文件压缩解压:zip、unzip

  • 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip
  • 压缩文件:zip [-r] 目标文件 源文件
  • 解压文件:unzip -d 解压后目录文件 压缩文件

21. 查看命令位置:which

系统管理

1. 查看当前日历:cal

2. 显示或设置时间:date

3. 查看进程信息:ps

  • 进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
  • ps命令可以查看进程的详细状况
  • 常用选项(选项可以不加”-“)
    • -a:显示终端上的所有进程,包括其他用户的进程
    • -u:显示进程的详细状态
    • -x:显示没有控制终端的进程
    • -w:显示加宽,以便显示更多信息
    • -r:只显示正在运行的进程

4. 动态显示进程:top

  • top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以使用top命令时加上-d来指定显示信息更新的时间间隔。

5. 终止进程:kill

  • 结束进程:kill PID,有些进程不能直接杀死,使用kill -9 PID进行强制结束。

6. 关机重启:reboot、shutdown、init

7. 检测磁盘空间:df

  • df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
  • 参数选项:
    • -a:显示所有文件系统的磁盘使用情况
    • -m:以1024字节为单位显示
    • -t:显示各指定文件系统的磁盘空间使用情况
    • -T:显示文件系统

8. 检测目录所占磁盘空间:du

  • du命令用于统计目录或我呢见所占磁盘空间的大小,使用命令的执行结果与df类似,du更侧重于磁盘的使用状况。
  • 使用格式:du [选项] 目录或文件名
    • -a:递归显示指定目录中各文件和子目录中文件占用的数据块
    • -s:显示指定文件或目录占用的数据块
    • -b:以字节为单位显示磁盘占用情况
    • -l:计算所有文件大小,对硬链接文件计算多次

9. 查看或配置网卡信息:ifconfig

10. 测试远程主机连通性:ping

用户、权限管理

1. 查看当前用户:whoami

2. 查看登录用户:who

3. 远程登陆:ssh

  • ssh 用户名@ip地址

4. 添加用户账号:useradd

  • 在Unix/Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令使用格式完全一样。
  • 使用格式:useradd [参数] 新建用户账号
    • -d:指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录
    • -m:自动建立目录
    • -g:指定组名称

5. 设置用户密码:passwd

6. 删除用户:userdel

  • 同时删除用户目录:userdel -r 用户名

7. 切换用户:su

8. 查看有哪些用户组

  • 方法一:cat /etc/group
  • 方法二:groupmod + 三次Tab键

9. 添加、删除组账号:groupadd、groupdel

  • groupadd 新建的组账号
  • groupdel 删除的组账号
  • cat /etc/group 查看用户组

10. 修改用户所在组:usermod

  • usermod -g 用户组 用户名
    • -g为修改用户默认组,-a -G为追加

11. 查看用户在哪些组:groups

12. 为创建的普通用户添加sudo权限

  • 新创建的用户,默认不能sudo,需要进行下面的操作:

  •   sudo usermod -a -G adm 用户名
      sudo usermod -a -G sudo 用户名

13. usermod -g 与 -G 的区别

  • -g:用来指定这个用户默认的用户组
  • -G:一般配合 -a 来完成向用户添加其他组

14. 修改文件权限:chmod

  • chmod:修改文件权限有两种格式:字母法与数字法
  • 字母法:chmod u/g/o/a +/-/= rwx 文件
    • u:user 表示该文件的所有者
    • g:group 表示与该文件的所有者属于同一组(group)者,即用户组
    • o:other 表示其他以外的人
    • a:all 表示这三者皆是
    • +:增加权限
    • -:撤销权限
    • =:设定权限
    • r:可读
    • w:可写
    • x:可执行
  • 数字法:“rwx” 这些权限也可以用数字来代替
    • r:读取权限,数字代号为 4
    • w:写入权限:数字代号为 2
    • x:执行权限,数字代号为 1
    • -:不具任何权限,数字代号为 0

15. 修改文件所有者:chown

  • 使用方法:chown 用户名 文件或目录名

16. 修改文件所属组:chgrp

  • 使用方法:chgrp 用户组名 文件或目录名

17. 远程拷贝:scp

  • 远程上传:scp 上传文件名 用户名@ip地址:上传的服务器路径
  • 远程下载:scp 用户名@IP地址:文件路径 下载的本地路径
  • 上传/下载目录时,需要在scp后增加 -r 参数

你可能感兴趣的:(Linux基础知识)