shell:概述、脚本编写、变量的简单基础
shell(众多解释器的总结) bash(默认的解释器)
解释器存放位置:
/etc/shells查看已装的解释器
没有解释器可以安装相应的解释器
直接输入解释器名称进入,exit退出
永久更改解释器:
useradd -s 解释器/bin/ksh 新用户 #针对新用户,之前要创建新用户
usermod -s 解释器/bin/ksh 老用户/root #针对老用户
在 /etc/passwd查看
某些解释器不支持tab键,需安装bash-completion包
历史命令:history
vim /etc/profile
HISTSIZE=1000 #默认1000条
清空历史:history -c
统计历史命令个数:history | wc -l
标准输出 1 >ok.log
错误输出 2 2>ok.log
标准输入 0 <ok.log
默认输出在屏幕
[root@svr7 ~]# ls anaconda-ks.cfg bbb >ok.log
ls: 无法访问bbb: 没有那个文件或目录
[root@svr7 ~]# cat ok.log
anaconda-ks.cfg
[root@svr7 ~]# ls anaconda-ks.cfg bbb 2>ok.log
anaconda-ks.cfg
[root@svr7 ~]# cat ok.log
ls: 无法访问bbb: 没有那个文件或目录
邮件:
1.echo "内容" | mail -s 标题 用户 #缺点:内容少
2.mail -s 标题 用户 < mail.txt(提前创建,vim mail.txt)
脚本的编写
1.新建文件(.sh)
2.写内容(解释器#!/bin/bash、注释#:时间、版本、功能、联系人(多为邮箱))
3.给权限,执行
echo {1..5}
for i in {1..5}
do
#######################################################vncviewer 172.40.50.118:8
######################################################
top 大写的P 按CPU排序 #M 按内存排序 #
######################################################uptime CPU
free 内存#######################
small [有点:快,漏洞少bug]【缺点:功能少,依赖关系】yum-config-manager createrepo /opt/libreoffice/#####################################################
执行脚本:
1.绝对路径 /root/*.sh
2.相对路径 ./*.sh
3.bash 脚本名(不需赋予权限)
4.source 脚本名(特例)
1.2.3种都是开子进程
4不开子进程子进程:用pstree查看进程,-sshd-sshd-bash-pstreepstree这个命令是bash的子进程
开子进程:若bash是当前命令的窗口,那么脚本在pstree里执行
不开子进程:就在bash里执行
source是特例,比如:脚本里写个exit,开子进程执行就会在pstree里执行exit然后跳出到bash里, 不开子进程执行,跳到sshd里,远程断了!脚本写在/bin目录下就不要写.sh
##########################################################
PS1:1级提示符
PS2:2级提示符
修改提示符(临时):PS1=XXX#!/bin/bash
#准备yum源
echo "准备配置yum源..."#清空之前的yum配置文件
rm -rf /etc/yum.repos.d/*#写入yum配置信息,并导入到/etc/yum.repos.d/dvd.repo文件当中
echo "[dvd]
name=dvd
baseurl=http://192.168.4.254/rhel7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/dvd.repo#清空yum缓存
yum clean all &> /dev/null
#列出可用软件包
echo -e "\033[35m yum repolist | grep "repolist" \033[0m"
#建立缓存文件
echo -e "\033[36m yum makecache \033[0m"
echo "yum仓库建立成功"# 安装FTP服务
yum -y install vsftpd >/dev/null 2>error.log
# 启动FTP服务
systemctl restart vsftpd >/dev/null 2>error.log# 设置FTP服务开机自启动
systemctl enable vsftpd
# 提示是否成功
systemctl is-enabled vsftpd | grep enabled && echo "设置开机自启成功"
echo "请去测试是否成功ftp"
##############################################################
a=1
b=2
[root@04:49:06 opt 72]#echo $a$b
12
[root@04:49:31 opt 74]#echo ${a}${b}
12
###############################################
02.
#!/bin/bashecho $0 脚本名
echo $1 第一个参数
echo $2 第二个参数
echo $3 第三个参数
echo $* 所有参数
echo $# 共几个参数
##########################################################单引号'' :界定一个整体,并且实现屏蔽特殊字符号
[root@svr7~]# a=24
[root@svr7~]# echo $a
24
[root@svr7~]# echo "$a"
24
[root@svr7~]# echo '$a'
$a
[root@svr7~]# echo 11'$a'
11$a
[root@svr7~]# echo 11$a
1124
[root@svr7~]# echo 11"$a"
1124双引号"" :界定一个整体"a b" != a b #两者不相等"ab" == ab #两者相等touch "a b" #创建一个文件为"a b",而不是a和b两个 rm a b双引和单引的区别:有无特殊符号无特殊符号就相等
echo "a b" == echo 'a b'
echo "$ab" != echo '$ab'反引号`` $()
$(cat /etc/passwd)引用()内可执行的命令
`cat /etc/passwd` 优先级提高[root@svr7~]# tar -jpcv log-$(date +%F).tar.gz /var/log
tar -czf后面没指定路径则指定当前路径下的log。。。每周五备份一个/var/log,使用tar,备份到root
crontab -e
03 03 * * 5 tar -czf /root/log-.tar /var/log变量:
局部变量(自定义默认)
全局变量(系统变量) 要想改为全局变量 加个export
常见linux系统预设变量:
$USER(用户名变量) $UID(用户ID)
$PATH(命令搜索路径) $HOME(用户家目录)
$SHELL(当前使用的shell) $PWD(当前工作目录)
[root@svr7~]# export bb=88
[root@svr7~]# echo $bb
88
[root@svr7~]# bash
[root@svr7 ~]# echo $bb
88删除变量名:unset 变量名stty-echo:关闭回显,在键盘上敲命令不显示
stty echo:打开回显
转载于:https://blog.51cto.com/13400552/2047712
shell:概述、脚本编写、变量的简单基础相关推荐
- Linux shell:脚本编写快速入门
文章目录 1.Sha-Bang 2."变量" 2.1 变量 2.2 运算 2.3 字符串 2.4 数组 3.流程控制 3.1 if 判断 3.2 case 分支 3.3 for 循 ...
- kafka安装、配置、启动、常用命令及shell启动脚本编写
config :kafka配置文件所在目录 server.properties 主要配置文件 zookeeper.properties kafka内置了zk,一般要将其替换掉 以下关于生产 ...
- SHELL的脚本编写(2)
目录 1.编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如:test1.test2.test3........test10 首先创建并编写f ...
- Linux编写脚本查看mod,Linux shell脚本编写基础
在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...
- linux 脚本编写 -eq,关于shell脚本基础编程第四篇
shell脚本基础编程第四篇 本章主要内容:函数 函数 function: function 名称 { 命令 ; } 或 name () { 命令 ; } 定义 shell 函数. 创建一个以 NAM ...
- shell脚本编写之常用基础命令(diff、patch、cut、sort、uniq、与||、test、tr)
文章目录 一.shell(计算机壳层) 二.shell中常用的基本命令 1.diff 命令(比对文件) 1.1 基本概念以及命令的格式 1.2 结果读取方式 1.3 diff中常用的参数 2.patc ...
- linux shell概述,Linux学习 -- Shell基础 -- 概述
Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串 双引号 ...
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...
- linux 脚本在哪里编写,Linux 脚本编写基础(一)
1. Linux脚本编写基础1.1语法基本介绍1.1.1开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使 ...
最新文章
- 腾讯面试官:如何停止一个正在运行的线程?我蒙了。。。
- ajax、offset
- 微信小程序设置域名、不校验域名
- asp.net mvc连接mysql_ASP.Net MVC连接MySQL和Code First的使用
- 如何避免在IE内核时,按BackSpace时进行网页会进行回退
- Hbase报错ERROR: KeeperErrorCode = NoNode for /hbase/master
- 数据结构期末复习之平衡二叉树
- lamuda表达式 list移除空元素_java8 Lambda表达式遍历并移除元素,报错:ConcurrentModificationException的解决办法...
- python thread 多线程
- SparkStreaming读取本地文件进行wordCount
- PyCharm(Python编译器汉化)
- 图像处理--VGA分辨率
- 【Uniapp】Uniapp 实现 App 版本自动升级
- anaconda安装完怎么打开_10分钟带你安装和配置Anaconda
- c语言 虚拟示波器软件下载,多功能串口虚拟示波器(DataScope)
- UVa 1586 Molar mass
- JVM|记一次生产环境 CPU 占用飙高问题解决
- C语言二维数求矩阵每行的最大值与最小值
- 健身管理系统源码设计和实现
- 渗透测试-完整渗透流程(一.信息收集)
热门文章
- C++新特性探究(七):初始化列表(Initialization List)
- r730服务器内置SD卡位置,已解决: RE: 关于r730xd做存储服务器的疑问 - Dell Community...
- 郑州轻工业学校计算机网络,计算机网络期末考试a卷(郑州轻工业学院).doc
- C++安全方向(三):3.5 SHA-1 算法分析和代码演示
- python的网络编程学什么_【Python学习】网络编程
- python小老鼠编程_Python小老鼠编程,Python入门到精通(非常详细)
- oracle根据当前月份往前,oracle获取系统日期--当前时间+前一天+当前月+前一个月...
- python的实例属性_python 实例属性和类属性
- java stream intermediateterminal方法
- Spring 解耦工厂模式