shell备忘录

news/2024/12/16 0:23:41/文章来源:https://www.cnblogs.com/euler-blog/p/18608957
  1. 表格对齐显示

    #!/bin/bash
    (
    printf "permissions links owner group size data HH:MM fileName\n"
    ls -l / | sed 1d
    ) | column -t
    #ls -l 第一行会显示有多少文件,所以管道符 sed 1d 是删除第一行的数据
    #column -t 自动将输入的数据对齐显示

命令集合

  1. () 可以把多个命令在一起执行。如果在一行显示,中间必须要用逗号隔开。
  2. $(命令) 可以讲一个命令的执行结果作为另外一个命令的参数,而不是输入
  3. expr 除了可以完成基本的运算,还可以完成关于字符串的操作。expr 进行乘法运算时,要使用*
  4. column -t 可以格式化数据,并生成一个整齐的表格
  5. sed 1d 可以删除结果中的第一行数据
  6. 命令行中可以直接在 “命令” ,写法是双引号中间使用``
  7. read 等待用户输入命令。read -p “提示语” 变量1 变量2 变量3。会对用户输入的数据会以空格为分割符分割为多个变量的值
  8. readonly VERSION =1.0 定义一个只读变量,整个执行过程是不允许被修改的
  9. unset VERSION 删除一个变量。注意删除一个只读变量会失败的。
  10. cut 可以删除无关的数据。cut -c2 保留第二个字符以后的数据
  11. grep "^_" 匹配以下划线开有的数据
  12. head -5 显示前五行数据
  13. paste -d':' 文件1 文件2 文件3 |cat -n .将不同文件相同行用冒号连接起来
  14. uniq 去重功能,显示文件中不重复的行列数据
  15. tr 将标准输入的数据,转换后显示。相当于正则匹配并替换功能
  16. sort 对文档内容以行为单位进行排序。
  17. nohup 表示在后台运行的程序,当执行exit退出的时候,不会终止后台的运行的程序
  18. 尾部加& ,当作执行一个耗时的命令操作的时候,可以将执行挂在后台执行
  19. jobs 查看当前终端的后台进程
  20. bg %1 可以将挂起的进程移动到后台继续运行
  21. fb %1 将挂起的进程重新返回的前台运行
  22. ps -ef 查看系统中当前运行的所有进程
  23. kill 和killall 干掉进程
  24. 每一个进程 都会默认打开三个文件,或者说是文件描述符。分别对应的标准的输入、输出、错误输出。文件描述符的编号分别是0,1,2
  25. > 和>> 覆盖和追加内容到指定的文件中
  26. < 输入重定向、
  27. ./input.sh < /etc/password ,input.sh中,通过read oneline 内置函数,可以读取password文件中的一行数据。
  28. 错误重定向 &> outputfile
  29. 无用的日志信息可以选择重定向到 /dev/null中。/dev/null是系统中一个特殊的文件,它表示一个空的设备,但实际上是没有这样的硬件设备的,它好比是一个黑洞,只要你把这个数据丢进去,那这个数据就会消失。
  30. >&2 是将信息重定向到标准的错误输出
  31. mv 是移动,也是重命名
  32. cp scp
  33. ssh 我是谁@我在哪
  34. printf "" 标准输出内容
  35. 变量名一般大写,前后没有空格
  36. 数组 array[index]=value,也可以使用array=(value0 value1 value2),
  37. unset array[index] 删除素组中的某一个元素,unset array是删除整个数组。unset array[*] = unset array[@] = unset array
  38. 当在shell中执行一个命令,shell会启动一个子进程来运行程序,同时会吧一些变量的设置传递给被启动的子进程中,这些被传递的变量就是环境变量。与环境变量对应的变量是本地变量。之所以叫做本地变量,是因为这些变量被限制在shell进程中。就算在启动子进程,这些变量是不会被专递到子进程中的。
  39. 环境变量的导出:name=value;export name1 name2 name3.除了这样的定义方式,还支持如下定义方式:export name=value
  40. 例如:export PATH=${PATH}:/software/tools:/software/platform-tools
  41. shell启动默认的特殊变量,如下:
    1. home:当前用户的主目录,直接cd进去的目录
    2. shell:当前用户所使用的shell程序,如/bin/bash
    3. user:当前的登录用户名
    4. uid:扩展为当前用户数字的user id
    5. bash_version:当前用户使用的bash版本
    6. pwd:当前工作目录
    7. oldpwd:前一个工作目录、
    8. second:当前shell执行了多长时间。每次引用这个变量都会返回一个整数值;
    9. shlvl:当前是第几层的子进程
    10. random: 脚本中引用这个变量的时候,随机生成一个0到32767之间的整数
    11. ifs:
    12. path:到哪个目录去搜索可执行文件
  42. env 查看当前的环境变量
  43. 执行脚本需要传入参数的时候,这时候可以使用位置变量。位置变量的名字是从0开始的,可以使用$0...进行访问,需要注意的使用,$0表示的是命令或者脚本本身,真正的参数是从$1 开始算起的。
  44. $# 获取参数的个数
  45. $@ 和$* 的区别
  46. $? 每一个命令或者脚本结束运行以后都会返回一个0到255之间的数值,用来表示成功与否。0表示成功,其他表示失败。这个结果被保存在$? 变量中. 变量大于10 应该使用$
  47. $$ 表示当前脚本所在进程的pid
  48. 替换 在双引号之间可以使用``执行命令,作为结果输出,但更推荐使用$()的方式
  49. 只要操作的是文件,都可以使用通配符。如:? * ,[a-z] [^ab]例如:ls [ab]*
  50. shell支持这几种通配符。 和正则表达式一样的。
    1. *:表示0个或者多个任务字符
    2. ?:匹配一个任意字符
    3. []:自定范围匹配一个
  51. 算术运算替换使用 $(()) ,只能进行整数运算,结果中的小数部分会被忽略
  52. 特殊符号要转义。例如:& > < ,使用斜杠转义。转义的字符如下:
    1. ~ 用户的主目录
    2. ` 命令替换
    3. # 注释
    4. $ 变量引用
    5. & 任务放在后台执行
    6. * 通配符任意一个
    7. ? 通配一个字符
    8. () 在子shell中执行
    9. \ 引用后面的一个字符
    10. | 管道
    11. [] 指定字符集通配符
    12. {} 创建一个命令快
    13. ;“” ‘’ > <
  53. 特殊转义符号的意义:
    1. \b 打印一个backspace
    2. \c 不在输出后面的字符
    3. \n 打印换行符
    4. \t 打印水平制表符
    5. \v 打印垂直制表符
  54. 函数
  55. find [path] [expression]
  56. find -mtime 根据修改时间查找。-mtime n:修改的时间等于n;-mtime +n:修改的时间多于n天;-mtime -n:修改的时间少于n天
  57. locate通过本地数据库来检索文件名,而不像find直接访问文件系统
  58. whereis 或者which 可以查找可执行的程序
  59. file 命令可以查看文件的详细信息
  60. dd
  61. bzip2 /bzip/gzip/xz 等压缩命令,对应的解压缩命令: bunzip2/bunzip/gunzip/unxz 等
  62. tar -cvf aaa.tar filename dirname 只是打包
  63. tar -czvf aaa.tar.gz dirname 打包并压缩
  64. tar -xzvf aaa.tar.gz 解压
  65. wget curl 通过网络下载文件
  66. 信号量trap
  67. sed 处理文本
  68. awk 执行的操作要卸载模式后面的{} 中
  69. awk 'script' files
  70. awk /pattern/{actions} file .pattern 是一个正则表达式,表示对匹配的行执行action操作,多个操作之间用分号隔开。在action可以通过$1 $2 等直接访问第几个字段数据,默认是用空格分隔的,也可以指定分隔符
  71. grep [options] [regular expression] [filename...] .表示在filename中搜索表达式的值,然后把匹配的行的数据返回。
  72. /bin/bash -n a.sh 表示debug模式,检查语法是否有错,不真正的执行
  73. /bin/bash -x a.sh 打开trace模式

磁盘文件系统

  1. 磁盘的组成部分
    1. 圆形的磁盘盘(主要记彔数据癿部分);
    2. 机械扃臂,不在机械扃臂上癿磁盘读叏头(可擦写磁盘盘上癿数据);
    3. 主轴马达,可以转劢磁盘盘,讥机械扃臂癿读叏头在磁盘盘上读写数据。
  2. 磁盘盘的组成部分
    1. 扇区;最小物理存储单元。每个扇区是512byte
    2. 扇区组成磁柱
    3. 第一个扂区最重要,里面有:(1)主要开机区(Master boot record, MBR)及分割表(partition table), 其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。
  3. 为什么要进行格式化
    1. 因为每一种操作系统所使用的文件系统格式不一样(filesystem)
    2. linux 默认使用ext2,而window不会识别这种文件系统格式
  4. 一个partition,也就是一个分隔槽只能被格式化成为一个文件系统。一个硬盘可以有多个partition,所以也就可以对应格式成为多个文件系统
  5. RAID磁盘阵列可以将多个partition格式成为一个文件系统。也可以将多个槽合并为一个文件系统
  6. 每一个文件系统都有固定的三块区域来存放不同的数据
    1. superblock:记彔此 filesystem 癿整体信息,包括 inode/block 癿总量、使用量、剩余量, 以 及文件系统癿格式不相关信息等;
    2. innode:记彔档案癿属性,一个档案占用一个 inode,同时记彔此档案癿数据所在癿 block 号 码;
    3. block:实际记彔档案癿内容,若档案太大时,会占用多个 block 。
  7. 由亍 Ext2 是索引式文件系统,基本上丌太需要帯帯迚行碎片整理癿。
  8. Ext2 文件系统在格式化癿时候基本上是区分为多个区块群组 (block group) 癿,每个 区块群组都有独立癿 inode/block/superblock 系统。感觉上就好像我们在当兵时,一个营里面有分成 数个连,每个连有自己癿联绚系统, 但最终都向营部回报连上最正确癿信息一般!这样分成一群群癿 比较好管理啦!整个来说,Ext2 格式化后有点像底下这样:
  9. dumpe2fs /dev/hdc2命令可以查看分区槽的使用的情况。默认查询的是superblock
  10. df 可以查看当前挂载的设备
  11. 对于系统存储数据很大的情况下,不是partition越大越好。越大的partition 在存储不连续的情况下,读取数据磁头移动的距离就越远
  12. 当系统加载一个文档到内存后,如果改文档没有修改过,则内存段的数据会被称干净的数据。但如果内存中癿档案数据被更改过了(例如你用 nano 去编辑过这个档案),此时该内存中癿 数据会被讴定为脏癿 (Dirty)。此时所有癿劢作都还在内存中执行,幵没有写入到磁盘中! 系统会丌定 时癿将内存中讴定为『Dirty』癿数据写回磁盘,以保持磁盘不内存数据癿一致性。 你也可以利用第五 章谈到癿 sync 挃令来扃劢强迫写入磁盘。
    1. 系统会将帯用癿档案数据放置到主存储器癿缓冲区,以加速文件系统癿读/写;
    2. 承上,因此 Linux 癿物理内存最后都会被用光!这是正帯癿情冴!可加速系统效能;
    3. 你可以扃劢使用 sync 来强迫内存中讴定为 Dirty 癿档案回写到磁盘中;
    4. 若正帯关机时,关机挃令会主劢呼叨 sync 来将内存癿数据回写入磁盘内;
    5. 但若丌正帯关机(如跳电、当机戒其他丌明原因),由亍数据尚未回写到磁盘内, 因此重新吪劢后 可能会花徆多时间在迚行磁盘检验,甚至可能寻致文件系统癿损毁(非磁盘损毁)。
  13. fdisk /dev/hdc 会提示输入m查看帮助信息。结合提示进行操作。fdisk只能在root用户下才能操作。
  14. 分割完成以后,就应该进行格式化了。mkfs [-t 文件系统格式] 装置文件名 。 fsck也是这样的功能
  15. 格式化以后,就应该挂载到指定目录上使用了。mount -a .umount
  16. dd if=/dev/zero of=/home/loopdev bs=1M count=512 可以将512块,每块1M大小的空间,合并成512M的档案。接下来可以使用格式化命令:mkfs -t ext3 /home/loopdev。然后mount 挂载,mount -o loop /home/loopdev /media/cdrom/
  17. free 查看内存
  18. tar gzip ,dump备份命令,可以增量备份

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853551.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OS笔记

os cpu执行两种性质的程序内核态程序(管态) 用户态程序内核态执行的特权指令包含:I/O指令 中断指令 存取内存中寄存器指令 程序状态字寄存器变更指令和硬件关联的指令(最底层)包含:时钟管理 中断处理 设备驱动运行比较频繁的指令(最底层的上层)包含:进程管理 内存管理 设…

财务知识-会计做账全套流程

财务知识-会计做账全套流程

druid多数据源配置

AOP实现说明 jump数据源注解 DataSource.javaAOP实现 DataSourceAspect.java数据源常量 DataSourceNames.java动态数据源 DynamicDataSource.java动态数据源config DynamicDataSourceConfig.javaDataSource.java package com.saicmotor.carapp.service.bvalue.manage.common.co…

docker pull拉取镜像超时了 ,可以使用Github Action 构建docker镜像 可以构建arm架构 x86架构镜像

首先要有个GitHub账号把这个项目fork到自己账号底下 地址:https://github.com/wukongdaily/DockerTarBuilder fork了之后进入自己的这个项目底下 点击"Actions" 左边可以选择构建镜像的架构 右边输入要构建的镜像名 输入之后点击 ”Run workflow“ 进行构建 在这里…

44. JavaScript之BOM、DOM

1. BOM 1.1 概念 Browser Object Model是指浏览器对象模型,它使 JavaScript 能与浏览器进行交互。 BOM是浏览器提供的API集合,主要用于处理与浏览器环境相关的任务,如窗口管理、导航、cookie、location等。 1.2 window对象 [1]open() 第一个参数是目标网址,第二个参数可以为…

【嵌入式开发】到底什么是指令集?什么是微架构?他们是什么关系?

一、简述 二、指令集 三、微架构及其与指令集的关系? 四、芯片厂、ARM公司和这些指令集、微架构是什么关系? 五、x86和ARM的竞争!一、简述 CPU的设计遵循图灵机的基本设计思想:任何复杂的运算都可以分解为有限个基本指令的组合来完成。这些基本指令比如加、减、乘、与、或、…

福卫兵-多源异构数据采集与融合应用综合实践

这个项目属于哪个课程 <首页 - 2024数据采集与融合技术实践 - 福州大学 - 班级博客 - 博客园 (cnblogs.com)>这个作业要求在哪里 <综合设计 - 作业 - 2024数据采集与融合技术实践 - 班级博客 - 博客园 (cnblogs.com)>组名、项目简介 <组名:福小兵,项目需求:实…

福卫兵——多源异构数据采集与融合应用综合实践

福州大学多模态网络舆情分析与可视化系统序号 信息类别 内容描述1 这个项目属于哪个课程 数据采集与融合综合实践2 组名、项目简介 组名:福小兵,项目需求:实时舆情监控系统,项目目标:为福州大学提供舆情监控与决策辅助工具,技术路线:使用 Flask 后端、Memfire(PostgreSQ…

SQL优化之《预警事件统计》

在做一件什么事情: 在首页大屏上,可以通过各种维度展示事件统计信息。 sql如下:点击查看代码 SELECTcount( * ) count,camera_code groupName FROMalarm_event WHEREalarm_event.illegal_tag ="24"AND alarm_event.organization_code ="310000110000"AN…

树形dp专项测试1

A. Promises I Cant Keep 题目意为求以每个点为根时的期望得分的最大值,换根DP即可。 式子不太难推,半个小时就出来了。太长了不往这写了。Code#include<bits/stdc++.h> #define ll long long #define il inline #define read(x){\char ch;\int fu=1;\while(!isdigit(c…

测试使用自己编译的WPF框架(本地nuget 包引用)

上一篇博客 本地编译WPF框架源码 - wuty007 - 博客园 说到自己在本地编译WPF 框架源码,并在本地 源码 的 \wpf\artifacts\packages\Debug\NonShipping 路径下打包处了 对应的 nuget包 接下来实操测试一下如何使用这些编译出来的包 一、首先为了方便看到测试的效果,我在WPF源…

安全帽佩戴监测摄像机

安全帽是工业生产中必不可少的安全防护装备,能有效保护工人头部免受意外伤害。然而,管理人员往往难以监督工人是否正确佩戴安全帽,这可能导致一些潜在的安全隐患。为了解决这一问题,一种新型的安全帽佩戴监测摄像机应运而生。安全帽是工业生产中必不可少的安全防护装备,能…