Linux的从零开始(第六天)

时间管理

GMT Greenwich Mean Time 格林尼治标准时间

CST 中国时区
UTC 世界统一时间、世界标准时间、国际协调时间
DST 夏令时(Daylight Saving Time) 指在夏天太阳升起的比较早时,将时间拨快一小时,以提早日光的使用
PDT (Pacific Daylight Time)太平洋夏季时间
列出所有时区:timedatectl list-timezones
查看当前系统时间:timedatectl
用系统时间同步硬件时间:hwclock -w or --systohc
用硬件时间同步系统时间:hwclock -s or --hctosys
使用ntpd服务同步网络时间:(centos7默认没有该服务,需要安装)
yum -y install ntp ntpdate 安装ntp ntpdate服务
查看启动状态 ntp(
network time protocol) ntpd 网络时间协议服务:
service ntpd status
手动同步:
ntpdate cn.pool.ntp.org
启动:
service ntpd start
设置开机启动( chronyd时间服务和ntpd冲突 )
systemctl disable chronyd //先关闭chrony时间服务
systemctl enable ntpd //设置开机启动
ntpq -p 查看 同步间隔

Shell脚本

shell脚本通常以.sh作为后缀名,但不是必须的。

Shell是一种 解释型编程 语言,不需要编译,执行时也是按行执行。
Shell脚本是由解释器解释执行的,常见的解释器有:
bash dash ash ksh sh等
Bourne Shell /usr/bin/sh /bin/sh
Bourne Again Shell /bin/bash
C Shell /usr/bin/csh
K Shell /usr/bin/ksh
Shell for Root /sbin/sh
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。
脚本就是命令的堆砌
脚本可以接受参数,也可以有变量,也可以有流程控制甚至还有函数

shell脚本的编制、执行和调试

.编制:使用文本编辑器vi或者vim
执行:执行前必须为脚本文件添加可执行权限
chmod u+x script-file : 为脚本添加可执行权限
bash script-file 或者 ./script-file 或者 /绝对路径/script-file
.调试:
bash -x -n -v script-file
-n :只读取shell脚本,但不会去执行它,常用来测试脚本语法错误
-x :进入跟踪模式,显示所执行的每一行命令,常用来调试脚本逻辑
-v : 在执行script之前,先将script的内容输出到屏幕上

shell版hello word

Shell中的注释用‘#’

Shell第一行代码:#!/bin/bash 声明这个script使用的shell解释器
#!/bin/bash
echo "Hello World !" 
运行shell脚本
运行shell有两种方法
1. 作为可执行程序运行shell脚本
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
2. 作为解释器参数执行shell脚本
bash test.sh 
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

shell变量

定义变量

 you_name="tom"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线 _
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
变量名区分大小写
错误的变量名
?var=123 
user*name=bbb

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可

your_name="aaa" 
echo $your_name 
echo ${your_name} 
echo "name:$your_name" 
echo "name:${your_name}"
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种:
num=20  
echo "aaa${age}aaa"  
echo "aaa$ageaaa" #此时$age没有边界限定,shell无法正确识别age变量。
#会把$ageaaa作为一个变量,这部分内容会变为空

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

下面的例子尝试更改只读变量,结果报错:

#!/bin/bash 
myUrl="https://www.baidu.com" 
readonly myUrl 
myUrl="https://www.google.com"

删除变量

使用 unset 命令可以删除变量。

unnset 变量

 变量被删除后不能再次使用。unset 命令不能删除只读变量。

#!/bin/sh 
myUrl="https://www.baidu.com" 
unset myUrl 
echo $myUrl

变量类型

shell中会存在三种变量

1.局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访 问局部变量。
2.环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证 其正常运行。必要的时候shell脚本也可以定义环境变量。
3.shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是 局部变量,这些变量保证了shell的正常运行

字符串

Shell字符串

字符串是shell编程中最常用最有用的数据类型 ,字符串可 以用单引号,也可以用双引号,也可以不用引号。
单引号
 str='this is a string'
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字 符串拼接使用。
age=20 
str='your age is ${age}' #变量在双引号中会被解析,但在双引号中不会解析
echo $age
结果
you age is ${age}
双引号
your_name="aaa" 
str="Hello, I know you are \"$your_name\"! \n" 
#-e:输出的时候,对内容启用转义
echo -e $str
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
拼接字符串
your_name="runoob" 
# 使用双引号拼接
greeting="hello, "$your_name" !" 
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1 
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !' 
echo $greeting_2 $greeting_3
输出结果
hello, runoob ! hello, runoob ! 
hello, runoob ! hello, ${your_name} !
获取字符串长度
string="abcd" 
echo ${#string} # 输出 4
变量为数组时, ${#string} 等价于 ${#string[0]} :
string="abcd" 
echo ${#string[0]} # 输出 4
提取子字符串
s="abcdefg" 
echo ${s:1:4} #输出bcde,从2-4
查找子字符串
s="this is a cat" 
echo `expr index "$s" ia ` #输出3,返回的索引值从1开始计数
注意:
以上脚本中 ` 是反引号,而不是单引号 '。所以能够执行程序指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值