开发语言简单举例:shell,Python,Java,JavaScript,HTML,CSS
强语言:定义变量时需要声明数据类型:如Java,C语言等
整型:int ,如1 ,2 ,3, ,100,等
长整型:Long
浮点型
单精度,float,4字节,如3.14
双精度,double,8字节
String:字符串
char ,字符 ‘a’ 1字节(Java中 ‘a’ 2字节),'男’2字节
boolean,布尔值,true or false
date,日期
int a=10;
弱语言:不需要声明,如shell,JavaScript,Python
a=10
a=10.1
HTML,标记语言,标签, ,xml文件格斯
json,键:值,key:value,a:10
shell变量直接定义,不需要声明,没有面向对象思想,所有的语言编写犹如记流水账
shell的作用
命令解释器,“翻译官”
介于系统内核与用户之间,负责解释命令行
用户的登录shell
登录后默认使用的shell程序,一般为/bin/bash
不同shell的内部指令,运行环境等会有所区别
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
使用vim文本编辑器
每行一条Linux命令,按执行顺序依次编写
脚本后缀为.sh
例如,将一下三条命令按顺序用shell脚本编写
cd /boot
pwd
ls -lh vm*
[root@localhost opt]# vim demo.sh
#!/bin/bash 'shell脚本标准格式'
cd /boot
pwd
ls -lh vm*
~ '保存退出'
[root@localhost opt]# ls
demo.sh rh
方法一:sh脚本文件路径
[root@localhost opt]# sh demo.sh
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
方法二:source脚本文件路径
[root@localhost opt]# source demo.sh
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
方法三:.空格脚本文件路径
[root@localhost opt]# . demo.sh '会自动切换到目标文件夹,所以文件夹需要切换回/opt'
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
方法三:.空格脚本文件路径
[root@localhost opt]# . demo.sh '会自动切换到目标文件夹,所以文件夹需要切换回/opt'
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
方法四:脚本文件路径(绝对路径与相对路径)
[root@localhost boot]# cd /opt 'source之后会自动切换到目标文件夹,所以文件夹需要切换回/opt'
[root@localhost opt]# ./ demo.sh
-bash: ./: Is a directory '提示没有权限'
[root@localhost opt]# chmod +x demo.sh '增加权限'
[root@localhost opt]# ./demo.sh
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost opt]# '拥有权限之后,我们做个另两种方法的测试'
[root@localhost opt]# sh demo.sh
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost opt]# source demo.sh
/boot
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
[root@localhost boot]#
./类似于sh,不切换路径
[root@localhost opt]# vim demo.sh
#!/bin/bash
#This is my first shell-script '脚本描述信息'
cd /boot
echo "当前所在路径:" '输出友好提示信息'
pwd
echo "以vm为开头的文件是:" '输出友好提示信息'
ls -lh vm*
[root@localhost opt]# ./demo.sh
当前所在路径:
/boot
以vm为开头的文件是:
-rwxr-xr-x. 1 root root 5.7M Oct 23 14:07 vmlinuz-0-rescue-d078430d0d8f434fb5ad6e47678ea86f
-rwxr-xr-x. 1 root root 5.7M Aug 23 2017 vmlinuz-3.10.0-693.el7.x86_64
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
[root@localhost opt]# chattr +i /etc/passwd /etc/shadow '锁定用户和密码文件'
[root@localhost opt]# lsattr /etc/passwd /etc/shadow '查看锁定情况'
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost opt]# useradd lisi '尝试添加用户'
useradd: cannot open /etc/passwd '提示错误'
[root@localhost opt]# useradd lisi 2> /opt/error.txt '将错误信息输入到新的error.txt'
[root@localhost opt]# ls
demo.sh error.txt rh
[root@localhost opt]# cat /opt/error.txt '查看文本内容'
useradd: cannot open /etc/passwd
[root@localhost opt]# '操作没有错误,则输出的内容没有错误信息'
将左侧的命令输出结果,作为右侧命令的处理对象(前后有关系时使用)
[root@localhost opt]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
lisi:x:1000:1000:lisi:/home/lisi:/bin/bash
[root@localhost opt]# grep "bash$" /etc/passwd | awk -F: '{print $1,$7}' '此间的-F:也可以用空格和Tab代替'
root /bin/bash
lisi /bin/bash
[root@localhost opt]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 20G 4.1G 16G 21% /
devtmpfs devtmpfs 898M 0 898M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 xfs 10G 39M 10G 1% /home
/dev/sda1 xfs 6.0G 174M 5.9G 3% /boot
tmpfs tmpfs 183M 4.0K 183M 1% /run/user/42
tmpfs tmpfs 183M 36K 183M 1% /run/user/1000
tmpfs tmpfs 183M 0 183M 0% /run/user/0
[root@localhost opt]# df -hT | awk '{print $1,$2,$6}' '查看第1.2.6列的数据'
Filesystem Type Use%
/dev/sda2 xfs 21%
devtmpfs devtmpfs 0%
tmpfs tmpfs 0%
tmpfs tmpfs 1%
tmpfs tmpfs 0%
/dev/sda5 xfs 1%
/dev/sda1 xfs 3%
tmpfs tmpfs 1%
tmpfs tmpfs 1%
tmpfs tmpfs 0%
[root@localhost opt]# df -hT | awk -F " " '{print $1,$2,$6}' '查看第1.2.6列的数据'
Filesystem Type Use%
/dev/sda2 xfs 21%
devtmpfs devtmpfs 0%
tmpfs tmpfs 0%
tmpfs tmpfs 1%
tmpfs tmpfs 0%
/dev/sda5 xfs 1%
/dev/sda1 xfs 3%
tmpfs tmpfs 1%
tmpfs tmpfs 1%
tmpfs tmpfs 0%
[root@localhost opt]# df -hT | grep "sda2" | awk '{print $6}'
21% '查看设备sda2第6列的数据'
awk :大部分情况,按列读取
大部分情况下
grep:过滤关键字
sed: 按行读取
awk:按列读取数据
$1,$2:位置变量