风在路上 风在路上
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)

风

摸鱼
首页
导航站
  • Java-Se

    • Java基础
  • Java-Se进阶-多线程

    • 多线程
  • Java-Se进阶-java8新特性

    • java8新特性
  • Java-ee

    • JavaWeb
  • Java虚拟机

    • JVM
  • golang基础

    • golang基础
  • golang框架

    • gin
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • Redis
    • ElasticSearch
    • MongoDB
  • ORM

    • MyBatis
    • MyBatis-Plus
  • Spring

    • Spring
  • SpringMVC

    • SpringMVC1
    • SpringMVC2
  • SpringCloud

    • SpringCloud
  • 中间件

    • RabbitMQ
    • Dubbo
  • 秒杀项目
  • Git
  • Linux
  • Docker
  • JWT
  • 面试
  • 刷题
开发问题😈
设计模式
关于💕
归档🕛
GitHub (opens new window)
  • Git

  • Linux

    • Linux
    • Linux笔记-软件安装/基础
    • Linux笔记-常用基本命令
    • Linux笔记-Shell
      • Shell
        • 编写shell脚本
        • 脚本执行方式
        • Bash基本功能
        • 历史命令
        • 历史命令的调用
        • 命令与文件补全
        • 命令别名
        • 常用快捷键
        • 输入输出重定向
        • 多命令顺序执行和管道符
        • 管道符
        • 通配符和其他特殊符号
        • 通配符
        • 其他特殊符号
  • Docker

  • JWT

  • 工具部署
  • Linux
zdk
2022-01-06
目录

Linux笔记-Shell

Table of Contents generated with DocToc (opens new window)

  • 常用命令:文件搜索命令
    • find命令
  • Shell
    • 编写shell脚本
      • 脚本执行方式
    • Bash基本功能
      • 历史命令
      • 历史命令的调用
      • 命令与文件补全
      • 命令别名
      • 常用快捷键
      • 输入输出重定向
      • 多命令顺序执行和管道符
        • 管道符
      • 通配符和其他特殊符号
        • 通配符
        • 其他特殊符号

# 常用命令:文件搜索命令

# find命令

命令名称: find
命令所在路径:/bin/find
执行权限:所有用户
语法: find[搜索范围][匹配条件]
功能描述:文件搜索
1
2
3
4
5
  • find /ect -name init(是精准搜索)

    find /ect -name * init * 相当于模糊查询; init:以init开头的;init???:已init开头,后面三个字母的。*

    在目录/etc中查找文件int (-iname 不区分大小写);

  • find / -size +204800 在根目录下查找大于100MB的文件;+n:大于 -n:小于 n:等于

  • find /home -user shenchao 在根目录下查找所有者为shenchao的文件;-group根据所属组查找

# Shell

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

    选项:-e : 支持反斜线控制的字符转换

# 编写shell脚本

首先第一行要写

#!/bin/Bash 作为标识,来表示这是一个shell脚本文件

示例:

#!/bin/Bash
#first
#Author: zdk

echo -e "hello world"

#注意:输出内容在双引号中时,不要加!,因为!在shell语法中是有特殊作用的符号;要加的话,用单引号
1
2
3
4
5
6
7

# 脚本执行方式

  • 赋予执行权限,直接运行
    • chmod 755 hello.sh
    • ./hello.sh
  • 通过bash调用执行脚本
    • bash hello.sh

# Bash基本功能

# 历史命令

  • history [选项] [历史命令保存文件] 默认历史命令保存文件在:vim /root/.bash_history

    选项:-c:清空历史命令

    ​ -w: 把缓存中的历史命令写入历史命令保存文件

  • 历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改,其中HISTSIZE变量表示历史命令保存的最大条数

# 历史命令的调用

  • 使用上、下箭头调佣以前的历史命令
  • 使用"!n":重复执行第n条历史命令
  • 使用"!!":重复执行上一条命令
  • 使用"!子串":重复执行最后一条以该字串开头的命令

# 命令与文件补全

  • 在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
  • 按一次如果没有补全,可能证明有多个以此字串开头的命令或文件,再按一下tab,即可弹出命令或文件列表

# 命令别名

  • 设定命令别名:alias 别名='原命令'
  • 查询命令别名 alias
  • whereis 命令,这个语句可以找到命令所在的文件位置
  • 注意命令执行顺序
    • 第一顺位执行用绝对路径或相对路径执行的命令
    • 第二顺位执行别名
    • 第三顺位执行bash的内部命令
    • 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
  • 想要别名永久生效:将别名命令写入 vim /root/.bashrc文件中
  • 删除别名:unalias 别名

# 常用快捷键

  • ctrl+A:把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。
  • ctrl+E:把光标移动到命令行结尾。
  • ctrl+C:强制终止当前的命令。
  • ctrl+H:清屏,相当于clear命令。
  • ctrl+U:删除或剪切光标之前的命令。我输入了一行很长的命令,不用使用退格键一个一个字符的删除,使用这个快捷键会更加方便
  • ctrl+K:删除或剪切光标之后的内容。
  • ctrl+Y:粘贴ctrl+U或ctrl+K剪切的内容。
  • ctrl+R:在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
  • ctrl+D:退出当前终端。
  • ctrl+Z:暂停,并放入后台。这个快捷键牵扯工作管理的内容,我们在系统管理章节详细介绍。
  • ctrl+S:暂停屏幕输出。
  • ctrl+Q:恢复屏幕输出。

# 输入输出重定向

image-20211101133024178

image-20211101133029886

  • 将正确命令的结果重定向写入一个文件,如:ls > abc (>表示每次写入会覆盖原来的内容);如果使用ls >> abc,则不会覆盖,而是在原来的末尾追加上新的内容
  • 将错误命令写入文件:需要在>或>>之前加一个2(代表错误输出重定向,会把报错信息写入指定的文件),注意,2和>、>>之间没有空格,例如:lst 2>> abc

image-20211101133036611

  • 将正确、错误命令都写入到同一文件中:

    如:lst >> bcd 2>&1,ls >> bcd 2>&1(即表示将正误命令信息都写入到文件bcd中)

  • 将所有命令写入一个空的地方,即所有命令的结果都不保存:ls &>/dev/null

  • 将正误命令分开保存: 命令 >>文件1 2>>文件2 (如果命令正确,会被保存到文件1,如果错误,会被保存到文件2)

image-20211101133043002

使用方法:命令 < 文件 把文件作为命令的输入,如:wc < hello.sh

# 多命令顺序执行和管道符

image-20211101133049102

  • dd if=输入文件 of=输出文件 bs=字节数 count=个数 (dd相当于磁盘拷贝命令,可以复制各种文件或进行磁盘复制)

    选项:

    ​ if=输入文件 指定源文件或源设备

    ​ of=输出文件 指定目标文件或目标设备

    ​ bs=字节数 指定一次输入/输出多少字节,即把这些字节看做一个数据块

    ​ count=个数 指定输入/输出多少个数据块

    例子:date;dd if=/dev/zero of=/root/testfile bs=1k count=100000;date

    date中间的命令表示创建一个100m的文件testfile,两个date就可以知道创建所需的时间

  • 前面的命令执行成功,后面的命令才会执行:

    格式:命令1 && 命令2 && 命令3 ......

  • 前面的命令执行失败,后面的命令才会执行:

    格式:命令1 || 命令2 || 命令3 ......:命令 && echo yes || echo no

# 管道符

命令格式:命令1 | 命令2 :命令1的正确输出作为命令2的操作对象

例子:ll -a /etc/ | more、netstat -an | grep "ESTABLISHED"。netstat :查询所有的网络服务

grep命令:grep [选项] "搜索内容"

​ 文件名

选项:-i:忽略大小写

​ -n:输出行号

​ -v:反向查找

​ --color=auto 把搜索出的关键字用颜色显示

grep "hel" ~/Documents/hello.sh
grep -n --color=auto  "hel" ~/Documents/hello.sh
netstat -an | grep ESTABLISHED
1
2
3

# 通配符和其他特殊符号

# 通配符
  1. ? :匹配一个任意字符;例如:ls ?abc:

  2. *:匹配0个或任意多个任意字符,也就是可以匹配任何内容 ;例如:ls *abc,找到任意字符后面有且仅为abc的文件。 ls * abc *即常规意义上的模糊查询

  3. []:匹配括号中任意一个字符。例如:[abc]代表一定匹配一个字符,或者是a或者是b或者是c

  4. [-]:匹配括号中任意一个字符,-代表一个范围。例如:[a-z]代表匹配一个小写字母。ls [ 0-9 ]abc

  5. [^]:逻辑非,表示匹配不是中括号内的一个字符。例如:[ ^0-9 ]代表匹配一个不是数字的字符。

    例如 ls [ ^0-9 ]abc

# 其他特殊符号

' ':单引号、在单引号中所有的特殊符号,如$和`(反引号)等都没有特殊含义,只会是字符

在 GitHub 上编辑此页 (opens new window)
#Linux
最后更新: 2022/10/04, 16:10:00
Linux笔记-常用基本命令
Docker

← Linux笔记-常用基本命令 Docker→

Theme by Vdoing | Copyright © 2022-2025 zdk | notes
湘ICP备2022001117号-1
川公网安备 51142102511562号
本网站由 提供CDN加速/云存储服务
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式