Linux基础指令

一、Linux介绍

1. Linux学习方向

Linux运维工程师:

Linux嵌入式工程师:

在Linux下的项目开发:Java、Python、C/C++、PHP

2. Linux的应用领域

个人桌面领域应用

服务器领域应用

嵌入式领域应用

3. Linux学习阶段

阶段1:Linux环境下的基本操作命令,包括文件操作、编辑工具、用户管理。

阶段2:配置,包括环境变量配置、网络配置、服务配置。

阶段3:搭建对应语言的开发环境(大数据、JAVA、Python)。

阶段4:编写shell脚本,对Linux服务器进行维护。

阶段5:进行安全设置,防止攻击,对系统进行调优。

阶段6:深入了解Linux,探究内核工作原理,熟悉各个环节的部署和方法等。

二、 Linux基础入门

1. 什么是Linux?

Linux是一款操作系统,免费、开源、安全、高效、稳定,处理高并发非常强,大多数企业级的项目都会部署到Linux/unix服务器上运行。

Linux的主要发行版:CentOSE,RedHat,Ubuntu,Suse,Fedora,红旗Linux。

2. 虚拟机配置

  1. 网络配置:

    1. 桥接模式:虚拟机和本母机都有一个ip地址,且在同一局域网内,外界能够任意访问其中的ip地址。所以可能会造成某个网段内ip冲突导致ip地址不够用。
    2. NAT模式:网络地址转换方式,Linux虚拟机可以访问外网,不会造成ip冲突。(一般选这个)
    3. 仅主机模式:Linux虚拟机是一个独立的主机,不能访问外网。
  2. CPU与内核:

    大小不能超过母机的总资源数,可以在资源监视器中查看CPU部分。

3. Vmtools

  1. 安装
    1. 在文件中查找vmtools。新版本的centos会自动安装且解压好的。
  2. 共享文件夹
    1. 在windows下创建一个文件夹
    2. 在vm菜单项中依次点击"虚拟机->设置->选项->共享文件夹->总是启用->添加->选择刚才创建好的文件夹路径->点击下一步->完成->确定。
    3. centos系统上,在计算机/mnt/hgfs下可以找到共享的文件夹。
  3. 作用
    1. 可以在windows系统和centos系统之间直接粘贴命令
    2. 可以给windows和centos之间设置共享文件夹

4. Linux(Centos)文件系统目录结构

  1. Linux文件系统采用层级式的树状目录结构,此结构最上层是根目录"/",然后在此目录下创建其他子目录。
  2. Linux世界里,一切皆文件。
  3. 常用文件夹
    1. bin:binary,存放经常使用的命令
    2. dev:设备硬件映射,类似windows的设备管理器,把所有的硬件用文件的形式存储
    3. etc:所有的系统管理所需要的配置文件和子目录
    4. home:存放普通用户的主目录,在Linux下每个用户都有一个自己的目录,一半该目录名是以用户的账号名命的
    5. lib:系统开机需要的最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
    6. lost+found:一般是空的,当系统非法关机的时候,就会存一些文件
    7. boot:存放的是Linux启动时使用的一些核心文件,包括一些连接文件以及镜像文件
    8. media:linux会自动识别一些设备,比如U盘,光驱等,识别后,Linux会把识别的设备挂载到这个目录下
    9. mnt:让用户临时挂载别的文件系统,可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看里的内容。
    10. opt:给主机额外安装软件所摆放的目录。比如后面要安装的数据库。
    11. usr/local:另外一个给主机安装额外软件的目录,一般是通过编译源码方式安装的程序。
    12. proc:虚拟的目录,是系统内存的映射,访问这个目录来获取系统信息
    13. srv:service,存放一些服务器启动之后需要提取的数据
    14. root:该目录为系统管理员的用户主目录
    15. sbin:超级用户,存放系统管理员使用的系统管理程序
    16. selinux:一种安全子系统,能控制程序只能访问特定文件。
    17. sys:系统,安装了2.6版本以上的内核中新出现的一个文件系统
    18. tmp:临时文件夹
    19. usr:非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似windows下的program files目录
    20. var:这个目录存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
  4. 注意:
    1. linux只有一个根目录"/"
    2. linux的各个目录存放的内容是规划好的,不要乱放文件
    3. linux是以文件的形式管理我们的设备,因此linux系统,一切皆文件

三、 Linux基础指令实践

1. 远程登录

  1. Xshell,远程操作。
  2. Xftp,远程文件传输。

2. vi和vim的使用

适用vi/vim编辑一个文件时,刚进入的时候为一般模式(不能对内容进行编辑),输入a/i等等键进入编辑模式。在一般模式下输入:进入命令模式。

  1. 常用命令
    1. esc:从编辑模式切换到一般模式
    2. wq:退出并保存
    3. q:退出
    4. q!:退出不保存
  2. 快捷键
    1. 复制粘贴单行:在一般模式下,输入yy将会把光标所在行复制。
    2. 复制粘贴多行:在一般模式下,输入数字n,然后输入yy,即可复制从光标所在处起的n行。
    3. 粘贴:使用p将会把复制的内容粘贴到光标所在的下一行。
    4. 删除一行:输入dd,删除光标所在的行。
    5. 删除多行:输入数字n,再输入dd,会删除包括光标所在行开始的n行。
    6. 查找:在一般模式下,输入/,然后在/后面输入要查找的内容,然后回车,即可得到结果。输入字母n,可以对结果进行遍历。
    7. 设置文件行号:在命令模式下输入set nu显示行号,输入set nonu不显示行号。
    8. 首行和末行的切换:在一般模式下输入G使得光标跳转到内容末尾,输入gg使得光标跳转到内容头。
    9. 撤回:在一般模式下,输入字母u,撤回新修改的操作。
    10. 跳转到指定行号:在一般模式下,先输入数字n,在输入shift+g(或者gg也可),即可使得光标跳转到指定行号首部。

3. Linux关机重启注销及用户管理

  1. 关机和重启

    1. shutdown
      1. shutdown -h now:立即关机
      2. shutdown -h 1:1分钟后关机
      3. shutdown -r now:立即重启
    2. halt:关机
    3. reboot:重启
    4. sync:把内存的数据同步保存到磁盘,此命令应该在关机和重启之前都需要运行一遍,防止数据丢失。
  2. 用户登录和注销

    1. logout:注销当前用户,在图形运行级别是无效的,需要在运行级别3下才有效果。
  3. 用户管理

    ​ Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

    ​ Linux用户至少属于一个组,一个用户可以属于多个组。

    1. 添加用户

      1. useradd 用户名:添加一个用户,且同时生成一个与用户名相同的家目录。
      2. useradd -d /home/路径名 用户名:在创建用户时指定家目录,该目录必须是不存在的。
    2. 修改密码

      必须在根目录下才能修改密码。修改指令为:passwd+用户名。

    3. 查看用户所在家目录

      pwd + 用户名

    4. 删除用户

      1. userdel 用户名:删除用户,不删除其所在家目录。
      2. userdel -r 用户名:删除用户同时删除其所在家目录。
    5. 查询用户信息

      id 用户名:得到结果依次为用户id,用户所在组id,用户所在组名称。如果没有该用户,则提示无此用户。

    6. 切换用户

      1. su 用户名:从高级权限用户切换到低级权限用户时,不需要输入密码。反之,则需要。
      2. exit:可以切换到上一权限用户。
    7. 查询当前用户名

      whoami:返回当前用户名。

    8. 用户的组管理

      1. groupadd:添加用户组
      2. groupdel:删除用户组
      3. 创建用户时指定组:useradd -g 组名 用户名。
      4. 修改用户组:usermod -g 组名 用户名。
    9. 用户和组信息保存的相关文件

      1. /etc/passwd文件:用户的配置文件,记录用户的各种信息。每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
      2. /etc/shadow文件:口令配置文件。每行的含义:登录名:加密口令:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志。
      3. /etc/group文件:组的配置文件,记录linux包含的组信息。每行含义:组名:口令:组标识号:组内用户列表。

4. Linux实用指令

1.运行级别

Linux运行级别一共有七个,编号分别为:0,1,2,3,4,5,6。

  1. 0:关机
  2. 1:单用户
  3. 2:多用户无网络服务
  4. 3:多用户有网络服务
  5. 4:保留,至今未用
  6. 5:图形界面
  7. 6:重启

常用的运行级别是3和5,修改默认运行级别可修改配置文件/etc/inittab。

切换级别指令:init 级别号

2. 找回root密码

开机,在引导输入时按下回车键,进入一个界面,输入e,进入一个新的页面,选择第二行进行内核编辑,输入e进入编辑模式,次数输入(有个空格)1,然后回车,再输入b,即可进入单用户模式(1),passwd root即可修改root密码,最后exit退出该运行级别。远程连接这个方法是不行的,这也保证了Linux一定程度上的安全性。

3. 帮助指令
  1. man [命令/配置文件]:功能描述,获得帮助信息。如man ls。
  2. help 命令:功能描述,获得shell内置命令的帮助信息。如 help cd。
4. 文件目录类指令
  1. pwd:显示当前工作目录的绝对路径。
  2. ls:
    1. ls:显示当前目录下的文件(不包括隐藏的)
    2. ls -a:显示当前目录下的所有文件(包括隐藏的)
    3. ls -l:以列表的形式显示当前目录下的所有文件(不包括隐藏的)
    4. ls -al:以列表的形式显示当前目录下所有的文件(包括隐藏的)
    5. ls -lh:以列表且以人性化的形式显示
  3. cd:切换到指定目录
    1. cd/cd ~:回到自己的家目录
    2. cd …:返回上一级目录
  4. mkdir:创建目录
    1. mkdir 指定目录==/新目录名==:在指定目录创建新的目录。如 mkdir /home==/god==
    2. mkdir -p 指定目录==/新目录名==:在指定目录创建新的多级目录。如mkdir -p /home==/animal/bird==
  5. rmdir:删除目录
    1. rmdir 指定目录:删除指定的目录,此目录必须是空的,否则删除会失败。
    2. rm- rf 指定目录或者文件:删除指定的目录文件,不论它是否为空。
  6. touch:创建文件
    1. touch 文件名:创建一个新的文件。如 touch a.txt。
    2. touch 文件名1 文件名2…:同时创建多个文件。如 touch ok1.txt ok2.txt。
  7. cp:拷贝文件或目录
    1. cp 源文件路径a.txt 目的文件路径B:将文件a.txt拷贝到B目录下。
    2. cp -r 源目录A 目的目录B:将目录A拷贝到B目录下。
    3. cp -r 源目录A 目的目录B:将目录A拷贝到B目录下,会强制覆盖目的目录下已存在的相同文件。
  8. rm:删除文件或者目录
    1. rm -r 指定目录:递归删除目录及其下面所有的文件或目录。删除时有提示信息,输入y或者n进行是否删除的选择。
    2. rm -rf 指定目录:强制删除目录下所有的文件或目录,删除时没有任何提示信息。
  9. mv:移动/重命名指定文件或者目录
    1. mv 指定文件名 新的文件名:将指定文件名进行重命名。
    2. mv 指定文件目录 目的文件目录:将指定文件或者目录剪切到目的文件目录。
  10. cat:查看文件内容
  11. cat 指定文件:以只读的方式查看指定的文件内容。
  12. cat 指定文件 | more:以分页的形式查看指定文件内容。后续按空格键以一页的大小进行输出,按回车键以一行的大小进行输出。
  13. more:一个文本过滤器。以一页的大小显示文本内容。语法:more 指定文件。进入该模式后有以下快捷键。
    1. 空格:以一页的大小进行输出。
    2. 回车:以一行的大小进行输出。
    3. q:停止more的内容输入,即退出该模式。
    4. ctrl+B:向上滚动一页内容。
    5. ctrl+F:向下滚动一页内容。
    6. =:输出当前行号
    7. :f:输出文件名及当前行号
  14. less:显示文件内容。它不是一次将整个文件加载之后才显示,而是根据需要加载内容。具体操作与more指令类似。
  15. ‘>‘和’>>’:
    1. 指令 > 文件:将指令所得的结果覆盖写入到指定文件中。
    2. 指令>>文件:将指令所得的结果追加写入到指定文件中。
    3. echo “内容”>>文件:将内容追加写入到指定文件中。
  16. echo:输出内容到控制台
  17. head:输出文件头部内容
    1. head -n 5 文件名:输出指定文件内容的前5行
    2. head 文件名:输出指定文件内容的前10行(默认10行)。
  18. tail:输出文件头部内容
    1. tail -n 5 文件名:输出指定文件内容的后5行。
    2. tail 文件名:输出指定文件内容的后10行(默认10行)。
    3. tail -f 文件名:输出指定文件内容的10行,且对该文件进行监控,如果该文件内容发生变化,则会输出变化的内容。
  19. ln:符号链接,软链接。
    1. ln -s 原文件/目录 软链接名:给原文件创建一个软链接
    2. rm -rf 软链接名:删除软链接。
    3. 当我们使用软链接时,其工作目录仍然在软链接所在目录下。
  20. history:查看已经执行过的历史指令,也可以执行历史指令
    1. history:显示所有的历史指令
    2. history n:显示最近的n条指令
    3. !n:执行历史指令编号为n的指令
5. 时间日期
  1. date:显示当前日期
    1. date:显示当前时间
    2. date “+%Y”:显示当前年份(4位数)
    3. date “+%y”:显示当前年份(2位数)
    4. date “+%m”:显示当前月份
    5. date “+%d”:显示当前是哪一天
    6. date “+%Y-%m-%d %H:%M:%S”:显示年月日时分秒
    7. date -s 字符串时间:设置时间
  2. cal:查看日历时间
    1. cal:显示本月日历
    2. cal 2020:显示2020年一整年的日历
6. 搜索查找
  1. find:将从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。

    1. find 指定目录 -name 指定文件名:查找指定目录下指定name的文件。显示给终端的结果是指定文件名的路径。没找到的话,则什么都不显示。

        1. find 指定目录 -name *.txt:利用通配符查找名称后缀是txt的文件。
      
    2. find 指定目录 -user 指定用户名:查找指定目录下指定用户所拥有的文件。显示给终端的结果是所有的文件名的路径。没找到的话,则什么都不显示。

    3. find 指定目录 -size (-nM/nk/+nM):查找指定目录下大小小于nMB/等于nkB/nMB的文件。显示给终端的结果是指定文件名的路径。没找到的话,则什么都不显示。

      注意:M是大写k是小写-代表小于,+代表大于

  2. locate:快速定位文件路径。原理:在事先建立好的文件系统locate数据库进行查找。

      1. 第一次使用前必须运行updatedb进行数据库更新。
      2. locate 文件名:得到指定文件名的文件路径。
    
  3. grep:过滤查找。

      1. “|”:管道符,将前一个命令的处理结果输出传递给后面的命令处理。
      2. cat 指定文件 | grep -n 指定字符:在指定文件中查找指定字符并显示行号。
      3. cat 指定文件 | grep -i 指定字符:在指定文件中查找指定字符,不区分大小写。
      4. cat 指定文件 | grep -ni 指定字符:在指定文件中查找指定字符并显示行号,不区分大小写。
    
7. 压缩和解压缩
  1. gzip和gungzip

    1. gzip 文件名:对指定文件进行压缩,结果是:指定文件消失,变成文件名.gz。
    2. gunzip 文件名:对指定的文件(该文件是.gz类型的)进行解压缩,结果是:指定文件消失,解压成原文件。
  2. zip和unzip

    1. zip -r 文件名.zip 指定文件或目录:对指定的文件或目录递归压缩成.zip文件。
    2. zip -d 指定目录 指定文件:对指定文件(该文件是.zip类型)解压到指定的目录。
  3. tar:打包指令,最后生成的文件是.tar.gz文件类型

    1. tar [选项] xxx.tar.gz 打包的内容:打包目录,压缩后的文件各式是.tar.gz。

      选项说明:

      1. -c:产生.tar打包文件
      2. -v:显示详细信息
      3. -f:指定压缩后的文件名
      4. -z:打包同时压缩
      5. -x:解压.tar文件
    2. tar -zcvf xxx.tar.gz 文件名1 文件名2:将文件1和文件2压缩成xxx.tar.gz。

    3. tar -zcvf xxx.tar.gz 目录:将一整个目录压缩成xxx.tar.gz文件。

    4. tar -zxvf xxx.tar.gz :将xxx.tar.gz文件解压到当前目录。

    5. tar -zxvf xxx.tar.gz -C 指定目录:将xxx.tar.gz文件解压到指定目录。该目录必须存在。

8. 组管理
  1. ls -ahl:查看文件的所有者、所在组,具体分别在第三列、第四列。

  2. chown 用户名 文件名:将文件的拥有者改为指定用户名。

    当某个用户创建了一个文件,默认该文件所在组就是该用户所在组。

  3. chgrp 组名 文件名:将指定的文件所在组修改为指定的组名。

    除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

  4. usermod -g 组名 用户名:将指定用户修改为指定组。

9. 权限管理
  1. rwx的意义
    1. 作用到文件上
      1. r:可读取,可查看。
      2. w:可以修改。
      3. x:可执行。
    2. 作用到目录上
      1. r:可读取,ls查看内容
      2. w:可修改,目录内创建+删除+重命名
      3. x:可进入该目录
    3. 对应的数值
      1. r=>4
      2. w=>2
      3. x=>1
      4. rwx=>7 rw=>5 x=>1
  2. 修改权限
    1. chmod u=rwx,g=rx,o=x 文件目录名:分别给所有者、所在组、其他组设置权限。
    2. chmod o+w 文件目录名:给其他组增加读的权限。
    3. chmod a-x 文件目录名:给所有用户去除执行的权限。
    4. chmod 751:作用同a。
  3. 修改文件所有者
    1. chown 用户名 文件目录名:将指定文件或者目录的权限给指定用户。
    2. chown -R 用户名 文件目录名:将目录及目录下所有文件或目录的权限给指定用户。
    3. chgrp 组名 文件目录名:将指定的文件所在组修改为指定的组名。
    4. chgrp -R 组名 文件名:将指定的目录及目录下所有文件或者目录的权限修改为指定的组名。
10. 任务调度
  1. crontab -e:进入定时任务的设置文件,进行代码编写。
  2. 代码格式:时间+脚本内容。
  3. 时间格式:* * * * *分别代表分钟、小时、天、月、周几。比如
    1. */n * * * *:每n分钟执行一次。
    2. 0 8,12,16 * * * *:代表每天的8时,12时,16时整执行一次。
    3. 0 5 * * * 1-6:代表从周一到周六的每天5点整执行一次。
  4. crontab -r:终止任务调度。
  5. crontab -l:列出当前有哪些任务调度。
  6. service crond restart:重启任务调度。
11. 磁盘分区
  1. 两种分区
    1. mbr:
      1. 最多支持四个分区
      2. 系统只能安装在主分区
      3. 扩展分区要占一个分区
      4. mbr最多只支持2TB,但拥有最好的兼容性
    2. gtp:
      1. 支持无限多个主分区
      2. 最大支持18EB的大容量
      3. windows7 64位以后支持gtp
  2. linux磁盘分区
    1. lsblk -f:查看系统分区详情。(不写后面的-f也可以查看大致基本信息)
  3. 为虚拟机增加一块硬盘
    1. 虚拟机添加硬盘(在vm上操作,依次点击虚拟机->设置->硬盘(SCSI)->添加->下一步->下一步->下一步->下一步->完成->确定)
    2. 分区 fdisk /dev/sdb
    3. 格式化 mkfs -t ext4 /dev/sdb1
    4. 挂载 先创建一个新的文件夹 /home/newdisk ,挂载 mount /dev/sdb1 /home/newdisk。此操作是临时挂载,重启关机之后会失效
    5. 永久挂载:vim /etc/fstab编辑该文件,添加新的挂载命令。
    6. ext4是一种分区类型。
    7. 卸载:在非卸载磁盘外执行 umount 磁盘所在路径(/dev/sdb1)或者磁盘挂载的工作路径(/home/newdisk) 即可。
  4. 磁盘情况查询
    1. df -lh:查询系统整体磁盘使用情况
    2. du -h /目录:查询指定目录占用的大小情况,参数情况:
      1. -s:指定目录占用大小汇总
      2. -h:带计量单位
      3. -a:含文件
      4. –max-depth=1:子目录深度
      5. -c:列出明细的同时,增加汇总值
    3. 统计/home目录下的指定文件:
      1. 文件数目:ls -l /home | grep “^-” | wc -l
      2. 目录数目:ls -l /home | grep “^d” | wc -l
      3. 文件夹下文件个数(包括子文件夹里的):ls -lR /home | grep “^-” | wc -l
      4. 文件夹下目录个数(包括子文件夹里的):ls -lR /home | grep “^-” | wc -l
12. 网络配置
  1. 自动获取
    1. 操作步骤:在虚拟机内部依次点击系统->首选项->网络连接->System eth0->编辑->自动连接。
    2. 缺点:每次获取的ip可能会变化。
  2. 指定固定的ip
    1. 操作:直接修改配置文件来指定ip。编辑/etc/sysconfig/network-scripts/ifcfg-eth0
  3. 查看系统网络情况netstat
    1. netstat
      1. netstat -an:按一定顺序排列输出
      2. netstat -p:显示哪个进程在调用
      3. 一般直接用netstat -anp。
13. 进程管理
  1. ps:查看进程
    1. 字段
      1. PID:进程识别号
      2. TTY:终端机号
      3. TIME:此进程所消耗CPU的时间
      4. CMD:正在执行的命令或进程名
    2. 指令
      1. ps -a:显示当前终端的所有信息
      2. ps -u:以用户的格式显示进程信息
      3. ps -x:显示后台进程运行的参数
      4. 一般使用ps -aux | more
      5. ps -aux | grep xxx:查看xxx服务相关的进程。
      6. ps -ef:查看带有父进程(PPID)的进程信息。e代表所有进程信息,f代表全格式。
    3. 进程树
      1. pstree:以树的形式打印进程信息,直观地查看进程信息
        1. -p:显示进程的PID
        2. -u:显示进程的所属用户
  2. kill/killall:终止进程
    1. kill [选项] 进程号:通过进程号杀死进程
      1. 选项:-9代表强迫进程立即停止
    2. killall 进程名称:通过进程名称杀死进程,支持通配符
  3. 动态监控进程
    1. top
      1. top:显示所有信息,每3s更新一次
        1. 再输入u:输入用户名即可查找对应用户所有的进程。
        2. 再输入k:输入指定进程号即可杀死对应进程。
      2. top -d 10:显示所有信息,每10s更新一次。
      3. top -i:使top不显示任何闲置或者僵死进程。
      4. top -p:通过指定监控进程ID来仅仅监控某个进程的状态。
    2. 交互操作
      1. P:以CPU的使用率进行排序,默认就是这个选项。
      2. M:以内存的使用率排序。
      3. N:以PID排序。
      4. q:退出top。
14. 服务管理
  1. 守护进程:通俗的讲,即为在后台运行的进程。

  2. 管理指令

    1. service 服务名 [start | stop | restart | reload | status]
    2. centos7以后用systemctl代替service。
  3. 查看服务

    1. ls -l /etc/init.d/,显示系统中的所有服务。
    2. 输入setup,选择系统服务,显示服务。其中前缀带*的代表开机就会自动启动。
  4. 服务的运行级别

    1. vi /etc/inittab:在inittab的文件中修改默认级别(id),默认是5。
  5. 系统开机流程

    开机->BIOS->/boot->init进程1->运行级别->运行对应级别的服务

  6. chkconfig指令

    1. chkconfig --list:显示所有服务在各个运行级别下是否运行的信息。
    2. chkconfig 服务名 --list:显示指定服务名在各个运行级别下是否运行的信息。
    3. chkconfig --level 5 服务名 on/off:改变某个服务在某个运行级别下是否运行的状态。
15. 软件包管理
  1. RPM包管理

    1. 介绍

      一种用于互联网下载包的打包及安装工具。它生成具有.RMP扩展名的文件。类似windows的setup.exe。

    2. 简单查询

      1. rpm -qa | grep xx:查询xx是否已经安装。
      2. rpm -qa:查询所安装的所有rpm软件包
      3. rpm -q 软件包名:查询软件包是否安装
      4. rpm -qi 软件包名:查询包信息
      5. rpm -ql 软件包名:查询软件包所有安装的文件路径
      6. rpm -qf 文件名:查询文件属于哪个软件包
    3. 实操

      1. rpm -e (–nodeps) RPM包名:删除指定的RPM包,加–nodeps会强制删除。
      2. rpm -ivh RPM软件包路径:安装指定路径下的RPM软件包。
  2. YUM包管理(前提是联网)

    1. 介绍

      是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖的软件包。

    2. 常用指令

      1. yum list | grep xx:查询yum服务器是否有xx软件
      2. yum install xxx:下载安装指定的yum包

四. Linux实战

1. JavaEE环境配置

2. 大数据环境配置

####1.Shell编程

  1. 什么是Shell?

    shell是一个命令行解释器,为用户提高一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。

  2. shell脚本格式要求

    1. 以#!/bin/bash开头(以bash的方式进行解释)
    2. 脚本需要有可执行权限
  3. shell脚本常用的执行方式

    1. 方式一
      1. 首先用chmod给shell文件分配可执行的权限
      2. 用相对路径或者绝对路径执行该文件
    2. 方式二
      1. 直接输入 sh+shell文件路径即可。
  4. Shell变量

    1. 系统变量

      比如$+“HOME”、“PWD”、“SHELL”、"USER"等等。

    2. 用户自定义变量

      1. 定义变量:变量=值
      2. 撤销变量:unset 变量
      3. 声明静态变量:readonly 变量,注意:不能unset。
    3. 显示当前shell所有变量:直接输入set

    4. 定义变量的规则

      1. 变量名称可以由字母、数字和下划线组成,不能以数字开头。
      2. 等号两侧不能有空格
      3. 变量名称一般习惯为大写
    5. 将命令的返回值赋给变量

      1. A = 'ls-la’反引号,运行里面的命令,将结果返回给变量A
      2. A =$(ls-la)等价于反引号
  5. 设置环境变量

    1. export 变量名=变量值:将shell变量输出为环境变量
    2. source 配置文件:刷新配置文件,让修改后的配置信息立即生效
    3. echo $变量名:查询并输出变量的值
  6. 位置参数变量

    1. 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。
    2. 基本语法
      1. $n:n为数字,0代表命令本身,1-9代表第一个到第九个参数,十以上的参数需要用大括号包含。比如¥{10}。
      2. $*:代表命令行中所有的参数,把所有参数看成一个整体。
      3. $@:代表命令行中所有的参数,不过把每个参数区分对待。
      4. $#:代表命令行中所有参数的个数。
    3. 验证
      1. 首先输入执行命令:比如./myshell.sh 67 89
      2. 则有两个参数和命令本身
        1. $0 =>./myShell.sh
        2. $1=>67
        3. $2=>89
  7. 预定义变量

    1. 什么是预定义变量

      shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

    2. 基本语法

      1. $$:当前进程的进程号PID
      2. $!:后台运行的最后一个进程的进程号PID
      3. $?:最后一次执行的命令的返回状态,如果这个变量值为0,证明上一个命令正确执行,如果为非0,则证明上一个命令执行不正确。
    3. 其他

      1. myshell.sh &:在可执行的sh文件后添加&,使得该脚本在后台运行。
  8. 运算符

    1. $((运算式))
    2. $[运算式]:此法多推荐使用
    3. expr m - n:减
    4. expr m + n:加
    5. expr m \* n:乘
    6. expr m / n:除
    7. expr m % n:取余
  9. 流程控制

    1. if then语法

      1. if [条件判断] ;then 程序 fi。

      2. if [条件判定]

        then

        ​ 程序

        elif[条件判断]

        then

        ​ 程序

        fi

    2. case语法

      case 变量 in

      “条件1”)

      程序

      ;;

      “条件2”)

      程序

      ;;

      *)

      程序

      ;;

      esac

      注意:"*)"代表其他情况

    3. for语法

      1. 语法一

        for 变量 in 值1 值2 值 3…

        ​ do

        ​ 程序

        ​ done

        注意:此处可以区别==$*和$@的作用==

      2. 语法二

        for((初始值;循环控制条件;变量变化))

        do

        ​ 程序

        done

        注意:此处循环控制条件直接用<=>三种符号进行大小判断

    4. while语法

      while [条件判断式]

      do

      ​ 程序

      done

      注意:循环控制条件和条件判断式的区别

      1. 循环控制条件

        直接使用< > =

      2. 条件判断式

        注意空格,中括号与里面的式子两边都有空格。while与中括号也有空格。

  10. 条件判断

    1. 整数的比较
      1. =:字符串比较
      2. -lt:小于
      3. -le:小于等于
      4. -eq:等于
      5. -gt:大于
      6. -ge:大于等于
      7. -ne:不等于
    2. 按照文件权限进行判断
      1. -r:有读的权限
      2. -w:有写的权限
      3. -x:有执行的权限
    3. 按照文件类型进行判断
      1. f:文件存在并且是一个常规的文件
      2. e:文件存在
      3. d:文件存在并且是一个目录
  11. read读取控制台输入

    1. 语法

      read(选项)(参数)

    2. 选项

      -p:指定读取值时的提示符

      -t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了。

      参数:即变量名。指定读取值得变量。

    3. 例子

      read -t 10 -p “your input is” NUM

      echo “your input is $NUM”

  12. shell系统函数

    1. 介绍

      shell编程和其他编程语言一样,有系统函数,当然我们也可以自定义函数。

    2. 两个常用的系统函数

      1. basename

        1. 返回完整路径最后/得部分,常,用于获取文件名。

        2. basename[pathname][suffix]

          basename[string][suffix]

          :basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

        3. suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

        4. 实践

          输入命令basename /root/shell/my.sh .sh

          结果:my

          输入命令basename /root/shell/my.sh

          结果:my.sh

      2. dirname

        1. 返回完整路径最后/的前面的部分,常用于返回路径部分。

        2. dirname 文件绝对路径:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录部分)。

        3. 实践

          dirname /root/shell/my.sh

          结果:/root/shell

  13. 自定义函数

    1. 基本语法

      1. 定义:[function]funname[()]

        {

        ​ Aciton;

        ​ [return int;]

        }

      2. 调用

        直接写函数名:funname

本文参考b站尚硅谷Linux教程视频,做的一个粗略的笔记,仅供参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

creator_gzw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值