欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux基础知识

程序员文章站 2022-06-14 20:06:12
操作系统发展史 Unix 1970年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。 因为B语言的跨平台性较差,为了能够在其他电脑上也能够运行这个Unix操作系统Dennis Ritc ......

操作系统发展史

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 参数