Linux基本命令及shell脚本语法

Linux基本命令

Linux基础知识

1、 网络连接

2. 目录结构

bin:存放常用指令

sbin:存放系统管理员使用的系统管理程序

home:存放普通用户的主目录

root:存放系统管理员的主目录

etc:系统管理所需要的配置文件

boot:启动的文件

lib:最基本的动态连接共享库

dev:将所有硬件用文件的形式存放

usr:存放用户的很多应用程序和文件

tmp:存放临时文件

mnt:让用户临时挂载别的文件系统

opt:主机额外安装软件所存放的目录

var:存放在不断扩充着的东西

3. 常用指令

1. vi和vim

  1. 常用的三种模式
  • 正常模式:

    以vim打开一个档案可以直接进入一般模式,可以使用上下左右按键来移动光标,使用删除字符或删除整行来处理文档内容,复制、粘贴来处理文件数据

    # 创建一个名为hello.java的文件
    vim hello.java
    
  • 插入模式:

    按下i、I、O、o、A、a、r、R等任何一个字母会进入编辑模式

  • 命令行模式:

    • 先输入esc、再输入“:wq”
    • 提供相关指令,完成读取、存盘、替换、离开vim、显示行号等动作

在这里插入图片描述

  1. 快捷键
  • 拷贝当前行 yy ,拷贝当前行向下5行 5yy,并粘贴(输入p)
  • 删除当前行 dd,删除当前行向下5行 5dd
  • 在文件中查找某个单词(命令行下/关键字),回车 查找,输入n查找下一个
  • 设置文件的行号,取消文件的行号(命令行下 :set nu 和 :set nonu)
  • 编辑文件,在一般模式下,使用快捷键到该文档的最末行(g)和最首行(gg)
  • 在一个文件中输入字母,在一般模式下,撤销这个动作 u
  • 编辑文件,在一般模式下,先光标移动,输入 20,再输入shift + g

2. 关机&重启命令

# 立刻进行关机
shutdown -h now

# 1分钟后会关机
shutdown -h 1

# 现在重新启动计算机
shutdown -r now

# 关机
halt

# 现在重新启动计算机
reboot

# 把内存的数据同步到磁盘,无论重启系统还是关闭系统
sync

3. 用户登录和注销

# 注销用户,在图形运行级别无效,运行级别3下有效
logout

4. 添加用户

# 添加用户,默认在该用户的家目录在/home/用户名
useradd 用户名

# 给新创建的用户指定家目录
useradd -d 指定目录 新的用户名

# 指定密码
passwd 用户名

5. 删除用户

# 删除用户,但是保留家目录
userdel 用户名

# 删除用户以及用户主目录
userdel -r 用户名

# 查询用户信息
id 用户名

6. 切换用户

# 切换用户
su -切换用户名

从权限高的用户切换到权限低的用户,不需要输入密码
# 返回原来的用户
exit/logout

# 查看当前用户/登录用户
whoami / who am I

显示第一次登录到的用户

7. 修改用户组

# 新增用户组
groupadd 组名

# 删除组
groupdel 组名

# 添加用户的时候加上组
useradd -g 用户组 用户名

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

运行级别说明:

0:关机

1:单用户 (找回丢失密码)

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

4. 文件目录类

  • pwd pwd

    • 功能:显示当前工作目录的绝对路径
  • ls指令 ls [选项] [目录或是文件]

    • 选项:
      • -a :显示当前目录所有的文件和目录,包括隐藏的
      • -l : 以列表的方式显示信息
  • cd 指令 cd [参数]

    • 功能:切换到指定目录
    • cd ~ 或者 cd :回到自己的家目录
    • cd.. 回到当前目录的上一级目录

    Linux路径中的./ …/

  • mkdir指令 mkdir [选项] 要创建的目录

    • 功能:创建目录
    • -p 创建多级目录
    # 创建单级目录
    mkdir /home/dog
    
    # 创建多级目录
    mkdir -p /home/animal/tiger
    
  • rmdir指令 rmdir [选项] 要删除的目录

    • rmdir删除的是空目录,如果目录下面有内容无法删除
    • rm -rf 要删除的目录 删除非空目录
  • touch指令 touch 文件名称

    • 功能:创建空文件
  • cp指令 cp [选项] source dest

    • 功能:拷贝文件到指定目录

    • 选项:-r:递归复制整个文件夹

    • 补充:强制覆盖不提示的方法:\cp .....

  • rm指令 rm [选项] 要删除的文件或目录

    • 功能:移除文件或目录
    • 选项:
      • -r:递归删除整个文件夹
      • -f:强制删除不提示
    • 补充:强制删除不提示的方法:带上-f 参数即可
  • mv 指令

    • 功能:移动文件与目录或重命名
    • 语法:
      • mv oldNameFile newNameFile 重命名
      • mv /temp/movefile /targetFolder 移动文件
  • cat 指令 cat [选项] 要查看的文件

    • 功能:查看文件,但不允许修改
    • 选项: -n:显示行号
    • 补充:
      • 一般与管道命令进行结合: 管道命令 | more 管道命令:将前一个的结果交给下一个命令处理
  • more 指令

    • 功能:是一个基于VI编辑器的文本过滤器,以全屏幕的方式按照页显示文本文件的内容。

    • 其中含有的快捷键

      在这里插入图片描述

  • less 指令

    • 功能:用来分屏查看文件内容,与more相似,但是支持各种显示终端。less指令在显示文件内容的时候,不是一次将整个文件加载之后显示,而是根据显示需要加载的内容,对于大型文件效率较高。

    • 语法: less 要查看的文件

      在这里插入图片描述

  • echo 指令 echo [选项] [输出内容]

    • 功能:输入内容到控制台
  • head 指令

    • 功能:显示文件的开头部分内容,默认情况下显示文件的前10行内容
    • 语法:
      • head 文件 查看文件头10行内容
      • head -n 5 文件 查看文件头5行内容,5可选
  • tail 指令

    • 功能:输出文件中尾部的内容,默认显示文件的后10行内容
    • 语法:
      • tail 文件:查看文件尾10行的内容
      • tail -n 5 文件 查看文件尾5行内容,5可选
      • tail -f 文件 实时追踪该文档的所有更新
  • > 指令 和 > > 指令

    • 功能: > 输出重定向 > > 追加
    • 基本语法:
      • ls -l > 文件 列表的内容写入文件中,覆盖写
      • ls -al >> 文件 列表的内容追到文件的末尾
      • cat 文件1 > 文件2 将文件1的内容覆盖到文件2
      • echo "内容" >> 文件 追加
  • ln 指令 ln -s [原文件或目录] [软链接名]

    • 也称为符号链接,可以理解为快捷方式,主要存放了链接其他文件的路径
    • 功能:给原文件创建一个软链接

5. 时间日期类

  • date指令
    • 功能:显示当前日期
    • 语法:
      • date 显示当前时间
      • date +%Y 显示当前年份
      • date +%m 显示当前月份
      • date + %d 显示当前是哪一天
      • date + %Y-%m-%d %H:%M:%S 显示年月日时分秒

6. 搜索查找类

  • find 指令
    • 功能:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
    • 语法:find [搜索范围] [选项]
    • 选项说明:
      • -name <查询方式> 按照指定的文件名查找模式查找文件
      • -user <用户名> 查找数据指定用户名所有文件
      • -size <文件大小> 按照指定的文件大小查找文件

在这里插入图片描述

  • locate 指令
    • 功能:
      • 可以快速定位文件路径,利用事先建立的系统中所有文件名称已经路径的locate数据库实现快速定位给定的文件
      • 无需遍历整个系统文件,查询速度较快
    • 基本语法:locate 搜索文件
    • 补充:由于基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
  • which指令 which 指令
    • 功能:查看某个指令在哪个目录下
  • grep指令和 管道符号|
    • 功能:grep过滤查找; | 管道符,表示将前一个命令的处理结果输出传递给后面的命令处理
    • grep [选项] 查找内容 源文件
    • 选项:
      • -n : 显示匹配行及行号
      • -i :忽略字母大小写

7. 压缩和解压类

  • gzip/gunzip 指令

    • 功能:gzip 用于压缩文件,gunzip用于解压
    • 语法:
      • gzip 文件 压缩文件,只能将文件压缩为*.gz文件
      • gunzip 文件.gz 解压缩文件命令
  • zip/unzip 指令

    • 功能:zip用于压缩文件,unzip用于解压
    • 基本语法:
      • zip [选项] xxx.zip 将要压缩的内容 压缩文件和目录指令
      • unzip [选项] xxx.zip 解压缩文件
    • 选项:
      • zip常用选项 -r:递归压缩,即压缩目录
      • unzip常用选项 -d<目录> 指定解压后文件的存放目录

在这里插入图片描述

  • tar指令

    • 功能:是打包指令,最后打包的文件是.tar.gz的文件
    • 语法: tar[选项] xxx.tar.gz 打包的内容 打包目录,压缩后的文件格式.tar.gz
    • 选项:
      • -c :产生.tar打包文件
      • -v:显示详细信息
      • -f :指定压缩后的文件名
      • -z : 打包同时压缩
      • -x : 解包.tar文件

    在这里插入图片描述

-c是指切换到指定的目录

Linux组基本介绍

分类:所有者、所在组、其他组、改变用户所在组

文件/目录 所有者

  • 查找文件的所有者
    • 指令:ls -ahl
  • 修改文件所有者
    • 指令:chown 用户名 文件名

当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组

  • 查看文件/目录所在组
    • 指令:ls -ahl
  • 修改文件所在的组
    • 指令:chgrp 组名 文件名

在这里插入图片描述

其他组

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

改变用户所有组

在添加用户时,可以指定将该用户添加到哪个组,同样的用root的管理权限可以改变某个用户所在的组

  • 改变用户所在组
    • usermod -g 新组名 用户名
    • usermod -d 目录名 用户名 改变该用户登录的初始目录
      • 用户需要有进入到新目录的权限

权限的基本介绍

0-9位说明

  1. 第0位确定文件类型(d,-,l,c,b)

    l 是链接,相当于win的快捷方式

    d是目录,相当于win的文件夹

    c是字符设备文件,鼠标、键盘

    b是块设备,比如硬盘

  2. 第1-3位确定所有者拥有该文件的权限 --User

  3. 第4-6位确定所属组拥有该文件的权限 --Group

  4. 第7-9位确定其他用户拥有该文件的权限 --Other

rwx权限详解

  • rwx作用到文件
    • r:代表可读,可以读取、查看
    • w:代表可写,可以修改,但是不代表就可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
    • x:代表可以执行
  • rwx作用到目录
    • r:代表可读,可以读取、ls查看目录内容,列举文件夹下的文件
    • w:代表可写,可以修改,对目录内创建+删除+重命名目录
    • x:代表可以执行,可以进入该目录

r = 4,w = 2,x = 1可以使用数字

  • chmod 修改权限

    • 功能:可以修改文件或者目录的权限
    • u:所有者 g:所有者 o:其他人 a:所有人
    • 方式1:+、-、=变更权限 +是赋予权限,-是撤销权限
    • 方式2:通过数字变更权限 chmod 751 文件目录名
  • -chgrp 修改文件/目录所在组

    • 语法:chgrp newgroup 文件/目录 [改变所在组]
    • 修改目录下所有的文件和目录的所在组 加上选项 -r
  • crond 任务调度

    • 功能:进行定时任务的设置

    • 语法:crontab [选项]

      • -e:编辑crontab定时任务
      • -l:查询crontab任务
      • -r:删除当前用户所有的crontab任务
    • service crond restart 重启任务调度

    • 参数细节说明

      • 5个占位符

        在这里插入图片描述

      • 特殊符号的说明

        *:代表任何时间

        ,:表示不连续的时间

        -:代表连续的时间范围

        */n:代表每隔多久执行一次

  • at指令

    • 命令格式:at [选项] [时间] ctrl + D结束命令的输入(两次)

    • 选项:

    • 在这里插入图片描述

    • 功能:

      • 是一次性定时计划任务,at的守护进程atd会以后台的模式运行,检查作业队列来运行
    • atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间;如果时间与当前时间匹配,则运行该作业

    • 是一次性定时计划任务,执行完一个任务后不再执行此任务

    • 使用at命令时,要保证atd进程的启动,可以使用指令ps -ef | grep atd

    • 定时方法:

      • 接受在当天的hh:mm式的时间制定
      • 使用midnight(深夜)、noon(中午)、teatime(饮茶时间)等比较模糊的词语来指定
      • 采用12小时计时制,在时间后面加上AM(上午)或PM(下午)来说明
      • 使用相对计时法,格式:now + count time-units,now是当前时间、time-units是时间单位(minutes、hours、days、weeks) count是时间的数量
      • 直接使用today、tomorrow指定命令完成时间

在这里插入图片描述

shell 脚本

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

1. 执行方式

脚本格式要求:

  1. 以#!/bin/bash开头
  2. 脚本有可执行权限

脚本常用的执行方式:

  1. 输入脚本的绝对路径/相对路径(前提:脚本有可执行的权限)
  2. 不用赋予脚本执行权限,直接执行 sh + 脚本

2. Shell的变量

  1. Shell变量分类:

    系统变量: H O M E 、 HOME 、 HOMEPWD、$SHELL、 $USER等

    显示当前Shell中所有变量:set

  2. shell变量的定义

    1. 定义变量:变量名=值
    2. 撤销变量:unset 变量
    3. 声明静态变量:readonly变量
  3. 定义变量的规则:

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

    • A=`date `反引号,运行里面的命令,并把结果返回给变量A
    • A=$(date) 等价于反引号
  5. 设置环境变量

    基本语法:

    • export 变量名=变量值 (将shell变量输出为环境变量/全局变量)
    • source 配置文件 (让修改后的配置信息立即生效)
    • echo $变量名 (查询环境变量的值)

    shell脚本多行注释 :<<! 内容!

  6. 位置参数变量

    执行一个shell脚本时,希望获取到命令行的参数信息,可以使用到位置参数变量

    基本语法:

    $n(n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十个以上的参数,使用大括号包含${})

    $*(变量代表命令行中所有的参数,$*将所有的参数看成一个整体)

$@(变量代表命令行中所有的参数,$@把每个参数区分对待)

$#(变量代表命令行中所有参数的个数)

  1. 预定义变量

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

    基本语法:

    $$(当前进程的进程号 PID)

    $!(后台运行的最后一个进程的进程号 PID)

    $?(最后一次执行的命令的返回状态,如果是0证明上一个命令正确执行)

3. shell脚本的编写

  1. 运算符

    基本语法:

    1. ( ( 运算式 ) ) " 或 " ((运算式))" 或 " ((运算式))""[运算式]”
    2. expr m + n表达式,运算符之间要有空格,希望将结果赋给某个变量,使用``
    3. expr \*、/ 、% 乘、除、取余

在这里插入图片描述

2、条件判断

  • 判断条件

    • 常用判断条件 = 字符串比较
    • 两个整数的比较
      • -lt 小于
      • -le 小于等于
      • -eq 等于
      • -gt 大于
      • -ge 大于等于
      • -ne 不等于
    • 按照文件权限进行判断
      • -r 读权限
      • -w 写权限
      • -x 执行权限
    • 按照文件类型进行判断
      • -f 文件存在且是一个常规的文件
      • -e 文件存在
      • -d 文件存在且是一个目录
  • 基本语法

    # 单分支
    if [ 条件判断式 ]  //注意有空格
    then
    代码
    fi
    
    # 多分支
    if [ 条件判断式 ]
    then
    代码
    elif [ 条件判断式 ]
    then
    代码
    fi
    
  1. case语句

    case $变量名 in
    "值1")
    如果变量的值等于值1,则执行程序1
    ;;
    "值2")
    如果变量的值等于值2,则执行程序2
    ;;
    ...其他分支...
    *)
    如果变量都不是以上的值,则执行此程序
    ;;
    esac
    

在这里插入图片描述

  1. while循环

    while [ 条件判断式 ]
    do
    程序
    done
    
  2. read读取控制台输入 read (选项) (参数)

    选项:

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

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

    参数:

    变量:制定读取值的变量名

在这里插入图片描述

  1. 函数

    系统函数:basename 基本语法

    功能:返回完整路径最后/的部分,常用于获取文件名

    basename [pathname] [suffix]

    功能:basename会删除所有前缀,包含最后一个’/'字符,然后将字符显示出来

​ dirname基本语法

功能:返回完整路径最后/的前面的部分,常用语返回路径部分

dirname 文件绝对路径

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

补充:

# 显示当前用户所在的目录
pwd

# 查看所有历史命令
histroy
# 查看最近的10条历史指令
history 10

#执行曾经执行过的第5条指令
!5
  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值