Linux基础使用学习笔记

Linux操作系统基础

1. Linux操作系统概述

  • 组成结构

    image-20220608160839267
    1. kernel:内核,包围在硬件之上
      作用:管理设备、进程、内存、交换空间、文件系统、精灵进程等;
      控制系统程序与硬件之间打交道的功能

    2. shell:外壳,包裹在内核之上

      • 作用:提供人机交互界面,用户与内核之间打交道的功能,类似windows的cmd

      • 分类:不同的shell,命令的解释不一样

        常见的shell:Bourne shell(sh), Korn shell(ksh), C shell(csh), Bourne-again shell(bash), tcsh

      • 命令提示符:不同shell的命令提示符不一样

        sh和Bash中 :管理员用户为#root 普通用户为$user

        csh中 : 管理员用户#root 普通用户为%user

    3. FileSystem:文件系统,管理文件、目录

  • Linux特性:多用户,多任务(进程、线程),多平台,图形化界面(x-window)硬件支持(低配置),通信与联网,应用程序支持等

2. Linux操作系统选择与安装

3. Linux文件系统及文件的基础知识

3.1 文件系统概述

  • 文件系统定义:

    文件系统是一种组织计算机文件和资料的方法;

    操作系统中封装的系统服务程序,实际上是一个软件程序,用来储存和管理计算机文件和资料。

  • 文件系统的分类

    磁盘文件系统:NTFS、EXT3

    闪存文件系统:JFFS2、YAFFS

    数据库文件系统:BFFS、WINFS

    网络文件系统:NFS

    虚拟文件系统:VFS(Proc)不同文件系统的统一接口

  • 文件系统的功能

    能定义文件的组织方式,文件结构

    提供建立和存取文件的环境:目录和文件

    能对文件存储器空间进行组织和分配

    负责文件存储并对存入的文件进行保护和检索

    负责建立文件,存入、读出、修改、转储文件,控制文件的存取,撤销文件等

3.2 Linux文件系统及文件

  • Linux文件系统
  1. EXT3:
    EXT3是基于日志方式的文件系统;

    系统中每个文件都有索引,用户对文件的每一个操作都会记录日志,形成一个任务队列排着执行

    性能是比较好的

  2. SWAP
    swap是交换分区的文件系统,类似windows的虚拟内存
    虚拟内存的实现有两种方式:

    ​ 第一种是进行内存的排列像内存池一样,进行一个优化

    ​ 第二种是把硬盘上的空间模拟成内存;

    swap是Linux的虚拟内存,在安装时要设置好大小,是物理内存的2倍(Ubuntu中自动设置好了)

  • Linux文件系统及特点
  1. Linux系统中的一切皆文件

​ Linux系统把设备(硬盘、软驱、光驱)等都看做文件,文件夹也看做文件

  1. Linux文件系统类型标识符
普通文件 目录文件 链接文件 块设备 字符类型 Socket 管道文件
- d I b c S p
  1. Linux文件颜色属性

    蓝色:目录

    绿色:可执行

    浅蓝色:链接

    红色:压缩

    灰色:其他

  2. 文件的常用查看命令

    pwd命令、cd命令、ls命令、ls -l命令

    (192条消息) Linux 文件操作常用命令_cpp_learners的博客-CSDN博客_linux 文件命令

  • Linux文件系统目录结构

    Linux 系统目录结构 | 菜鸟教程 (runoob.com)

  • Linux与Windows目录结构的区别

    1. 根目录
      Linux:/;Window:\

    2. 命名大小写区分
      Linux:命名区分大小写;Window:命名不区分大小写

    3. 结构管理
      Linux:磁盘逻辑结构管理物理结构,格式化将磁盘分为很多的文件块区
      Window:物理结构管理逻辑结构,先分区再格式化建立结构

4. Linux操作系统命令使用

4.1 shell命令基础

4.1.1 命令行编辑与别名使用

image-20220609094709719
  • 别名使用例子

    image-20220609103003507

    通过align命令可以查看所有的别名

    通过unalign 别名可以取消指定的别名,如unalign mycd

4.1.2 shell的特殊字符

  1. 通配符:*、?、[ ]

    • *号:通配0个或多个字符 如ls b*列出当前目录中首字母为b,其余字母任意的目录
    • :通配任意单个字符 如ls b??列出当前字母为b,第二和第三个字母为任意的目录
    • [s]通配某个范围内的任意一个字符 如ls [A-H]??第一个字母为A-H范围内,第二第三任意;[Aa]表示范围为A或a
  2. 同时执行多条命令 使用;隔开多条命令

    cd /home;ls表示转到home目录并查看该目录

  3. 输入输出重定向:>、<、>>

    • 输出重定向:>、>>

      >:将一个命令的输出放入文件而非屏幕

      >>:输出重定向但不会把原文件覆盖,在原文件末尾追加

      如使用ls >1.txt将当前的文件夹下的文件名输出到1.txt文档中

    image-20220609114341671
    • 输入重定向:< 非标准的输入

      如使用cat < 1.txt > 2.txt完成文件的拷贝。cat < 1.txt表示从1.txt输入文件,> 2.txt表示输出到2.txt

  4. 管道符: |

    • 使用管道操作符“|”可以把一个命令的标准输出传送到另一个命令的标准输入中

      ls -l /etc | more就是先查看/etc下的目录,再将结果按照 more命令来分页显示

      补充:Linux中的设备也是以文件形式存在的。设备文件存在于/dev目录中

  5. 其他:%,~
    %:作业控制,提示符等

4.1.3 联机帮助、清屏与历史记录命令

  • 联机帮助
    man name:可以在系统中查找name命令的相关信息
    man -k keyword:获取与keyword有关的相关帮助
    spacebar :翻屏或翻页
    Enter :翻行(每次增加一行显示)
    b :向前翻一屏或一页
    f :向后翻一屏或一页
    q:退出
    /string :查找前面符合string指定的信息(string指的是关键字)
    n :查找下一个符合string指定的信息

    例子:尝试使用man ls并分别执行上述命令,熟悉命令

  • 清屏

    clear

  • 历史记录:
    history:查询曾经使用过的命令(默认最多纪录1000)
    history n :查询曾经使用过的n条命令
    !n :执行最近使用的第n条命令(这里执行的是按history中的第n条命令,即正序)
    !! :执行上一次命令
    方向上键 : 执行上一次命令(!!输入后自动执行,这里只是输入了命令,未执行。多次点方向上键可以显示上几条命令)

4.2 文件管理

4.2.1 查看文件目录

  1. pwd

    显示当前工作目录

  2. cd

    改变当前工作目录

    用法:cd directory_name

    特殊cd用法:cd ..返回上级目录、cd /根目录、cdcd ~当前用户主目录、cd ~username转到指定用户主目录

  3. ls

    ls列出当前目录的文件和子目录:
    ls -a 列出所有目录、子目录、文件和隐藏文件
    ls -R 列出从当前目录开始的所有子目录、文件并且一层层往下显示
    ls -F 列出文件、目录名并显示出文件类型
    ls -t 以修改时间为时间倒序来列出文件、子目录
    ls -l 以长列表格式显示文件、目录的详细信息

  4. file

    file filename查看文件的文件类型

4.2.2 创建和删除文件目录

  • 创建文件

    touch filenametouch 123.txt
    该文件不存在则创建一个新的空文件
    该文件存在则更新该文件的修改访问时间

  • 创建目录

    mkdir -p directory_name
    -p 多级目录,父目录不存在时,可以建立父目录 如makedir -p dir1/dir2/dir3

  • 删除文件

    rm -i/f filename(s)
    -i 询问是否删除
    -f 强制删除

  • 删除目录:
    rmdir directory_name(s) 删除空目录
    rm -ri directory_name(s)删除费控目录
    -r 删除非空目录
    -i 删除前询问是否删除,删除输入y,不删输入n

  • 创建链接文件:

    (194条消息) Linux中的链接文件_Violin-Lover的博客-CSDN博客_linux中的链接文件

    Linux系统下的文件链接 (baidu.com)

    1. Linux文件管理特性
      文件都有文件名与数据,在Linux上被分成两部分:用户数据(user data)和元数据(metadata)
      用户数据:即文件数据块(data block),数据块记录文件真实内容的地方
      元数据则是文件的附加属性,如文件的大小、创建的时间等
    2. 为什么会有链接文件?
      为了解决文件的共享使用,Linux系统引入了链接,链接为Linux系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处,创建链接文件可以给文件和目录创建代替名或别名。
    3. 分类
      硬链接(hard link)与软链接(又称符号链接,即soft link或symbolic link )
      创建命令In source_file target_file
      建立硬链接
      In [-s或P] source_file target_file
      -s:建立软链接
      -P:建立硬链接

4.2.3 显示文件目录

  • cat
    不分屏显示文本内容
    把小文件链接成大文件
    命令cat filename(s)

    例子:

    从键盘输入数据并将其存放到文档1.txt中 cat < /dev/stdin > 1.txt

    清空1.txt cat /dev/null > 1.txt,若是没有该文件,会创建该空白文件

  • more
    more filemore(s) 分屏显示文本内容
    spacebar 向下显示一屏
    Enter 向下显示一行
    b 向上显示一屏
    f 向下显示一屏
    h 显示帮助菜单
    q 退出
    /string 查找string字符串
    n 查找下一个string

  • head
    查找文件的前多少行
    head -n filename(s)

  • tail
    查找文件的末尾多少行
    tail -n filename(s)

4.2.4 拷贝和移动文件目录

  • cp

    拷贝复制文件目录、拷贝文件

    cp -i source_file destination_file
    cp -i source_file(s) destination_directory
    -i选项作用:当目标文件存在,会询问是否覆盖,没有-i选项则不询问直接覆盖

    拷贝目录

    cp -r source_directory(s) destination_directory(s)

  • mv

    移动文件目录或重命名文件目录
    mv -i source_file target_file 重命名原文件为目标文件,若不加-i则会直接覆盖同名文件
    mv -i source_file target_directory 移动文件到目标目录;若目标文件夹有同名文件,-i会询问是否覆盖,若不加-i则会直接覆盖

    mv -i source_directory target_directory若移动目标目录存在时,源目录会移动到目标目录;若目标目录不存在则是对该目录改名

4.2.5 文件目录权限

  • 什么是文件目录权限
    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁能通过何种方式对文件和目录进行访问和操作

  • 权限的分类
    r 读权限:可以打开文件、目录读取查看
    w 写权限:对文件、目录可以编写更改
    x 执行权限:对文件可执行(针对可执行文件、对目录为可查找该目录下的内容)

    - 没有权限

  • 文件目录权限定义

    image-20220609210800809

  • 权限所属对象
    拥有者:生成文件或目录时登录的当前人,权限最高,用u表示
    同组人:系统管理员分配的同组的一个或几个人,用g表示
    其他人:除拥有者、同组人以外的人,用o表示
    所有人:包括拥有者、同组人及其他人,用a表示

  • 使用命令ls -l即可查看文件和目录的权限

    image-20220609114343641
  • 文件目录权限的相关命令:

    1. chmod
      修改文件目录的访问权限,修改权限的前提条件是在修改权限时,要注意是自己的文件或目录

      • 使用字母表示权限

        image-20220610101117245

        使用方式:chmod u=r 文件名 //给拥有者设置读文件的权限

        chmod g+w 文件名 //给同组人添加写权限

        chmod a-w 文件名 //所有人都删除写权限

        image-20220610103126427
      • 使用数字表示权限
        使用二进制数字表示权限
        r w x
        0 0 0 0表示对应位无权限
        1 1 1 1表示对应位有权限
        通过八进制的数字显示我们可以判断有哪些权限

        Octal Value(r w x) Permission
        7 (111) rwx
        6 (110) rw-
        5 (101) r-x
        4 (100) r--
        3 (011) -wx
        2 (010) -w-
        1 (001) --x
        0 (000) ---

        使用命令chmod 555 文件名 即将文件的权限改为所有人都只有读和执行权限,无写权限

    2. chown
      更改某个文件或目录的属主和属组,可用于授权

      例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。
      chown [选项] 用户或组 文件
      chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID,组可以是组名或组ID。只有超级用户和属于组的文件所有者才能变更文件关联组,非超级用户如需要设置关联组可能需要使用chgrp命令先改变组
      文件是以空格分开的要改动权限的文件列表,支持通配符。
      -R 递归式地改动指定目录及其下的所有子目录和文件的拥有者
      -v 显示chown命令所做的工作
      例子:sudo chown wang shiyuan.c //将shiyuan.c的拥有者改为用户wang
      sudo chown -R wang users/his //将多级目录user/his的拥有者改为wang

      补充:添加新用户:sudo useradd 用户名

      ​ 设置用户密码:sudo passwd 用户名

    3. chgrp
      改动文件或目录所属的组
      chgrp [选项] group filename
      该命令改动指定指定文件所属的用户组,其中group能是用户组ID,也能是/etc/group文件中用户组的组名
      文件名是以空格分开的要改动属组的文件列表、支持通配符
      如果用户不是该文件的属主或终极用户,则不能改动该文件的组
      -R 递归式地改动指定目录及其下的所有子目录和文件的属组
      例子:sudo chgrp -R book /opt/local/book 改动/opt/local/book及其子目录下的所有文件的属组为book

4.2.6 查找文件

  • find
    file path expression [action] 查找文件和目录
    前提条件:要对被查找的目录及其所有字目录有读权限才能查找
    查找选项:通过文件属性来查找
    -name 按文件名
    -user 按用户(文件属主)
    -size 按大小
    -mtime 按最后一次修改的时间
    -atime 按最后一次访问的时间
    -type 按文件类型 f:file d:directory
    -perm 按权限
    举例:
    find / -name b* 查找根目录下面以b开头的所有的文件
    find . -mtime 10 -print 查找当前目录下修改时间距离今天10天的文件,并显示
    find /etc -user 0 -size +400 -print 查找/etc目录中ID为0的用户所创建的文件,且文件大于200k,并显示
    find ~ -perm 777 > ~ /holes 在主目录下查找文件权限为所有用户都具有权限为7即rwx的文件,并将查找的结果输入到主目录/holes下
    find /export/home -type f -atime +365 -exec rm {}\; 在根目录/export/home下查找最后一次访问时间大于365天的文件,并执行删除(\起到的只是一个转义的作用)
  • locate
    locate [-d<数据库文件>] [–help] [–version] [keywords]
    locate 指令用于查找符合条件的文件,它会去保存文件与目录的数据库内查找合乎范本样式条件的文件或目录
    -d<数据库文件>或–database=<数据库文件>:设置locate指令使用的数据库
    locate 指令预设的数据库位于/var/lib/slocate目录里,文件slocate.db,您可使用这个参数另行指定
    –help 在线帮助;–version 显示版本信息
    速度快很多,他通过inode,文件索引来找,它会把文件索引维护在一个数据库里面,它在数据库去找,比较麻烦的是需要更新数据updatedb

4.2.7 过滤与统计

  • grep(过滤)

    语法:grep [option(s)] string filename1)

    1)查出包含某些字符串的结果;

    例子1:使用grep root /etc/passwd命令过滤出passwd文件中有关root的内容

    2)对文件或输出结果进行过滤,大小写敏感

    例子2:ls -la | grep -i "6月"显示当前目录中包含6月的文件,注意ls -la为显示当前文件夹中所有(包含隐藏文件)的文件,再将结果通过管道符使用grep -i "6月"进行过滤结果

    例子3:ls wj*.txt | xargs grep .profile显示wj*.txt文件信息,并在文件信息中过滤.profile,xargs的作用为,若是wj*.txt文件有多个,每个文件都进行过滤

    -i 忽略大小写
    -v 反向匹配(查找不包函字符串的结果)

  • wc(统计)
    统计文件或输出结果
    wc [optoin(s)] filename(s)
    -l 统计多少行

    grep li /etc/passwd | wc -l 统计配置文件passwd中包含li的行数

    -w 统计多少个单词

    wc -w 1.txt 统计1.txt中有多少个单词,以空格为分界

    -c 统计多少个字符

    wc -c 1.txt 统计1.txt中有多少个字符

4.3 系统管理

4.3.1 日期时间与进程查看

  • data

    输入data 显示当前日期

  • cal

    输入cal 显示日历
    cal 月份 年份 显示指定年份月份的日历
    cal 年份 显示指定年份全年的日历

  • ps
    列出当前系统中已经在运行的进程
    进程:一个能完成一定功能的程序
    ps [options]
    ps 列出与自己当前终端相关的进程
    -e 列出正在运行的进程 如ps -e | more
    -f 列出一个完整的进程列表形式 如ps -ef | moreps -f
    -U 查找出由某个用户启动的进程
    -auwx 列出一个完整的进程列表形式,形式与-f不一样 ps -auwx

4.3.2 切换用户、设置普通用户的超级权限与关机重启

  • su
    su 用户名 切换用户

  • sudo
    sudo 命令行 使得普通用户具有管理员的权限

  • shutdown
    安全地关闭或重启Linux系统

    它在系统关闭之前给系统上的所有登录用户提示一条警告。
    该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
    精确的时间的格式是hh:mm,表示小时和分钟;时间段由+分钟数表示

    系统执行该命令后会自动进行数据同步的工作
    语法:shutdown [-efFhknr][-t 秒数][时间][警告信息]

    -c 当执行“shutdown -h 11:50”指令时,只要按+键就可中断关机的指令
    -f 重新启动是不执行fsck
    -F 重新启动是执行fsck
    -h 将系统关机
    -k 只是送出信息给所有用户,但不会实际关机
    -n 不调用init程序进行关机,而由shutdowm自己进行
    -r shutdown之后重新启动
    -t<秒数> 送出警告信息和删除信息之间要延迟多少秒
    [时间] 设置多久时间后执行shutdowm指令
    [警告信息] 要传送给所有登入用户的信息

    例子:

    shutdown -r +10 系统在十分钟后关机并且马上重新启动
    shutdown -h now 系统马上关机并且不重新启动

  • reboot
    reboot的工作过程差不多跟halt一样,不过它是引发主机重启,而halt是关机,它的参数与halt相差不多

4.4 用户管理

4.4.1 密码设置与修改:

  • 用户密码设置要求
    6-8个字符
    至少包含2个字母,1个数字或特殊符号
    不同于用户ID
    不同于以前的密码,并且至少3个字符不同于以前的密码
  • 修改密码命令
    passwd 用户名

4.4.2 查找用户

  • id
    查看用户ID(用户名),所属组ID(组名)
  • users
    查看已经登录到当前系统中的用户,只显示出用户名
  • who
    查看用户的详细信息
  • who am i
    查看当前用户自己的信息
  • whoami
    查看当前用户自己的用户名

4.5 磁盘管理

  • du
    显示磁盘使用摘要信息
    du 以Block为单位方式显示(注意在Ubuntu下Block大小等于字节k)
    -k 以k字节方式显示
    -m 以m字节方式显示
    -s 显示当前目录下的内容总的占用磁盘的大小,以Block为单位
    以Block为单位显示的数字是以k字节的方式显示的数字的2倍:1k 字节=2个Block
  • df
    显示整个文件系统的空间使用磁盘情况
    -k 以k字节方式显示
    -BM 以M为单位显示

4.6 网络配置管理

  • ping
    查看当前机器与另一台机器的联通状况
    命令 ping 主机IP/主机名 向ping后面的主机发送数据包,若被ping 主机有回复则表明是联通的
    ping www.baidu.com

补充命令:Ctrl+c:强制退出正在执i行的命令

  • ifconfig
    ifconfig 查看和配置当前机器的网s络参数信息
    ifconfig -a 显示查看当前机器的IP、Netmask、Gateway等网络信息,与ifconfig不同为这里会显示关闭的网络适配卡
    ifconfig eth0 up(down) 激活与关闭某个网络适配卡
    ifconfig eth0 [ipaddress] netmask [address] 设置IP和子网掩码,注意当电脑重启后IP和子网掩码会还原到最初状态,若想永久更改需要在配置文件中更改信息

5. Linux应用程序的安装与卸载基础

  • Linux软件安装包的概念
  1. 什么是软件安装包

    类似于Windows下的安装程序,如打包好的exe文件

    在Linux下的打包文件通常都死tar,打包格式可以自己定义,打包文件可以自定义一个后缀名;如tar.abc

  2. Linux下的常见的软件程序包

    rpm,deb

    rpm是红帽子系统定义的软件包文件格式

    dep是Ubuntu下的主要安装包的格式

    安装包的具体格式规范要到具体的官网去查看格式规范

  3. Linux下的安装包的命名格式

    软件包名称_版本号-修订版本_体系架构.扩展名

    如 aptitude_0.6.3-3.2ubuntu1_i386.deb

    ​ libboost-iostreamsl.42.0_1.42.0-4ubuntu2_i386.deb

  4. Linux下安装卸载应用程序的方式

    • 安装包离线安装和卸载:dpkg

      安装包 dpkg -i <package>

      移除包和配置文件 dpkg -p <package>

    • 源文件编译安装和卸载

      配置configure、编译make和安装make install

    • 程序管理包在线卸载:aptitude

      安装包 apt-get install <package>

      完全卸载包 apt-get remove -purge <package> -purge是完全卸载的意思

6. Linux系统VI编辑器的使用基础

6.1 VI的基本介绍

  • 什么是Vi

    Vi是Linux系统下的鼎鼎大名的全屏方式的文本编辑器

    使用方法Vi filename

    filename不存在则创建filename文件并可编辑和保存退出

    filename存在则打开文件编辑

  • Vi使用模式

  1. 三种模式

    命令行模式 Command Mode

    插入模式 Edit Mode

    末行模式 ExMode

  2. 不同模式的切换

Vi编辑器三种模式

6.2 VI的常用命令

vi编辑器的三种模式 - houJINye - 博客园 (cnblogs.com)

10分钟掌握Linux vi编辑器常见命令的使用,最简单的vi编辑器教程_C语言中文网 (biancheng.net)

  • Vi在三种不同模式下有不同的命令实现不同的功能,常用命令如下

    image-20220610103126434
posted @ 2022-06-12 14:18  ray963  阅读(190)  评论(0)    收藏  举报