当前位置: 首页 > news >正文

[日常使用] Shell常用命令

Shell是什么?

Shell简介

Shell是操作系统的外壳,是用户与操作系统内核之间的主要接口。它接收用户的命令并将其传递给内核执行,然后将执行结果返回给用户。Shell不仅是一个命令解释器,也是一种强大的编程语言。常见的Shell分为图形界面Shell和命令行Shell两类,如Windows的资源管理器和cmd命令窗口。不同系统有不同的Shell,比如在Linux系统中常见的是Bourne Again Shell(即bash)。

  • 在Windows系统中,资源管理器(explorer.exe)是图形Shell,而cmd和PowerShell则是命令行Shell。

  • Dos和Cmd区别

  • [日常使用] Windows快捷键组合“Win + R“常用命令

Shell脚本

Shell脚本是由一系列Shell命令组成的文件,利用Shell的功能编写的程序。通过编写Shell脚本,用户可以轻松地执行多个命令,实现批量处理和自动化维护。

Shell用途

  1. 控制进程和文件,以及启动和控制其他程序。
  2. 减少重复输入和交互操作,实现批量处理和自动化维护,减轻管理负担。

日常使用

常用命令总结

  • ls: 列出当前目录的文件清单。

    • ls -a:显示所有文件,包括隐藏文件。
    • ls -l:显示详细文件信息。
  • cd: 切换当前目录。

    • cd /:进入根目录。
    • cd ..:返回上一级目录。
    • cd -:返回上一次的目录。
  • pwd: 显示当前工作目录。

  • mkdir 和 rmdir: 创建和删除目录。

    • mkdir -p /path/to/directory:递归创建目录。
    • rmdir -p /path/to/directory:递归删除目录。
  • cp: 复制文件或目录。

    • cp file1 ../destination:复制文件到另一个目录。
    • cp file1 file2:复制并重命名文件。
    • cp -r directory1 directory2:复制目录并重命名。
  • mv: 移动或重命名文件或目录。

    • mv file1 ../destination:移动文件到另一个目录。
    • mv file1 file2:重命名文件。
    • mv file1 ../destination/file2:移动并重命名文件。
  • rm: 删除文件或目录。

    • rm -i:交互式删除,会提示确认。
    • rm -r:递归删除目录及其内容。
    • rm -f:强制删除文件或目录。
  • du 和 df: 显示磁盘使用情况和剩余空间。

    • du -sh directory:显示目录总大小。
    • du -sh ./*:显示当前目录下所有文件和目录的大小。
  • cat: 查看文件内容。

    • cat file1:显示文件内容。
    • cat file1 file2 > file3:合并文件1和文件2,并保存为文件3。
  • head 和 tail: 显示文件头部和尾部。

    • head -n file:显示文件的前n行。
    • tail -n file:显示文件的后n行。
    • tail -f file:实时查看文件新增内容。
  • wc: 统计文件的行数、字数和字节数。

    • wc -l:统计行数。
    • wc -w:统计字数。
    • wc -c:统计字节数。
  • grep: 在文件中搜索指定模式。

    • grep 'pattern' file:在文件中搜索模式。

    • grep 'pattern' file1 file2:在多个文件中搜索模式。

      Example:

      # 在文件中搜索包含指定关键字(`keyword`)的行,并将匹配到的行输出到标准输出。
      grep 'keyword' file1
      grep 'keyword' file1 file2
      
      • grep 'keyword' file1:这个命令在单个文件file1中搜索包含关键字keyword的行。grep命令会打开文件file1,逐行搜索文件内容,如果找到包含关键字的行,就将该行输出到标准输出。如果file1中有多个匹配行,它们将以原始顺序输出到标准输出。

      • grep 'keyword' file1 file2:这个命令与前一个命令类似,但它在两个文件file1file2中搜索关键字keywordgrep命令会逐个打开这两个文件,逐行搜索文件内容,如果找到包含关键字的行,就将该行输出到标准输出。如果两个文件中都有匹配行,它们将按照文件顺序先后输出到标准输出。

  • 管道和xargs: 用于命令之间的数据传输和处理。

    • command1 | command2:将command1的输出作为command2的输入。

    • command | xargs:将命令输出作为参数传递给另一个命令。

      Example:

      # 这段代码是两个常用的Unix/Linux命令行操作的结合,用于查找特定文件并删除它们。
      ls | grep keyword
      find /path/to/directory -name "*.txt" | xargs rm
      
      • ls | grep keyword:这个命令首先使用ls命令列出当前目录下的所有文件和文件夹,然后通过管道|将其输出传递给grep命令。grep命令用于在输入中搜索包含指定模式(即keyword)的行,并将匹配到的行输出到标准输出。因此,这个命令的作用是在当前目录下搜索包含特定关键字的文件或文件夹。

      • find /path/to/directory -name "*.txt" | xargs rm:这个命令首先使用find命令在指定目录下(/path/to/directory)递归搜索所有以.txt为后缀的文件,并将搜索到的文件名输出到标准输出。然后,通过管道|将这些文件名传递给xargs命令,xargs命令用于构造和执行命令行命令。在这个例子中,xargs将每个文件名作为参数传递给rm命令,rm命令用于删除文件。因此,这个命令的作用是删除指定目录下所有以.txt为后缀的文件。

  • awk: 用于文本处理的强大工具。

    • awk '{print $1}' file:打印文件的第一列。

      Example:

      # 这句命令是一个典型的Unix/Linux命令行管道操作,显示系统中最近5个登录用户的用户名。。
      last -n 5 | awk '{print $1}'
      
      • last:这是一个用于显示系统登录日志的命令。通常,它会列出系统中所有用户的登录历史记录。如果没有参数指定,它会列出所有的登录历史记录。但是,在这个命令中,使用参数-n 5,它告诉last命令只显示最近的5个登录记录。

      • |:这是一个管道符号,它的作用是将一个命令的输出发送到另一个命令的输入。在这个命令中,它将last命令的输出传递给awk命令。

      • awk '{print $1}':这是一个用于文本处理和数据提取的强大工具。在这个命令中,awk将每一行输入作为记录,并根据空格将每行分割成字段(默认情况下,字段分隔符是空格)。{print $1}表示打印每行的第一个字段。

相关文章:

  • PHP+vue+mysql校园学生社团管理系统574cc
  • 【LeetCode】122. 买卖股票的最佳时机 II(中等)——代码随想录算法训练营Day32
  • react渲染流程是怎样的
  • reprod_log复现精度对比小工具
  • sql语句学习(二)--增删改
  • 算法训练营day24(补),回溯4-2
  • Python爬虫 Beautiful Soup库详解#4
  • 5 scala的函数式编程简介
  • LeetCode.145. 二叉树的后序遍历
  • Linux篇:网络基础1
  • SPI控制8_8点阵屏
  • 2024/2/13
  • 【RT-DETR进阶实战】利用RT-DETR进行视频划定区域目标统计计数
  • day 31贪心
  • 动态规划10-完全背包理论(一维数组/二维数组/Java)
  • 4个实用的微服务测试策略
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Centos6.8 使用rpm安装mysql5.7
  • co模块的前端实现
  • create-react-app项目添加less配置
  • Git学习与使用心得(1)—— 初始化
  • LeetCode算法系列_0891_子序列宽度之和
  • Magento 1.x 中文订单打印乱码
  • Map集合、散列表、红黑树介绍
  • Transformer-XL: Unleashing the Potential of Attention Models
  • TypeScript实现数据结构(一)栈,队列,链表
  • underscore源码剖析之整体架构
  • 初识MongoDB分片
  • 从零开始学习部署
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 翻译:Hystrix - How To Use
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 老板让我十分钟上手nx-admin
  • 模型微调
  • 配置 PM2 实现代码自动发布
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 如何在 Tornado 中实现 Middleware
  • 用简单代码看卷积组块发展
  • 自制字幕遮挡器
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​低代码平台的核心价值与优势
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (生成器)yield与(迭代器)generator
  • (转)Android学习笔记 --- android任务栈和启动模式
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core控制台应用程序初识
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET开源快速、强大、免费的电子表格组件
  • .net生成的类,跨工程调用显示注释