Linux基础知识-(tab、shell命令、vim、alias、标准输入,输出与通配符)~19-07.24

本文详细介绍了 Linux 系统中的 Shell 命令操作,包括 tab 补全、历史命令管理、别名设置、变量使用等。此外还讲解了 vim 编辑器的基本用法,以及如何进行标准输入输出的重定向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、系统基础管理和维护

1.1、tab补全

  • 命令补全:
    shell程序在接受到用户执行命令的请求,分析完成后,最左则的字符串会被当做命令;查找内部命令;根据PATH环境变量中设定的目录,自左向右逐个搜索目录下的文件名。
    给定的打头字符串如果能唯一标识某命令程序文件,则直接补全;不能唯一标识某命令程序文件,再按tab键一次,会给出列表。
  • 路径补全(和命令机制不一样)
    在给定的起始路径下,以对应路径下的打头字符串逐一匹配起始路径下的每个文件。
    tab 补全
    tab一次输入的内容能够唯一标识,直接跳出命令;输入内容不能唯一标识,再tab,显示出所有匹配的命令
    tab命令补全的原理:vi,系统根据环境变量$PATH去文件下寻找命令

1.2、shell命令操作:

​ ctrl+a 光标移至最前边

​ ctrl+e 光标移至最后边

​ ctrl+k 删除光标后边内容

​ ctrl+u 删除光标前边内容

​ ctrl+l 清屏

​ ctrl+r 搜索历史命令

​ ctrl+c 停止当前正在运行的程序

1.3、vim操作:
1.3.1、vim,命令模式下

  • 光标移动
    h:左
    l:右
    j:下
    k:上
    (数字+h/l/j/k 移动多少格)
    w跳到下一个单词的开头
    e跳到下一个单词的末尾
    b跳到上一个单词的开头
    数字+w/e/b/ 跳多少格
    ctrl+f、shift+PgDo:向下翻页
    ctrl+b、shift+PgUp:向上翻页
  • 在一行中
    跳到行首:ctrl+home(跳到最前边)、0(跳到最前边) 、>(略过行首空格)
    跳到行尾:end、shift+$
  • 在行间
    gg:跳到行首
    shift+g:跳到行尾
    :set nu:显示行号
    行号+gg:跳到指定行
  • 删除
  • x、delete:删除光标所在行的字符
  • dd:删除整行
  • 数字+dd:删除当前行开始后的几个
  • 行间之间的删除:
    光标之后;D、d+$
    光标之前:d+^
  • 复制、粘贴
  • yy复制光标所在行
  • 数字+yy复制光标及光标以下的几行
  • p粘贴在光标下边
  • shift+p粘贴在光标上边
  • 查找
  • /要查找的内容 从上到下,光标所在位置
  • ?要查找的内容 从下到上,光标所在位置
  • 替换
  • r:替换光标所在字符
  • R:整体替换字符
  • 撤销
  • u:撤销一次操作
  • 数字+u:撤销多次操作
  • ctrl+r:恢复上一次撤销操作
  • . 重复上一次操作
  • 可视化
  • v:按照字符选择
  • V:按照矩形选择,选一行
  • ctrl+v:按照字符选择,可以上下左右选择区域大小

1.3.2、命令模式——>编辑模式

  • i、I
    i:光标前插入
    I:行首插入
  • a、A
    a:光标后插入
    A:行尾插入
  • o、O
    o:在下一行插入
    O:在上一行插入

1.3.3、末行模式

  • :w+路径+文件名 另存为到路径下文件
  • :e 文件路径/文件名 打开一个新的文件
  • e ~/passwd1 ==>e /root/passwd ==>e ./passwd
  • r /文件路径/文件名 读入一个文件内容
    r /etc/passwd
  • s /old/new/ 替换光标所在行的第一个匹配的字段
    s /old/new/g 替换光标所在行的所有字段
  • 行号1,行号2 s/old/new/ 替换指定行间所在行的第一个匹配的字段
    行号1,行号2 s/old/new/g 替换指定行间所在行的所有字段
  • % s /old/new/ 替换全文所在行的第一个匹配的字段
    % s /old/new/g 替换全文所在行的所有字段
    % s /old/new/gc 提示用户是否替换全文所在行的
    % s /old/new/gci

1.3.4、打开文件

  • vim
  • vim +行号
  • vim+/关键字+文件名
    (从上次光标所在位置以后开始匹配编辑)

1.3.5关闭文件

  • ZZ,命令模式关闭

1.4、history

  • !10 !+历史命令的列表行数
  • !$ 执行最后一次的历史命令
  • help history 查看帮助
  • history -w 把历史命令列表同步到历史命令文件中
  • echo $HISTFILE查看历史命令文件位置
  • 如何设置历史命令的保存数量
    ​echo $HISTFILE
    vim /ect/profile
    ​HISTSIZE=1000
    ​ :wq
    ​ source /etc/profile 重新加载这个文件
  • 如何设置历史命令的时间戳,和使用用户
    (时间戳:一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一标识某一刻的时间。)
    在这里插入图片描述

1.4、alias命令

  • [root@localhost ~]# alias net=“vim /etc/sysconfig/network-scripts/ifcfg-eth0” #定义别名
  • [root@localhost ~]# unalias net #取消别名
    (临时别名查看不了)
  • [root@localhost ~]# \net #跳过别名
  • 让别名永久生效
    [root@localhost ~]# vim /etc/bashrc
    ​alias net=“vim /etc/sysconfig/network-scripts/ifcfg-eth0”
    ​:wq
    ​[root@localhost ~]# source /etc/bashrc

1.5、变量

  • vi test 写一个文件
  • sh test 执行文件

  • #!/bin/bash
    who=whoami #全局变量,作用于当前文件
    ​test(){
    ​IP=‘192.1668.254.125’ #局部变量,作用于一行代码,或者代码块
    ​#ping $IP
    ​echo $who
    ​}
    #test
    ​ping $IP
    ​环境变量:针对于当前的shell下的所有进程及子进程都生效

1.6、标准输入输出

  • >filename 标准输出到文件
    [root@localhost ~]# ls >file1

  • 把filename覆盖输出到test >filename>test

  • 把filename追加输出到test >filename>>test

  • 2> eername 错误输出到文件
    [root@localhost ~]# mysql 2>err

  • 1>filename 2>eernamed
    将标准输出到filename文件,错误输出到errname文件

  • 标准输入到文件file3
    [root@localhost ~]# ll > test1
    [root@localhost ~]# ll >>test1
    [root@localhost ~]# fdisk 2>test2
    [root@localhost ~]# fdisk 2>>test2
    [root@localhost ~]# ll anaconda-ks.cfg anaconda-ks1.cfg >test3 2>test4
    [root@localhost ~]# ll anaconda-ks.cfg anaconda-ks1.cfg &>test5
    可以将错误信息或者普通信息都重定向输出
    [root@localhost ~]# ll anaconda-ks.cfg anaconda-ks1.cfg >>test5 2>&1
    将标准错误也输出到标准输出当中
    在这里插入图片描述
    扩展

  • $?判断上一条命令执行是否成功,若成功,返回;失败,返回非0;

  • #! /bin/bash
    IP=‘192.168.108.3’
    ping -c1 $IP &>/dev/null
    if [ $? -eq 0 ]
    then
    echo ‘tong…’
    fi

  • pwd 显示当前路径

  • pwd -P显示链接文件的真实路径

1.7、特殊符号,通配符

  • [] 匹配括号里边的内容
    [^] 匹配括号里边没有的内容
  • 匹配所有字母
    [A-Z]和[[​:alpha:​]]
  • 匹配小写字母
    [a-z]

  • 匹配一个数字
    [0-9]
    [[:digit:]]
  • 同时创建多个文件 touch test{m…n} 创建testm-testn
  • 同时查询多个文件 ll test[m-n] 查询testm-testn
  • 同时显示多个 echo {0…20} 显示出0-20
  • “|”:把上个命令的执行结果交给了下一个命令继续处理
    [root@localhost ~]# ll |grep err
    [root@localhost ~]# ip a |grep inet
  • “tee”把过滤的结果打印到文件中
  • “…” 代表上级目录
    [root@localhost test]# ll …/
  • “.” 代表当前目录
    [root@localhost test]# ll ./
  • List item";" 代表多条命令的分割
    [root@localhost test]# a=abc;echo $a
  • " `` " 把内容还原成命令
    [root@localhost test]# a=‘ls’;echo $a
  • “?” 匹配单个任意字符
    [root@localhost ~]# ll te?
    -rw-r–r--. 1 root root 0 7月 23 16:37 tec
    -rw-r–r--. 1 root root 0 7月 23 16:34 tes
  • " 表示匹配所有
    [root@localhost ~]# "
    ” 表示匹配所有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值