热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

4.1shell中常用的基础命令

1.diff用法:diff[options]files|directorys输出信息:[num1,num2][a|c|d][num3,num4]nu
1.diff 

用法:
diff  [options]  files|directorys

输出信息:
[num1,num2] [a|c|d] [num3,num4]
num1,num2    ##第一个文件中的行
a        ##添加
c        ##更改
d        ##删除
<        ##第一个文件中的内容
>        ##第二个文件中的内容
num3,num4    ##第二个文件中的行
常用参数&#xff1a;
-b    ##忽略空格
-B    ##忽略空行
-i    ##忽略大小写
-c    ##显示文件所有内容并标示不同的行
-r    ##对比目录
-u    ##合并输出
 

2.patch 

patch  原文件 布丁文件
-b    ##备份原文件
 

实验&#xff1a;
 

cd /mnt
echo westos linux > westos
cat westos > westos1
echo 123 >> westos1
diff westos westos1
diff -b westos westos1
diff -B westos westos1
diff -i westos westos1
diff -c westos westos1
mkdir westosdir
mkdir westosdir1
touch westosdir1/westosfile
ls westosdir1
diff -r westosdir westosdir1/
diff -u westos westos1 > westos.path (生成补丁)
dnf install patch
patch westos westos.path
patch -b westos westos.path

 3.cut 

-d :指定&#xff1a;为分隔符
-f指定显示的列
-c指定截取的字符&#xff08;数字用法同-f&#xff09;

cd /mntrm -rf *cp /etc/passwd .lscat passwdcut -d : -f 1 passwdcut -d : -f 1,7 passwd  &#xff08;第一列和第七列&#xff09;cut -d : -f 1-3 passwd    &#xff08;第一列到第三列&#xff09;cut -d : -f -3 passwd        &#xff08;第三列之前&#xff09;cut -d : -f 3- passwd         &#xff08;第三列之后&#xff09;cut -c 1-4 passwd  &#xff08;第一个字符到第四个字符&#xff09;
4.sort

-n纯数字排序-r倒叙
-u去掉重复-o输出到指定文件
-t指定分隔符-k指定排序的列

vim westoscat westos
1
3
6
9
4
5
3
9
22
97
3sort westos  (只排列第一列)sort -n westos (纯数字排列)sort -nr westos  (纯数字倒叙排列)sort -nru westos &#xff08;纯数字去掉倒叙排列&#xff09;sort -nr westos -o testsort -n -t : -k 2 westos

5.uniq

-c合并重复并统计重复个数
-d显示重复的行
-u显示唯一的行

sort -n westos | uniq -c &#xff08;纯数字排列&#xff0c;并合并重复并统计重复个数&#xff09;sort -n westos | uniq -d &#xff08;纯数字排列&#xff0c;并显示重复的行&#xff09;sort -n westos | uniq -u &#xff08;纯数字排列&#xff0c;并显示独立的行&#xff09;


学员命令测试&#xff1a;
1.ifconfig 网卡 可以显示此网卡的信息
  显示信息中包含此网卡使用的ip地址
  请用命令过滤此ip并在输出时只显示ip其他信息不显示
ifconfig ens3 | head -n 2 | tail -n 1 | cut -d "空格" -f 10
2.找出能登陆系统用户中UID最大的用户&#xff0c;并显示其名称
grep bash /etc/passwd | sort -rn -t : -k 3 | cut -d : -f 1 | head -n1


6.tr
tr &#39;a-z&#39; &#39;A-Z&#39; 小写转大写
tr  &#39;A-Z&#39; &#39;a-z&#39;大写转小写
tr &#39;A-Z&#39; &#39;a-z&#39; 将test中的内容大写转小写

7.test

test &#61; []       [] 就相当于test命令
test "$a" &#61; "$b" &#61; [ "$a" &#61; "$b" ]

test数字对比

&#61;等于&#xff01;&#61;不等于
-eq等于-ne不等于
-le小于等于-lt小于
-ge大于等于-gt大于

test的条件关系
-a    并且
-o    或者

 test对空的判定
-n    判定内容不为空
-z     判定内容为空

 实验
vim nmu_check.sh

#!/bin/bash
[ "$1" -ge "0" -a "$1" -lt "10"  ] && {echo $1 is  in 0-9
}|| {echo $1 is not in 0-9
}
sh nmu_check.sh 5

执行下列脚本来判断用户类型
user_check.sh  用户

&& ||
&&    符合条件作动作
||    不符合条件作动作

test对于文件的判定

-ef文件节点号是否一致&#xff08;硬链&#xff09;-L软连接
-nt文件1是不是比文件2新-e存在
-ot文件1是不是比文件2老-f普通文件
-d目录-b块设备
-S套接字-c字符设备

&#xff08;判断是否是目录&#xff09; [ -d "westosdir" ] && echo yes || echo nodnf install mariadb-server -y &> /dev/null
&#xff08;判断是否是套接字&#xff09;[ -S "/var/lib/mysql/mysql.sock" ] && echo yes || echo no&#xff08;判断是否是块设备&#xff09;[ -b "/dev/vda" ] && echo yes || echo nocd /mnttouch fileln -s /mnt/file /mnt/file1&#xff08;判断是否有软链接&#xff09;[ -L "/mnt/file1" ] && echo yes || echo no(判断是否是字符设备) [ -c "/dev/pts/0" ] && echo yes || echo no

 实验&#xff1a;
1)ping -c1 -w1 172.25.254.100 &> /dev/null && echo 172.25.254.100 is up || echo 172.25.254.100 is down
2)脚本&#xff1a;
vim test.sh
#!/bin/bash 
ping -c1 -w1 172.25.254.100 &> /dev/dull && {
        echo 172.25.254.100 is up 
} || {
        echo 172.25.254.100 is down
}
sh test.sh
 3&#xff09;检测hello用户在系统中是否存在&#xff0c;存在显示hello is exit,不存在显示hello is not exit
#!/bin/bash
id $1 &> /dev/null && {
        echo $1 is exit
} || {
        echo $1 is not exit
}
sh test.sh hello


学员检测
编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件&#xff0c;请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中

#!/bin/bash
[ -z "$1" ] && {echo "Error:no check file , please input file name!!"exit
}[ ! -e "$1" ] && {echo "$1 is not exit!"exit
}[ -L "$1" ] && {echo "$1 is link file"exit
}
[ -f "$1" ] && {echo "$1 is common file"exit
}
[ -d "$1" ] && {echo "$1 is directory"exit
}
[ -b "$1" ] && {echo "$1 is block device file"exit
}
[ -S "$1" ] && {echo "$1 is socket"exit
}


推荐阅读
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文深入解析了Linux系统中常用的文件和目录操作命令,包括但不限于`ls`、`cd`等。通过详细讲解每个命令的功能、语法及应用场景,帮助读者掌握这些基本工具的使用方法,提升在Linux环境下的操作效率。此外,文章还介绍了如何结合选项和参数来实现更复杂的文件管理任务,为初学者提供了丰富的实践示例和技巧。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
  • 在使用 PHP 通过 SSL 安全连接到 MySQLi 数据库服务器时,遇到了一些技术难题。我的环境包括一个 Web 服务器和一个数据库服务器,两者均使用 OpenSSL 生成了证书。尽管证书内容一致,但在尝试从 Web 服务器使用 `mysql` 命令进行连接时,仍然遇到了问题。为了确保连接的安全性和稳定性,需要进一步检查证书配置和 PHP 的 SSL 设置,以排除潜在的配置错误或兼容性问题。 ... [详细]
  • 本文介绍了如何创建和运行一个简单的 Bash 脚本,包括创建脚本文件、编写输出指令、赋予执行权限和运行脚本的基本步骤。 ... [详细]
  • 开发笔记:Linux 系统安装下安装 mysql5.7(glibc版)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux系统安装下安装mysql5.7(glibc版)相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
宫金丹865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有