0
点赞
收藏
分享

微信扫一扫

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)。它们之间有以下区别:

  1. 路径类型:软链接是一个指向目标文件的路径名,而硬链接是一个指向目标文件的物理副本。
  2. 文件类型:软链接被视为一个独立的文件,它具有自己的 inode 和文件权限。硬链接是文件系统中原始文件的另一个名称,实际上它们共享相同的 inode 和文件权限。
  3. 跨文件系统:软链接可以跨越不同的文件系统,因为它们只是包含目标文件路径的文本文件。硬链接只能在同一文件系统内工作,因为它们依赖于 inode。
  4. 目标更新:如果目标文件被重命名、删除或移动,软链接将失效,而硬链接仍然有效,因为它们直接指向目标文件的物理副本。
  5. 目录链接:软链接可以链接到目录,而硬链接不能链接到目录。
  6. 多个链接:对于硬链接,可以有多个链接指向同一文件,而软链接只能有一个链接指向目标文件。

总之,软链接是指向目标文件路径的独立文件,可以跨文件系统并且保留原始文件的路径和权限信息。硬链接是原始文件的另一个名称,具有相同的inode和权限,不能跨越文件系统,并且在目标文件更改时仍然有效。

使用ln命令创建链接时,如果不指定任何选项,默认情况下会创建硬链接。要创建软链接,可以使用ln -s选项。

参考博客:博哥爱运维 https://www.toutiao.com/article/7271959603280265739?wid=1698656801777

举报

相关推荐

0 条评论