Linux基础

Linux基础

shell

shell是用户和Linux(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。

Shell相当于是一个翻译,把我们在计算机上的操作或我们的命令,翻译为计算机可识别的二进制命令,传递给内核,以便调用计算机硬件执行相关的操作;同时,计算机执行完命令后,再通过Shell翻译成自然语言,呈现在我们面前

Bash

shell是运行在终端中的文本互动程序。bash(GNU Bourne-Again Shell)是最常用的一种shell,是当前大多数Linux发行版的默认Shell

bash常用命令

  • clear 刷新屏幕(常用)

    让终端显示向后翻了一页,往上滚动依然能看到之前的内容;ctrl + l可达到同样效果

  • reset 刷新屏幕

    完全刷新终端屏幕,之前输入的操作信息都会被清空,速度较慢

  • pwd 显示当前所在目录路径

  • cd 切换当前工作目录

    • cd命令后不跟路径,表示切换到家目录
    • 所有文件存储在根目录中 /;用户的文件存在家目录中 ~
    • . 表示当前目录;… 表示当前目录的上一层目录
  • ls 显示文件信息

    ls -l 显示文件的详细信息

    ls -a 显示所有文件,包括隐藏文件,以.开头的文件为隐藏文件

    ls -d 文件名 查看该文件或目录是否存在

    ls -F 在目录后增加斜线,用以和文件区分

    ls -al(ls -a -l)ls命令的选项可以多个合到一起使用

    ls /home/abc/.b* 显示abc目录下所有以.b开头的文件

  • touch 创建空白文件

    touch hello.txt 创建文件

    touch -d “2024-1-12 16:26” hello.txt 改变文件日期

  • mkdir 创建空白目录

    mkdir abc

    mkdir -p a/b/c 创建多级目录

  • rm 删除文件或目录

    rm 文件名

    rm -r 目录名 递归删除

    rm -i 询问是否删除

    rm -f 不给提示删除

  • cat 查看文本文件内容(较少)

    cat -n 显示行号

  • more 查看文本文件的内容(较多)

    空格:翻页;回车:下一行

  • head 查看文件的前n行内容

    默认查看前10行

    head -n 20 查看前20行

  • tail 查看文件的后n行内容

    默认查看后10行

    tail -n 20 查看后20行

  • cp 复制文件或目录

    cp 源文件 目标文件

    cp -r 复制目录

  • mv 剪切文件或目录(剪切功能也可用来重命名)

    mv 源文件 目标

  • echo 输出内容到屏幕上

    echo 内容 > hello.txt 输出内容到指定文件里(输出重定向)

    -n 不换行输出

  • chmod 修改权限

    • 符号方式

      u 拥有者 g 组用户 o 其他用户

      chmod g+w abc.txt 给组用户加上写权限

      chmod o-r abc.txt 给其他用户删除读权限

    • 数字方式

      r:4 w:2 x:1

      chmod 764 abc.txt 拥有者可读、写、执行,同组用户可读、写,其他用户可读

  • date 获取日期信息

    date +%y%m%d 仅获取年月日

  • grep 过滤指定信息

    grep 指定信息 检索文件

  • man 查询命令手册

    man 1 ls (按q退出)

常用快捷键

  • 虚拟机中ctrl + 空格 切换中英文
  • ctrl + c结束命令执行
  • shift + v选择行,按下 = 缩进所有选中行
  • ctrl + n 快速补全之前出现过的内容
  • alt + ctrl + t 打开终端窗口,exit退出
  • ctrl+shift+t 并列打开文件

用户和权限

  • 文件的权限

    文件有对应三种用户的权限,依次为文件拥有者(文件的创建者,一般权限较高),组用户(和拥有者同组的用户),其他用户

  • r:可读 w:可写 x:可执行

  • linux系统中,普通用户对资源访问的权限是有限的;linux系统中有一个拥有绝对权限的超级用户root

vim编辑器

vim提供了三种工作模式,任何时候只能处在一种工作模式下,通过vi(vim)打开文件时,初始处于一般模式下

一般模式

可以执行一些简单的操作,如复制、粘贴、剪切

  • 移动光标

    1. 通过方向键移动

    2. 或者使用 h j k l 移动

      h:左 j:下 k:上 l:右

    3. 常用操作

      1. n + gg光标移动到第n行;不加数字直接按gg,光标移动到第一行
      2. G移动光标到最后一行
  • 复制剪切粘贴

    1. n + yy 复制从光标所在行开始连续n行内容
    2. n + dd 剪切从光标所在行开始连续n行内容
    3. p 粘贴 将剪切板内容粘贴到光标所在行之下
    4. y 复制选中的多行内容
    5. d 剪切选中的多行内容
    6. x 向后删除一个字符
  • 撤销和恢复

    1. u 撤销上一步操作
    2. ctrl + r 恢复上一步操作

编辑模式

编写文件内容,按i进入,按o进入自带换行,esc退出

命令模式

可以执行一些更高级的指令,按 : 进入

  • 常用命令

    :w 保存

    :q 退出

    :wq 保存并退出

    :q! 强制退出,不保存

    :set nu 显示行号

    :set nonu 取消行号

    😒/old/new 将光标所在行第一个old替换为new

    😒/old/new/g 将光标所在行所有old替换为new

    :%s/old/new/g 将文件中所有old替换为new

shell脚本

把对shell的操作写入到一个专门的文件中,并让shell一次性执行文件中的内容,这个文件称为shell脚本文件(shell script),后缀为.sh文件

  • #! 表示一个约定标记,告诉系统这个脚本文件用哪种shell执行
  • #表示注释

命令行参数

  • 可以通过命令行参数向shell脚本传递数据,在shell脚本中可以获取命令行上所输入的参数的内容,通过$n,n表示数字,获取具体参数
  • $#表示数据总数(不包括$0),$0表示脚本文件的名字(命令行第一个内容),$1表示第一个参数,$2表示第三个参数

shell变量

在shell脚本中可以定义和使用变量,变量用来临时存储数据,可以在整个脚本中使用,从而使shell脚本更像计算机程序

  • 使用变量
    • 定义变量时可以用 = 给变量赋值,= 左右不能加空格,格式“变量=值”
    • 使用变量时要在变量名前加上$
    • 变量名外加上花括号{}能帮助shell识别变量边界
    • 变量可以重新被赋值
  • 变量的命名规则
    1. 最好做到见名知意
    2. 变量命名时只能使用英文字符,数字和下划线,但首字符不能是数字,变量名中不能有空格
    3. 变量名区分大小写
    4. 变量命名时不能使用shell的关键字
  • shell脚本可以从命令输出中提取信息并赋值给变量
    1. 反引号字符串方式赋值:`var=dat`
    2. ( ) 方式赋值: v a r = ()方式赋值:var= ()方式赋值:var=(date)

常用脚本命令

  • readonly 只读变量,可以使用readonly将变量定义为只读变量,只读变量的值不能被修改、删除
  • unset 删除变量
  • 逻辑运算
    1. && 逻辑与
    2. || 逻辑或
  • read 获取键盘输入,-p选项可提示输入内容,如:read -p “请输入内容” content
  • random 生成随机数,可用取余操作限定范围,如: [ r a n d o m [ random % 100 ]生成0~99之间的随机数, [random[ random % 100 + 1 ]生成0~100之间的随机数

数学计算

以下两种方法只支持整数计算

  1. expr:+加 -减 * 乘 /除 %取余,运算符前后要加空格,其中*符号在shell脚本中有其他含义,需要使用转译字符\

    var3=$(expr $var1 \* $var2)

  2. 使用方括号:将一个数学表达式赋值给某个变量时可以用$和方括号将数学表达式围起来,不需要转译

    var=$[10 + 20]

条件比较

test用来测试某个条件是否成立:某个变量是否有内容、变量值的比较、文件类型。格式:test $a(也可用中括号 ,中括号和条件中要加空格[ $a ])

  • test数值比较
    1. a -eq b 检查a是否与b相等
    2. a -ne b 检查a是否不等于b
    3. a -ge b 检查a是否大于等于b
    4. a -le b 检查a是否小于等于b
    5. a -gt b 检查a是否大于b
    6. a -lt b 检查a是否小于b
  • test字符串比较
    1. str1 = str2 检查str1是否和str2内容相同
    2. str1 != str2 检查str1是否和str2内容不同
    3. str1 < str2 检查str1是否比str2小
    4. str1 > str2 检查str1是否比str2大(>符号前需加转译符\)
    5. 注意:字符串比较不以长短为依据,以字符的ASCII值为准,从前往后依次比较字符大小直到不相等
    6. -n str1 检查str1长度是否非0
    7. -z str1 检查str1长度是否为0
  • test文件比较
    1. -e file 检查文件file是否存在
    2. -d file 检查文件file是否存在并是一个目录
    3. -f file 检查文件file是否存在并是一个文件
    4. -s file 检查文件file是否非空
    5. -r file 检查文件file是否存在并可读
    6. -w file 检查文件file是否存在并可写
    7. -x file 检查文件file是否存在并可执行

流程控制

分支
  • if-then

    if command
    then
    	语句块
    fi
    
  • if-then-else

    if command
    then
    	语句块1
    else
    	语句块2
    fi
    
  • elif

    if command1
    then
    	语句块1
    elif command2
    then
    	语句块2
    elif command3
    then
    	语句块3
    else
    	语句块4
    fi
    
循环
  • for

    for var in list
    do
    command
    done
    
    1. 通常情况下会将一系列值都集中存到一个变量中,然后遍历变量中的数据
    2. 在for循环中,可以使用任何能产生输出的命令来获取数据
  • while

    while test condition
    do
    	语句块
    done
    
  • break:结束循环

  • continue:结束当前循环,继续下一次循环

注意:shell脚本循环中定义的变量在循环外仍可使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值