shell基础回顾
0.vim命令
vim
gg 移动到文档第一行
G 移动到文档最后一行
:set nu 显示行号
:set noun 取消行号
nG 移动到指定n行,例如20G
$ 移动到行尾
0 移动到行头
clrt+f 屏幕向下移动一页
clrt+b 屏幕向上移动一页
:%s+word1+word2+g 搜索文本,将word1字符串,替换成word2字符串
x 向后删除一个字符
X 向前删除一个字符shift+d 删除当前行,光标后的字符
dd 删除游标所在整行
ndd 删除光比所在向下n列,例如:3dd
yy 复制游标所在行
p,P 小p将已复制的数据在光标下一行粘贴,大P则为粘贴在游标上一行
u 复原前一个动作,回退一步i 从当前光标插入
o, O 小写的o当前光标下一行插入 大写的O当前光标上一行插入
r, R 小写的r替换字符,大写的R:q! 强制退出不保存
:wq 保存ZZ 大写的ZZ,保持后快速退出(需要在esc退出编辑模式下操作)ctrl+v 光标移动到215.18前,通过上下左右移动选择一块区域,选号后按y 复制,p 粘贴想要的内容1 2 3 4 5 6
tcp 0 0 :::10302 :::* LISTEN
tcp 0 0 ::ffff:172.16.10.205:10302 ::ffff:215.18.157.74:5660 ESTABLISHED
tcp 0 0 ::ffff:172.16.10.205:10302 ::ffff:110.182.143.19:27490 TIME_WAIT
tcp 0 0 ::ffff:172.16.10.205:10302 ::ffff:110.182.143.19:27489 TIME_WAIT
tcp 0 0 ::ffff:172.16.10.205:10302 ::ffff:219.66.163.171:52754 ESTABLISHED
tcp 0 0 ::ffff:172.16.10.205:10302 ::ffff:59.39.132.243:30368 TIME_WAIT这样复制出来的结果就是:
215.18.157.74:5660
110.182.143.19:27490
110.182.143.19:27489
219.66.163.171:52754
59.39.132.243:30368
1.生成指定文件
#使用dd,if参数指定了输入文件(/dev/zero表示一个无限的全零字节流)
#of参数指定了输出文件的路径和名称(/root/1.log)
#bs参数指定了每次读取和写入的块大小(这里是10MB)
#count参数指定了要复制的块数(这里是1)
dd if=/dev/zero of=/root/1.log bs=10M count=1
2.shell压缩脚本
cat test.sh
#!/bin/bash#要压缩的目录或者文件
source_dir="/mnt"#压缩后输入的路径或者文件
output_file="/root/mnt.tar.gz"#使用tar 命令压缩,通过 --exclude 过滤目录或者文件
tar zcvf "${output_file}" --exclude="/mnt/test" --exclude="/mnt/1.log" "${source_dir}"#打包
#tar zcvf 2020.tar.gz *2020*.log#解压
#tar -zxvf ktgl20201207.tar.gz -C /data/webapp#不想解压,查看压缩包内容
#tar ztvf ktgl20201207.tar.gz
3.自定义函数别名
#显示当前定义的所有别名
alias#打开当前用户的.bashrc文件,自定义环境变量、别名和函数等设置
vim ~/.bashrc
#定义函数
testFunc(){ps -ef|grep nginx
}#使变量生效
source ~/.bashrc#定义别名
alias psnginx=testFunc
4.查看命令cat
#显示行号
cat -n myfile.txt#显示特殊字符
cat -A myfile.txt
在cat命令后面添加选项-A(或-vET)可以改变输出格式,以显示一些特殊字符的可见表示。
具体来说,-A选项会将以下特殊字符添加到输出中:
- 非打印字符(不包括换行符和制表符)会以^后接对应的控制字符形式显示。例如,ASCII 值为 1 的字符会显示为 ^A。
- 行尾的 $ 符号会显示在每行的末尾。
- 制表符会显示为 ^I。
这个选项通常用于显示一些看不见的特殊字符,以便进行文本分析或调试。
$ cat -A myfile.txt
This is a line of text.^M$
This is another line of text with a tab character. ^I$#在上面的示例中,^M 表示回车符,^I 表示制表符,$ 表示行尾。
5.find命令
#查找ceph-csi-3.2.0目录下,所有的*log文件
find /ceph-csi-3.2.0/ -name "*log"#查看/ceph-csi-3.2.0目录下所有*.sh文件每个的大小
#注:xargs组合多个命令的一个工具
find /ceph-csi-3.2.0/ -type f -name "*.sh" | xargs du -sh#复制/ceph-csi-3.2.0目录下所有*.sh文件到/root/test下
find /ceph-csi-3.2.0/ -type f -name "*.sh" -exec cp -a {} /root/test \;#/ceph-csi-3.2.0目录开始搜索文件,排除目录/ceph-csi-3.2.0/scripts/*,排除文件/ceph-csi-3.2.0/deploy.sh,查找*.sh文件
find /ceph-csi-3.2.0/ -type f -path "/ceph-csi-3.2.0/scripts/*" -o -path "/ceph-csi-3.2.0/deploy.sh" -o -type f -name "*.sh" -print#比较下面两个打包的区别
#第一个是打包成一个文件
find /ceph-csi-3.2.0/ -type f -path "/ceph-csi-3.2.0/scripts/*" -o -path "/ceph-csi-3.2.0/deploy.sh" -o -type f -name "*.sh" -print | xargs tar zcvf allSh.tar.gz#第二个是打包成多个文件
find /ceph-csi-3.2.0/ -type f -path "/ceph-csi-3.2.0/scripts/*" -o -path "/ceph-csi-3.2.0/deploy.sh" -o -type f -name "*.sh" -print -exec tar zcvf {}.tar.gz {} \;
6.ln 软链接和硬链接
#软链接
ln -svf /ceph-csi-3.2.0/allSh.tar.gz /root/
● -s:创建软链接(Symbolic Link),而不是创建硬链接。
● -v:显示详细的输出,即在创建链接时显示正在进行的操作。
● -f:强制执行操作,即如果目标文件已存在,则覆盖它。#硬链接
ln /ceph-csi-3.2.0/allSh.tar.gz /root/
在Linux中,ln命令用于创建链接(link)文件。其中有两种类型的链接:软链接(Symbolic Link)和硬链接(Hard Link)。它们之间有以下区别:
- 路径类型:软链接是一个指向目标文件的路径名,而硬链接是一个指向目标文件的物理副本。
- 文件类型:软链接被视为一个独立的文件,它具有自己的 inode 和文件权限。硬链接是文件系统中原始文件的另一个名称,实际上它们共享相同的 inode 和文件权限。
- 跨文件系统:软链接可以跨越不同的文件系统,因为它们只是包含目标文件路径的文本文件。硬链接只能在同一文件系统内工作,因为它们依赖于 inode。
- 目标更新:如果目标文件被重命名、删除或移动,软链接将失效,而硬链接仍然有效,因为它们直接指向目标文件的物理副本。
- 目录链接:软链接可以链接到目录,而硬链接不能链接到目录。
- 多个链接:对于硬链接,可以有多个链接指向同一文件,而软链接只能有一个链接指向目标文件。
总之,软链接是指向目标文件路径的独立文件,可以跨文件系统并且保留原始文件的路径和权限信息。硬链接是原始文件的另一个名称,具有相同的inode和权限,不能跨越文件系统,并且在目标文件更改时仍然有效。
使用ln命令创建链接时,如果不指定任何选项,默认情况下会创建硬链接。要创建软链接,可以使用ln -s选项。
7.文件和目录对比
diff 文件内容对比命令(案例:diff 1.txt 2.txt)
du 查看文件或目录使用空间大小
basename 过滤出路径下面最后的文件名或目录
dirname 从文件名中删除最后一个组成部分
df 查看系统硬盘占用空间情况 (案例:df -TH)
df -i 查看磁盘inode使用空间#查看目录下,低于100K的文件数量
find /mnt -type f -size -100k | wc -l#删除低于100K,过多小文件
find /mnt -type f -size -100k | xargs rm -f[root@k8s-master01 jtpv]# basename /root/jtpv/pv.yaml
pv.yaml
[root@k8s-master01 jtpv]# dirname /root/jtpv/pv.yaml
/root/jtpv
8.目录或文件权限
[root@news-static ~]# ls -l 1.html
-rw-r--r--. 1 root root 0 12月 25 2019 1.html[root@news-static ~]# ls -ld nginx-1.23.2
drwxr-xr-x. 9 1001 1001 4096 11月 30 2022 nginx-1.23.2r w x
4 2 1
读 写 执or进入
0644/-rw-r--r-- #文件
0755/drwxr-xr-x #目录0644+0022=0666 文件最大权限666
0755+0022=0777 目录最大权限777umask0022 #第一位0: 表示这是一个八进制数[root@news-static ~]# umask
0022
[root@news-static ~]# ls -l 1.html
-rw-r--r--. 1 root root 0 12月 25 2019 1.html[root@k8s-master01 ~]# diff 1.txt 2.txt
12a13
> 123chown 更改文件所有者以及所有组,常用-R 是目录内所有文件都授权
chattr +i 锁定文件
lsattr 显示文件或目录的扩展属性的命令
chattr +a 只允许增加内容[root@news-static ~]# lsattr 2.txt
-------------e- 2.txt
[root@news-static ~]# chattr +i 2.txt
[root@news-static ~]# lsattr 2.txt
----i--------e- 2.txt
[root@news-static ~]# chattr -i 2.txt
[root@news-static ~]# lsattr 2.txt
-------------e- 2.txt
[root@news-static ~]#[root@news-static ~]# chattr +a 2.txt
[root@news-static ~]# lsattr 2.txt
-----a-------e- 2.txt
[root@news-static ~]# echo 3 > 2.txt
-bash: 2.txt: 不允许的操作
[root@news-static ~]# echo 3 >> 2.txt
[root@news-static ~]# cat 2.txt
123
3
[root@news-static ~]#
9.遍历目录
[root@news-static mydir]# cat test.sh
#!/bin/bashdirectory=$1# 使用 find 命令递归遍历指定目录下的所有文件和子目录
find "$directory" -print | while read file; doif [[ -d "$file" ]]; then # 判断是否为目录echo "Dire: $file"elif [[ -f "$file" ]]; then # 判断是否为文件echo "File: $file"fi
done[root@news-static mydir]# /tmp/mydir/test.sh /tmp/mydir
Dire: /tmp/mydir
File: /tmp/mydir/boge.sh
File: /tmp/mydir/test.sh
Dire: /tmp/mydir/dir1
Dire: /tmp/mydir/dir1/dir2
Dire: /tmp/mydir/dir1/dir2/dir3
File: /tmp/mydir/dir1/dir2/dir3/file3.log
File: /tmp/mydir/dir1/dir2/file2.log
File: /tmp/mydir/dir1/file1.log
[root@news-static mydir]#[root@news-static mydir]# cat boge.sh
#!/bin/bashlistFile() {local tempDir=$1# 使用 find 命令递归遍历指定目录下的所有文件和子目录find "$tempDir" -print | while read file; doif [[ -d "$file" ]]; then # 判断是否为目录echo "Dir: $file"elif [[ -f "$file" ]]; then # 判断是否为文件echo "Fil: $file"fidone
}
#允许函数
listFile $1[root@news-static mydir]# /tmp/mydir/test.sh /tmp/mydir
Dire: /tmp/mydir
File: /tmp/mydir/boge.sh
File: /tmp/mydir/test.sh
Dire: /tmp/mydir/dir1
Dire: /tmp/mydir/dir1/dir2
Dire: /tmp/mydir/dir1/dir2/dir3
File: /tmp/mydir/dir1/dir2/dir3/file3.log
File: /tmp/mydir/dir1/dir2/file2.log
File: /tmp/mydir/dir1/file1.log
[root@news-static mydir]#
参考博客:博哥爱运维
https://www.toutiao.com/article/7271959603280265739?wid=1698656801777
相关文章:
shell基础回顾
0.vim命令 vim gg 移动到文档第一行 G 移动到文档最后一行 :set nu 显示行号 :set noun 取消行号 nG 移动到指定n行,例如20G $ 移动到行尾 0 移动到行头 clrtf 屏幕向下移动一页 clrtb 屏幕向上移动一页 :%sword1word2g 搜索文本ÿ…...
[云原生案例1.] 构建LNMP架构并运行Wordpress个人博客平台
文章目录 1. 当前需求2. 前置准备3. 搭建过程3.1 创建自定义网络3.2 部署并配置nginx3.2.1 创建工作目录并上传相关软件包3.2.2 解压缩相关软件包3.2.3 编写Dockerfile文件3.2.4 编写nginx.conf文件3.2.5 创建nginx镜像3.2.6 运行容器 3.3 部署并配置mysql3.3.1 创建工作目录3.…...
C++归并排序算法的应用:计算右侧小于当前元素的个数
题目 给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1: 输入:nums [5,2,6,1] 输出:[2,1,1,0] 解释: 5 …...
python类如何实例化对象
python类如何实例化对象 1、把类看作是定制的数据类型。既然是类型,只能用来表示数据的类型,不能直接用来保存数据。**要保存数据,首先需要创建一个类似于这类容器的东西,称为对象(或例子)。通过类别产生对象的过程称为例子。 2、…...
基于GB28181-2022实现web无插件播放H265视频
目前发布的GB28181-2022增加了对前端设备视频H265编码格式的支持,所以实现国标平台通过浏览器对H265视频流的无插件的解码播放将是未来的趋势。 目前大多的方案都是通过平台端把H265转码为H264,再推送到web前端进行解码播放,这种方式因为需要…...
Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第六章 muduo网络库简介
2010年3月作者写了一篇《学之者生,用之者死——ACE历史与简评》(http://blog.csdn.net/Solstice/archive/2010/03/10/5364096.aspx,ACE是(Adaptive Communication Environment)是一个C编写的开源框架,用于开…...
「免费活动」敏捷武林上海站 | 与 Scrum.org CEO 面对面
活动介绍 过去的几年里,外界的风云变幻为我们的生活增添了一些不一样的色彩。在VUCA世界的浪潮里,每一个人都成为自己生活里的冒险家。面对每一次的变化,勇于探索未知,迎接挑战,努力追逐更好的自己。 七月࿰…...
深入大模型与ChatGPT
关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、大模型原理 1.Transformer (1)求知之路:LLM 学到了什么知识 LLM 从海量自由文本中学习了大量知识,如果把这些知识做粗略分类的话,…...
ubuntu(18.04)中架设HiGlass docker镜像服务,已尝试mcool、bedpe、wig格式文件
前言 使用到的软件 docker 文档 : https://www.docker.com/ HiGlass 文档:http://docs.higlass.io/higlass_docker.html#running-locally https://github.com/higlass/higlass-dockerhiglass-docker 地址:https://github.com/higla…...
通过API和无代码开发,邻医云如何连接电商平台,集成CRM和客服系统
通过API连接电商平台:邻医云的实践 邻医云,一款致力于改变中国医药行业传统经营方式的技术服务产品,用技术的力量帮助实现数字化转型。邻医云已经在零售、仓储物流、互联网医院、工业等各个领域与各大平台进行合作,帮助客户降低成…...
Python selenium元素的定位
视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。一个对象就是一个人一样,他 会有各种的特征(属性&…...
Android图形系统之HWComposer、ComposerHal、ComposerImpl、Composer、Hwc2::Composer实例总结(十四)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…...
MASK-RCNN tensorflow环境搭建
此教程默认你已经安装了Anaconda,且tensorflow 为cpu版本。为什么不用gpu版本,原因下面解释。 此教程默认你已经安装了Anaconda。 因为tensorflow2.1后的gpu版,不支持windows。并且只有高版本的tensorflow才对应我的CUDA12.2; 而…...
企业级开发命名规范有哪些?
企业级开发通常会遵循一些命名规范以提高代码的可读性、可维护性和一致性。以下是一些常见的企业级开发命名规范: 1:变量和函数命名: 使用有意义的名称,能够清晰描述变量或函数的用途和功能。使用驼峰命名法(camelCa…...
sitespeedio.io 前端页面监控安装部署接入influxdb 到grafana
1.docker部署influxdb,部署1.8一下,不然语法有变化后面用不了grafana模板 docker run -d -p 8086:8086 --name influxdb -v $PWD/influxdb-data:/var/lib/influxdb influxdb:1.7.11-alpine docker exec -it influxdb_id bash #influx create user admin with pass…...
ModStartCMS v7.5.0 内外网映射节流,安全使用增强
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…...
【LVS实战】02 搭建一个LVS-NAT模式实验
一、网络结构 用虚拟机搭建如下的几台机器,并配置如下的ip 关于虚拟机网卡和网络的配置,可以参考 iptables章节,05节:网络转发实验 主机A模拟外网的机器 B为负载均衡的机器 C和D为 RealServer 二、C和D主机的网关设置 C和D机…...
Word 将文档中的【第几条】批量加粗
目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 我要制作一份文档,关于法律条文的,然后需要将条文中的【第几条】字样进行加粗表示,格式刷是不可能格式刷的,这明显不适合此种批量的操作,浪费事件。所以…...
苹果AirTag固件更新
苹果公司针对其热销的物品追踪器 AirTag 于今天发布了新的固件更新,最新版本号为 2A61,但是这次更新苹果并未提供发布说明,所以目前还不知道这次更新有什么新内容。 关于这次更新,用户无法自己手动更新 AirTag 固件,因…...
04.Oracle的体系架构
Oracle的体系架构 一、主要组件 一、主要组件 下面是一张网图,大家可以了解一下oracle的体系架构 Oracle数据库的体系架构可以分为以下几个主要组件:实例(Instance)、数据库(Database)、表空间ÿ…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
