首页
友情链接
关于
Search
1
Docker 拉取镜像报错 “missing signature key” 解决办法
1,331 阅读
2
如何在CentOS 7中升级Linux内核
494 阅读
3
docker 常用命令
218 阅读
4
k8s 常用命令
200 阅读
5
docker 拉去镜像失败Retrying in 1 second
166 阅读
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
登录
/
注册
Search
标签搜索
Docker
shell脚本
Linux 系统管理
k8s
LVM
KVM
网络服务
Nginx
Ubuntu
内核升级
Linux用户管理
系统管理
MySQL
共享存储
Abbott
累计撰写
37
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
页面
友情链接
关于
搜索到
21
篇与
的结果
2024-03-28
shell-script 创建密钥认证
[root@web ~]# cat ssh-copy-id.sh #!/bin/bash # 设置远程服务器的用户名列表和对应的IP地址列表 USERS=("user1" "user2" "user3") # 替换为你的用户名列表 SERVERS=("192.168.212.141" "192.168.212.142" "192.168.212.143") # 替换为你的服务器IP地址列表 PASSWORD="your_password" # 替换为你的远程服务器密码 PUBLIC_KEY_FILE="$HOME/.ssh/id_rsa.pub" # 公钥文件路径 # 检查公钥文件是否存在 if [ ! -f "$PUBLIC_KEY_FILE" ]; then echo "公钥文件不存在,请确认路径是否正确或者生成新的SSH密钥对。" exit 1 fi # 循环遍历远程服务器列表,并推送公钥 for ((i = 0; i < ${#SERVERS[@]}; i++)); do REMOTE_SERVER="${USERS[$i]}@${SERVERS[$i]}" # 向远程服务器传输公钥内容 echo "正在将公钥推送到远程服务器 $REMOTE_SERVER ..." sshpass -p "$PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no -i "$PUBLIC_KEY_FILE" "$REMOTE_SERVER" if [ $? -eq 0 ]; then echo "公钥已成功推送到远程服务器 $REMOTE_SERVER。" else echo "无法将公钥推送到远程服务器 $REMOTE_SERVER,请检查权限和SSH配置。" fi done
2024年03月28日
64 阅读
0 评论
0 点赞
2024-03-28
shell 脚本批量创建免密登录
#!/bin/bash ipadd="192.168.212" read -p "请输入密码" passwd ssh_copy(){ for i in 141 142 143 do echo "正在连接$ipadd.$i" sshpass -p "$passwd" ssh-copy-id $ipadd.$i -o StrictHostKeyChecking=no done } if [ -f /usr/bin/sshpass ];then ssh_copy else yum -y install sshpass ssh_copy fi
2024年03月28日
39 阅读
0 评论
1 点赞
2024-03-28
shell 脚本安全审计
[root@web ~]# cat security.sh #!/bin/bash # 安全审计和漏洞扫描脚本 # 设置输出文件 output_file="security_scan_report.txt" # 执行系统信息收集 echo "收集系统信息..." > $output_file date >> $output_file echo "---------------------------" >> $output_file uname -a >> $output_file df -h >> $output_file echo "" >> $output_file for ip in {1..254} do ping -c 3 192.168.218.$ip if [ $? -eq 0 ]; then # 执行漏洞扫描 echo "执行漏洞扫描..." >> $output_file echo "---------------------------" >> $output_file # 在这里使用适合你的漏洞扫描工具,例如:Nmap、OpenVAS、Nessus等 nmap -p 1-65535 -T4 -A -v 192.168.218.$ip >> $output_file echo "" >> $output_file # 执行安全审计 echo "执行安全审计..." >> $output_file echo "---------------------------" >> $output_file # 在这里使用适合你的审计工具,例如 Lynis 或其他自定义脚本 yum -y install lynis > /dev/null lynis audit system >> $output_file echo "" >> $output_file else echo 192.168.218.$ip down fi done # 结束脚本 echo "安全审计和漏洞扫描已完成。报告保存在 $output_file。"
2024年03月28日
64 阅读
0 评论
0 点赞
2024-03-08
Linux 软件包管理
Linux安装及管理软件 本章主要简介Linux下软件安装方式,Linux安装软件也有自己的一套方式,最常见的有源码安装方式,RPM安装方式、YUM安装方式和二进制安装方式。用户可以根据自己的需要和获得软件包的不同,选择不自己喜欢的安装方式。1、源码安装方式由于Linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如Apache、Tomcat、PHP等软件,开源软件基本都是提供源码下载、源码安装的方式;源码安装的好处是用户可以定制软件功能,安装需要的模块,不需要的功能可以不用安装,此外用户还可以自己选择安装路径,方便管理,卸载软件也很方便,只需要删除对应的安装目录即可。源码安装软件一般有以下几个步骤:下载解压源码、分析安装平台环境(configure)、编译安装软件(make、make install) 2、下载、解压源码Linux下软件的源码一般都是C或者C++语言编写的,并且都会在软件的官网上提供源码包下载,我们可以从官网下载源码文件,然后再传到所在的Linux系统下,如果你的Linux系统处于联网状态下,也可以直接在系统内通过wget之类的下载命令将源码包直接下载到Linux系统下。下载完成,把相应的软件包解压即可,针对下载的软件包的不同,使用不同方法进行解压,解压完成后进入解压生成的目录中。在这个目录下,一般都在一个REDAME文件。这个文件非常重要,它详细介绍了这个软件所能完成的功能、授权许可、安装需求、安装注意事项、安装方式等。3、分析安装平台环境在软件包解压完成之后,源码目录中,一般都会存在configure和README这两个文件,Linux下软件的安装受到操作系统安装环境的影响,比如某些软件在安装或者运行过程中需要调用操作系统本省的库文件,或者需要运行系统的摸个工具等。4、编译、安装软件在验证软件安装环境后正式进入软件的编译步骤,在进行编译前,首先了解下关于编译的一些基础知识. 在Linux系统下,make是经常用到的编译命令,无论是安装软件还是项目开发,都会经常用到编译、安装命令,也就是make和make install。对于一个包含很多源文件的应用程序,使用make和Makefile工具可以简单快速地解决各个源文件之间复杂的依赖关系,同时,make工具可以自动完成所有源码文件的编译工作,并且可以只对上次编译后修改过的文件进行增量编译,因此,熟练掌握了make和Makefile工具之后,源码安装软件就变得像Windows下安装软件一样简单。 1、makefile 文件 make工具最主要的功能就是通过makefile文件来实现的,makefile文件时按照某种语法来进行编写的,文件中定义了各个源文件之间的依赖关系,说明了如果编译源文件并生成可执行文件,它通过描述各个源程序之间的关系make工具自动完成编译工具, 2、make与make install 在了解Makefile文件结构,我们就可以控制编译的选项,定制自己所需的软件功能,接下来,我嗯只须在命令行输入make命令,即可进入编译阶段,根据软件源程序的大小和系统的硬件配置,编译时间不定,编译完成,会在当前目录以及子目录下生成相应的可执行文件,之后就可以进入安装软件,在命令行输入make install命令,在开始安装软件,安装进程会首先创建安装目录,如果没有指定安装目录安装程序默认会在系统的/usr/local目录下创建安装目录,然后将相应的文件和可执行程序从源码目录复制到安装目录下,这样安装就完成了。RPM包安装RPM介绍RPM是Red Hat Package Manager的缩写,本意是Red Hat软件包管理,是最先由Redhat公司开发出来的Linux下软件包管理工具,由于这种软件管理非常方便,逐渐被其他Linux发行商所借用,现在已经成为Linux平台下通用的软件包安装方式。RPM包管理方式的优点是:安装简单、方便,因为软件已经编译完成且打包完成,安装只是个验证环境和解压的过程,此外通过RPM方式安装的软件RPM工具都会记录软件的安装信息,这样方便了软件日后的查询、升级和卸载。RPM包管理方式的缺点是对操作系统环境的依赖很大,它要求RPM包的那幢环境必须与PRM包封装时的环境和一致或相当,还需啊满足安装时与系统某些软件包的依赖关系。RPM包的种类和组成RPM包的封装格式一般有两种,分别是RPM和SRPM,SRPM包也是一种RPM,但是它包含了编译时的源文件和一些编译指定的参数文件,因而在使用的时候需要重新进行编译,通常SRPM对应的RPM文件类似于“xxx.src.rpm”格式。RPM工具描述:RPM工具的使用分为安装、查询、验证、更新、删除等操作。安装软件包:语法格式:rpm [选项...]常用选项:安装/升级/擦除选项: --allfiles 安装全部文件,包含配置文件,否则配置文件会被跳过。 --allmatches 移除所有符合 <package> 的软件包(如果 <package> 被指定未多个软件包,常常会导致错误出现) --badreloc 对不可重定位的软件包重新分配文件位置 -e, --erase=<package>+ 清除 (卸载) 软件包 --excludedocs 不安装程序文档 --excludepath=<path> 略过以 <path> 开头的文件 --force --replacepkgs --replacefiles 的缩写 -F, --freshen=<packagefile>+ 如果软件包已经安装,升级软件包 -h, --hash 软件包安装的时候列出哈希标记 (和 -v 一起使用效果更好) --ignorearch 不验证软件包架构 --ignoreos 不验证软件包操作系统 --ignoresize 在安装前不检查磁盘空间 -i, --install 安装软件包 --justdb 更新数据库,但不修改文件系统 --nodeps 不验证软件包依赖 --nofiledigest 不验证文件摘要 --nocontexts 不安装文件的安全上下文 --noorder 不对软件包安装重新排序以满足依赖关系 --noscripts 不执行软件包脚本 --notriggers 不执行本软件包触发的任何脚本 --nocollections 请不要执行任何动作集 --oldpackage 更新到软件包的旧版本(带 --force 自动完成这一功能) --percent 安装软件包时打印百分比 --prefix=<dir> 如果可重定位,便把软件包重定位到 <dir> --relocate=<old>=<new> 将文件从 <old> 重定位到 <new> --replacefiles 忽略软件包之间的冲突的文件 --replacepkgs 如果软件包已经有了,重新安装软件包 --test 不真正安装,只是判断下是否能安装 -U, --upgrade=<packagefile>+ 升级软件包 --reinstall=<packagefile>+ reinstall package(syum安装方式yum是yellowdog update modified 的缩写,yellow dog(黄狗)也是Linux的一个发行版本,只不过Red Hat公司是将这种升级技术利用到自己的发行版上就形成了现在的yum,yum是进行Linux系统下软件安装和升级常用的一个工具,通过Linux工具配合互联网即可实现软件的便捷安装和自动升级。yum 安装及配置yum的安装以CentOS 7 为例,要检查yum是否已经安装,基本系统默认会自动安装yum工具[root@localhost ~]# rpm -qa |grep yumyum的配置yum的配置文件有主要配置文件/etc/yum.conf,资源库配置目录/etc/yum.repos.d。 yum 安装后,默认的一些资源库配置可能无法使用,因此需要进行修改,修改配置文件为:/etc/yum.repos.d/[cr] name=CentOS-$releasever - cr baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled=0yum的特点与基本用法yum的特点安装方便,自动解决添加或删除RPM包时遇到的依赖性问题。可以同时配置多个资源库(Repository)配置文件简单明了(/etc/yum.conf, /etc/yum.repos.d/)保持与RPM数据库的一致性yum的基本用法如果安装或者删除RPM包[root@localhost ~]# yum -y install *.rpm [root@localhost ~]# yum -y remove *.rpm检查yum工具更新软件包[root@localhost ~]# yum check-update更新所有的RPM软件包[root@localhost ~]# yum update -y 通过yum查询RPM包信息[root@localhost ~]# yum info
2024年03月08日
109 阅读
0 评论
0 点赞
2024-01-25
第二章节 Shell脚本基本结构
## 第二章节 Shell脚本基本结构2.1 脚本开头的Shebang(#!)行2.2 变量定义与使用变量是为其赋值的字符串。分配的值可以是数字、文本、文件名、设备或任何其他类型的数据。变量不过是指向实际数据的指针。shell 可以让你创建、分配和删除变量变量名称变量名只能包含字母(a 至 z 或 A 至 Z)、数字(0 至 9)或下划线字符 ( _)。按照惯例,Unix shell 变量的名称使用大写字母。以下示例是有效的变量名_ALI TOKEN_A VAR_1 VAR_2 AbbottSun以下是无效的变量名称2_VAR -VARIABLE VAR1-VAR2 VAR_A!之所以不能使用 !、* 或 - 等其他字符,是因为这些字符对 shell 有特殊含义。定义变量变量定义如下variable_name=variable_value例如:NAME="Zhang San"上例定义了变量 NAME,并为其赋值 "Zhang San"。这种类型的变量称为标量变量。标量变量一次只能保存一个值。shell 允许你在变量中存储任何你想要的值。例如:VAR1="Zara Ali" VAR2=100访问值要访问变量中存储的值,请在变量名前加上美元符号 ($) 。例如,下面的脚本将访问已定义变量 NAME 的值,并将其打印出#!/bin/sh NAME="Zhang San" echo $NAME上述脚本将产生以下值:Zhang San只读变量Shell 提供了一种使用只读命令将变量标记为只读的方法。变量被标记为只读后,其值将无法更改。例如,下面的脚本在试图更改 NAME - 的值时会产生错误。示例:#!/bin/bash NAME="Zara Ali" readonly NAME NAME="Qadiri"输出结果:read-Only-var.sh:行4: NAME: 只读变量取消设置变量取消设置或删除变量会指示 shell 从其跟踪的变量列表中删除该变量。一旦取消设置变量,就无法访问变量中存储的值。使用 unset 命令取消已定义变量的语法如下unset variable_name上述命令将取消已定义变量的值。下面是一个简单的示例,演示该命令如何运行#!/bin/sh NAME="Zara Ali" unset NAME echo $NAME上述示例不会打印任何内容。不能使用 unset 命令取消设置标记为只读的变量。变量类型shell 运行时,主要有三种变量类型局部变量 - 局部变量是存在于 shell 当前实例中的变量。shell 启动的程序无法使用它。它们是在命令提示符下设置的。环境变量 - shell 的任何子进程都可以使用环境变量。有些程序需要环境变量才能正常运行。通常,shell 脚本只定义其运行的程序所需的环境变量。shell 变量 - shell 变量是由 shell 设置的特殊变量,shell 需要它才能正常运行。其中一些变量是环境变量,而另一些则是本地变量。特殊变量在本章中,我们将详细讨论 Unix 中的特殊变量。在前面的一章中,我们了解了在变量名称中使用某些非字母数字字符时如何小心。这是因为这些字符被用在特殊 Unix 变量的名称中。这些变量是为特定功能保留的。例如,$字符代表当前 shell 的进程 ID 号或 PID -$echo $$上面的命令写入当前 shell 的 PID -29949下表显示了您可以在 shell 脚本中使用的一些特殊变量 -Number变量和描述1$0当前脚本的文件名。2**$n**这些变量对应于调用脚本时使用的参数。这里**n**是一个正十进制数,对应于参数的位置(第一个参数是 $1,第二个参数是 $2,依此类推)。3$#提供给脚本的参数数量。4*$\***所有参数都用双引号引起来。如果脚本接收两个参数,$ 相当于 $1 $2。5**$@**所有参数都单独用双引号引起来。如果脚本接收两个参数,$@ 相当于 $1 $2。6$?最后执行的命令的退出状态。7$$当前 shell 的进程号。对于 shell 脚本,这是执行它们的进程 ID。8$!最后一个后台命令的进程号。命令行参数命令行参数 $1、$2、$3、...$9 是位置参数,$0 指向实际的命令、程序、shell 脚本或函数,$1、$2、$3、...$9 作为参数命令。以下脚本使用与命令行相关的各种特殊变量 -#!/bin/sh echo "File Name: $0" echo "First Parameter : $1" echo "Second Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#"这是上述脚本的运行示例 -$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2特殊参数 $* 和 $@有一些特殊参数允许一次访问所有命令行参数。$\***和**$@ 的作用相同,除非它们用双引号""括起来。这两个参数都指定命令行参数。然而,“$*”特殊参数将整个列表作为一个参数,中间有空格,而“$@”特殊参数则将整个列表分为单独的参数。我们可以编写如下所示的 shell 脚本来使用 $* 或 $@ 特殊参数处理未知数量的命令行参数 -#!/bin/sh for TOKEN in $* do echo $TOKEN done这是上述脚本的运行示例 -$./test.sh Zara Ali 10 Years Old Zara Ali 10 Years Old注意- 这里do...done是一种循环,将在后续教程中介绍。退出状态美元?变量表示前一个命令的退出状态。退出状态是每个命令完成后返回的数值。通常,大多数命令如果成功则返回退出状态 0,如果不成功则返回 1。某些命令会出于特定原因返回其他退出状态。例如,某些命令区分不同类型的错误,并根据具体的故障类型返回各种退出值。以下是成功命令的示例 -$./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara Ali Quoted Values: Zara Ali Total Number of Parameters : 2 $echo $? 0 $2.3 基本的输入输出(读取用户输入、输出结果等)在Shell编程中,你可以使用以下方式进行基本的输入和输出操作:读取用户输入:可以使用 read 命令来读取用户的输入,并将输入保存到一个变量中。例如:read -p "请输入你的名字: " name echo "你好,$name!"上述代码将提示用户输入名字,并将输入保存到 name 变量中,然后通过 echo 命令输出一条问候语。输出结果:可以使用 echo 命令来输出文本或变量的值。例如:name="John" echo "你好,$name!"上述代码将输出一条问候语,其中包含了变量 name 的值。示例1、多重输出(number.sh)#!/bin/bash read -p "Enter number one : " n1 read -p "Enter number two : " n2 read -p "Enter number three : " n3 echo "Number1 - $n1" echo "Number2 - $n2" echo "Number3 - $n3"2、 显示域名所有者信息显示互联网域名所有者信息的 shell 脚本 (domain.sh):#!/bin/bash read -t 10 -p "Enter the Internet domain name(sunshijz.cn) : " domain_name whois $domain_name输出结果:Enter the Internet domain name(sunshijz.cn) : sunshijz.cn Domain Name: sunshijz.cn ROID: 20201130s10001s33110320-cn Domain Status: ok Registrant: 孙晓波 Registrant Contact Email:
[email protected]
Sponsoring Registrar: 阿里巴巴云计算(北京)有限公司 Name Server: dns9.hichina.com Name Server: dns10.hichina.com Registration Time: 2020-11-30 16:48:57 Expiration Time: 2023-11-30 16:48:57 DNSSEC: unsigned3、超时输入使用 -t 选项可以使 read 命令超时。如果在 TIMEOUT 秒内没有读取完整的输入行,它将导致读取超时并返回失败。例如,如果在 10 秒内没有输入,程序将被中止(domain2.sh):#!/bin/bash read -t 10 -p "Enter the Internet domain name (sunshijz.cn) : " domain_name whois $domain_name4、隐藏密码-s选项会导致来自终端的输入不显示在屏幕上。这对处理密码(readpass.sh)非常有用:#!/bin/bash read -s -p "Enter Password : " my_password echo echo "Your password - $my_password"处理多个值示例1read -p "Enter directory to delete : " dirname echo "$dirname"输出结果Enter directory to delete : test bing /opt/test test bing /opt/test 用户提供了三个值,而不是一个。现在字符串由三个不同的字段组成。所有三个字都将使用 $IFS 内部字段分隔符分配给 dirname。$IFS 决定了 shell 识别字段的方式。$IFS要显示 $IFS 的默认值,请输入echo "$IFS"您将看到一个空格,其中只有空格、制表符和换行符(默认值)[root@bogon opt]# cat -etv <<<"$IFS" ^I$ $$ - 行尾,即换行符^I$ -制表符和换行符但如何同时使用 $IFS 和 read 命令呢?创建一个名为 nameservers 的变量,并赋予它以下 3 个值(注意所有值之间用空格隔开):[root@bogon opt]# nameservers="ns1.nixcraft.net ns2.nixcraft.net ns3.nixcraft.net"使用echo命令或printf命令显示变量nameservers的值:[root@bogon opt]# echo "$nameservers"or[root@bogon opt]# printf "%s" $nameservers现在,只需使用读取命令拆分 $nameservers [root@bogon opt]# read -r ns1 ns2 ns3 <<< "$nameservers"读取命令从 $nameservers 变量中读取输入值。$IFS 的默认值用于为三个独立变量赋值。使用 $IFS 将输入内容分割成令牌,并分配给三个变量。换句话说,IFS 变量起着标记分隔符或分隔线的作用。第一个标记(ns1.nixcraft.net)保存为第一个变量的值($ns1)第二个标记(ns2.nixcraft.net)保存为第二个变量的值($ns2)。第三个标记(ns3.nixcraft.net)保存为第三个变量的值($ns3)。要显示每个变量的值,请使用 echo 命令或 printf 命令,如下所示:[root@bogon opt]# echo "dns sever1 $ns1" dns sever1 ns1.nixcraft.net [root@bogon opt]# echo "dns sever1 $ns2" dns sever1 ns2.nixcraft.net [root@bogon opt]# echo "dns sever1 $ns3" dns sever1 ns3.nixcraft.netor[root@bogon opt]# printf "DNS Server #1 %s\n #2 %s\n #3 %s\n" $ns1 $ns2 $ns3 DNS Server #1 ns1.nixcraft.net #2 ns2.nixcraft.net #3 ns3.nixcraft.net如何更改 IFS 分隔符值?示例:gitevivek:x:1002:1002::/home/gitevivek:/bin/sh将上面一行内容赋值给一个名为 pwd 的变量:pwd="gitevivek:x:1002:1002::/home/gitevivek:/bin/sh"读取 $pwd,使用 $IFS 生成令牌并将其存储到相应字段:read -r login password uid gid info home shell <<< "$pwd" printf "Your login name is %s, uid %d, gid %d, home dir set to %s with %s as login shell\n" $login $uid $gid $home $shell重定向输出:使用 > 符号可以将命令的输出重定向到文件中,而不是终端。例如:echo "Hello, World!" > output.txt上述代码将输出文本 "Hello, World!" 并将其写入到 output.txt 文件中。读取文件内容:使用 cat 命令可以读取文件的内容,并将其输出到终端。例如:cat file.txt上述代码将读取 file.txt 文件的内容,并将其显示在终端上。2.4 算术运算您可以对 Bash shell 变量执行数学运算。Bash shell 有内置的算术选项。您也可以使用外部命令,如 expr 和 bc 计算器。Bash Shell中的算术扩展通过使用以下格式来放置整数表达式来进行算术扩展和计算:$((expression)) $(( n1+n2 )) $(( n1/n2 )) $(( n1-n2 ))示例:使用 echo 命令将两个数字相加:[root@bogon opt]# echo $(( 10 + 5 )) 15使用 x 和 y 变量将两个数字相加。使用文本编辑器创建名为 add.sh 的 shell 程序:#!/bin/bash x=5 y=10 ans=$(( x + y )) echo "$x + $y = $ans"保存并关闭文件。按以下步骤运行:chmod +x add.sh ./add.sh输出结果5 + 10 = 15示例2:使用 read 命令创建名为 add1.sh 的交互式程序:#!/bin/bash read -p "Enter two numbers : " x y ans=$(( x + y )) echo "$x + $y = $ans"输出结果:Enter two numbers : 20 30 20 + 30 = 50带整数的数学运算符运算符描述示例求值结果+加法echo $(( 20 + 5 ))25-减法echo $(( 20 - 5 ))15/除法echo $(( 20 / 5 ))4*乘法echo $(( 20 * 5 ))100%取模echo $(( 20 % 3 ))2++自增x=5 echo $(( x++ )) echo $(( x++ ))5 6--自减x=5 echo $(( x-- ))4**幂运算x=2 y=3 echo $(( x ** y ))8优先级顺序 运算符按照优先级顺序进行评估。这些级别按照优先级递减的顺序列出(引用自bash手册页面)
2024年01月25日
70 阅读
0 评论
0 点赞
2024-01-25
第一章节 理解Shell基础
## 第一章节 理解Shell基础 1.1 介绍Shell是什么以及为什么使用ShellShell 为你提供了一个连接 Unix 系统的界面。它收集输入,并根据输入执行程序。程序执行完毕后,它会显示该程序的输出结果。shell 是我们运行命令、程序和 shell 脚本的环境。Shell 有不同的类型,就像操作系统有不同的类型一样。每种 shell 都有自己的一套公认的命令和功能。shell 提示符提示符 $ 称为命令提示符,由 shell 发出。当提示符显示时,您可以键入命令。按 Enter 键后,Shell 会读取你的输入。它通过查看输入的第一个单词来确定您要执行的命令。单词是一组不间断的字符。空格和制表符分隔单词。下面是一个日期命令的简单示例,该命令显示当前日期和时间[root@y36-server ~]# date 2023年 09月 19日 星期二 22:08:05 CST 1.2 Shell的种类:Bash、sh、zsh等在 Unix 中,主要有两种 shellBourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.C shell − If you are using a C-type shell, the % character is the default prompt.Bourne Shell 有以下子类别Bourne shell (sh)Korn shell (ksh)Bourne Again shell (bash)POSIX shell (sh)不同的 C 型外壳如下C shell (csh)TENEX/TOPS C shell (tcsh)最初的 Unix shell 是由 Stephen R. Bourne 于 20 世纪 70 年代中期在新泽西州 AT&T 贝尔实验室工作时编写的。伯恩 shell 是 Unix 系统上出现的第一个 shell,因此被称为 "shell"。在大多数 Unix 版本中,Bourne shell 通常安装为 /bin/sh。因此,它是编写可用于不同版本 Unix 的脚本的首选 shell。1.3 执行Shell脚本的方法./ sh bash
2024年01月25日
79 阅读
0 评论
0 点赞
2024-01-24
shell 编程语言
# Shell 编程语言一、 什么是shellUnix shell是一种命令行解释器或shell,为类Unix操作系统提供命令行用户界面。shell既是交互式命令语言,也是脚本语言,操作系统使用shell脚本控制系统的执行。Shell 为你提供了一个连接 Unix 系统的界面。它收集输入,并根据输入执行程序。程序执行完毕后,它会显示该程序的输出结果。shell 是我们运行命令、程序和 shell 脚本的环境。Shell 有不同的类型,就像操作系统有不同的类型一样。每种 shell 都有自己的一套公认的命令和功能。shell 提示符提示符 $ 称为命令提示符,由 shell 发出。当提示符显示时,您可以键入命令。按 Enter 键后,Shell 会读取你的输入。它通过查看输入的第一个单词来确定您要执行的命令。单词是一组不间断的字符。空格和制表符分隔单词。下面是一个日期命令的简单示例,该命令显示当前日期和时间[root@y36-server ~]# date 2023年 09月 19日 星期二 22:08:05 CST1.2 Shell的种类:Bash、sh、zsh等在 Unix 中,主要有两种 shellBourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.C shell − If you are using a C-type shell, the % character is the default prompt.Bourne Shell 有以下子类别Bourne shell (sh)Korn shell (ksh)Bourne Again shell (bash)POSIX shell (sh)不同的 C 型外壳如下C shell (csh)TENEX/TOPS C shell (tcsh)最初的 Unix shell 是由 Stephen R. Bourne 于 20 世纪 70 年代中期在新泽西州 AT&T 贝尔实验室工作时编写的。伯恩 shell 是 Unix 系统上出现的第一个 shell,因此被称为 "shell"。在大多数 Unix 版本中,Bourne shell 通常安装为 /bin/sh。因此,它是编写可用于不同版本 Unix 的脚本的首选 shell。二、编译语言编程语言的分类:低级开发语言机器语言汇编语言高级开发语言Clinux CC#C++Java 语言Python 语言Python 自动化Python webPython 自动化办公Python 人工智能golang云原生的时代Ruby语言R 语言脚本开发语言shellphpjavascript面向对象语言: Java... 解释型语言: shell....shell 脚本编程语言结构#!/bin/bash #解释器表示使用bash解释 shell语句Shell 编程语言一、 什么是shellUnix shell是一种命令行解释器或shell,为类Unix操作系统提供命令行用户界面。shell既是交互式命令语言,也是脚本语言,操作系统使用shell脚本控制系统的执行。Shell 为你提供了一个连接 Unix 系统的界面。它收集输入,并根据输入执行程序。程序执行完毕后,它会显示该程序的输出结果。shell 是我们运行命令、程序和 shell 脚本的环境。Shell 有不同的类型,就像操作系统有不同的类型一样。每种 shell 都有自己的一套公认的命令和功能。shell 提示符提示符 $ 称为命令提示符,由 shell 发出。当提示符显示时,您可以键入命令。按 Enter 键后,Shell 会读取你的输入。它通过查看输入的第一个单词来确定您要执行的命令。单词是一组不间断的字符。空格和制表符分隔单词。下面是一个日期命令的简单示例,该命令显示当前日期和时间[root@y36-server ~]# date 2023年 09月 19日 星期二 22:08:05 CST1.2 Shell的种类:Bash、sh、zsh等在 Unix 中,主要有两种 shellBourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.C shell − If you are using a C-type shell, the % character is the default prompt.Bourne Shell 有以下子类别Bourne shell (sh)Korn shell (ksh)Bourne Again shell (bash)POSIX shell (sh)不同的 C 型外壳如下C shell (csh)TENEX/TOPS C shell (tcsh)最初的 Unix shell 是由 Stephen R. Bourne 于 20 世纪 70 年代中期在新泽西州 AT&T 贝尔实验室工作时编写的。伯恩 shell 是 Unix 系统上出现的第一个 shell,因此被称为 "shell"。在大多数 Unix 版本中,Bourne shell 通常安装为 /bin/sh。因此,它是编写可用于不同版本 Unix 的脚本的首选 shell。二、编译语言编程语言的分类:低级开发语言机器语言汇编语言高级开发语言Clinux CC#C++Java 语言Python 语言Python 自动化Python webPython 自动化办公Python 人工智能golang云原生的时代Ruby语言R 语言脚本开发语言shellphpjavascript面向对象语言: Java... 解释型语言: shell....shell 脚本编程语言结构#!/bin/bash #解释器表示使用bash解释 shell语句sh 解释器[root@lvs02-mysql-server ~]# cat example #!/bin/sh #解释器表示使用sh解释 echo "you b c"使用env指定解释#!/bin/env bash echo "you b c"[root@lvs02-mysql-server ~]# cat example #!/bin/sh #解释器表示使用sh解释 echo "you b c"使用env指定解释#!/bin/env bash echo "you b c"
2024年01月24日
37 阅读
0 评论
0 点赞
1
2