大数据学习(一),shell
一:安装虚拟机
二:安装基础应用
由于安装虚拟机时,安装的应用是最小应用,所以其中很多的命令并不能使用,需要下载。这里下载ifconfig和vim。
1.下载ifconfig
yum install -y net-tools
2.下载vim
yum install -y vim
3.修改ip地址
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33
4.修改虚拟机名称
vim /etc/hostname 修改为hdp1
5.
vim /etc/hosts 添加ip 192.168.13.130 hdp1
6.完成之后重启即可。使用ifconfig查看ip是否修改成功。
三:shell 入门
一:概念
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。同时shell也是一个强大的编程语言
二:shell解析器
2.1:查看linux中的shell解析器
[root@hadoop ~]$sudo cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh
2.2:bash和sh的区别
[root@hadoop ~]$ cd /bin [root@hadoop bin]$ ll | grep bash -rwxr-xr-x. 1 root root 941880 5月 11 2016 bash lrwxrwxrwx. 1 root root 4 5月 27 2017 sh -> bash
2.3: 默认解析器
[root@hadoop bin]$ echo $SHELL
/bin/bash
三:创建脚本
3.1:创建第一个shell脚本
cd opt mkdir test cd test touch helloworld.sh vi helloworld.sh 输入以下内容 #!/bin//bash echo "helloworld"
3.2:执行脚本
方法一:解析器执行
sh helloworld.sh 或者 bash helloworld.sh
方法二:绝对路径去运行
赋予执行权限 chmod 777 helloworld.sh ./helloworld.sh
第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限
3.3:多命令执行
touch batch.sh vi batch.sh 在batch.sh中输入以下内容 #!/bin/bash cd /opt/ touch lili.txt echo "I love summer" >> lili.txt
运行方法如上,其实就是将创建文档和写入包装成一个命令去执行。
注:所有的脚本都以 #!/bin/bash 开头
四:案例
4.1:if判断
输入一个参数,如果是1,则输出I Love Summer,如果是2,则输出I Love Spring,如果是其它,什么也不输出
if 空格 [空格 条件 空格] then 程序 elif 空格 [空格 条件 空格] then 程序 else 程序 fi
#!/bin/bash if [ $1 -eq 1 ] then echo "I Love Summer" elif [ $1 -eq 2 ] then echo "I Love Spring" fi
4.2:case语句
case $变量名 in 值1) 变量值=1执行的程序 ;; 值2) 变量值=1执行的程序 ;; *) 变量值为其他执行的程序 ;; esac
输入一个数字,如果是1,则输出hello,如果是2,则输出bye,如果是其它,输出gun
#!/bin/bash case $1 in 1) echo "hello" ;; 2) echo "bye" ;; *) echo "gun" ;; esac
4.3:for循环
for((变量;条件;步长增量)) do 程序 done
for 变量 in 值1 值2 值3… do 程序 done
求出 1-100的累加和
#!/bin/bash s=0 for((i=0;i<=100;i++)) do s=$[$s+$i] done echo $s
4.4:while循环
while 空格[空格 条件判断 空格] do 程序 done
1加到100
#!/bin/bash s=0 i=1 while [ $i -le 100 ] do s=$[$s+$i] i=$[$i+1] done echo $s
求n的阶乘
#!/bin/bash read -p "请输入一个数作为阶乘" num # 先判断这个数位非0的数 (($num+0)) >/dev/null # 判断上次的结果是否正确 if [ $? -ne 0 ] then echo "您输入的值有误,请输入一个数字" fi # 判断这个数是否<0 小于0也不符合条件 if [ $num -lt 0 ] then echo "您输入的数小于0 不符合条件" else # 满足大于0的条件 sum=1 for((i=1;i<=$num;i++)) do sum=$[sum*i] done echo $sum fi
常见经典案例
2.1:九九乘法表
#!/bin/bash # 九九乘法表 for((i=1;i<=9;i++)) do for((j=1;j<=i;j++)) do echo -ne "$j*$i=$(($j*$i)) " done echo -ne "\n" done
2.2:while循环打印1-5的数字,当数字为4时,输出考生姓名
#!/bin/bash # while循环打印1-5的数字,当数字为4时,输出考生姓名 i=1; while [ $i -le 5 ] do echo "$i" if [ $i -eq 4 ] then echo "你的名字" fi i=$[$i+1] done
2.3:斐波那契数列
#!/bin/bash # 斐波那契数列 read -p "请输入一个数作为最终斐波那契数列的个数" num # 表示第一个数 a=0 # 表示第二个数 b=1 # 表示第三个数 a+b的和 做统计所以从0开始 c=0 for((i=1;i<=$num;i++)) do echo "$a" ((c=a+b)) ((a=b)) ((b=c)) done
2.4:打印倒三角,正三角
#!/bin/bash # 打印倒三角 read -p "请输入一个数作为行数" num # 外循环 表示的是行数 for((i=0;i<$num;i++)) do # 打印空 for((j=$i;j>=1;j--)) do echo -ne " " done # 打印* for((k=((2*($num-$i)-1));k>=1;k--)) do echo -ne "*" done # 换行 echo -ne "\n" done
#!/bin/bash # 打印正三角 for((i=1;i<=5;i++)) do for((j=5;j>=$i;j--)) do echo -ne " " done for((k=1;k<=$[2*$i-1];k++)) do echo -ne "*" done echo -ne "\n" done
2.5:实现批量添加20个用户,用户名为user_1-user_20,密码为user+123
#!/bin/bash # 实现批量添加20个用户,用户名为user_1-user_20,密码为user+123 count=$1 for ((i=1;i<=$count;i++)) do # useradd是添加用户的。后面应该还要添加一个用户名。 # -d是指定用户的家目录 # -s是指定用户的登录shell # 例如:useradd -d /usr/qqq -s /bin/bash qqq useradd -d /home/user_$i -s /bin/bash user_$i; # 更新用户密码信息,适用于shell脚本 echo user_"$i"123 |passwd --stdin user_$i; done
2.6:提示七秒内,读取控制台输入的名称
#!/bin/bash read -t 7 -p "input your name " NAME echo $NAME [bw@hadoop100 datas]$ ./read.sh input your name jiabw jiabw
2.7:判断输入的是否是数字,且是正数还是负数
(($num+0)) 可以通过 $? 这种方式进行查看 是否成功 是否是数字, >/dev/null 是为了清理数据,相当于丢进垃圾桶,也可以说是丢进黑洞
#!/bin/bash read -t 5 -p "请输入一个数值" num echo "您输入得是:" $num # 这个数+0得值追加到黑洞中 (($num+0)) >/dev/null 上一步执行不成功 if [ $? -ne 0 ] then echo "您输入得不是一个数" else if [ $num -lt 0 ] then echo "您输入得是一个负数" elif [ $num -gt 0 ] then echo "您输入得是一个正数" fi fi
https://blog.51cto.com/xiaowangzai/2090964#:~:text=%E9%A6%96%E5%85%88%E5%A4%A7%E5%AE%B6%E5%85%88%E6%9D%A5%E7%9C%8B%E4%B8%80%E4%B8%8B%E4%BD%BF%E7%94%A8echo%20%E8%BF%9B%E8%A1%8C%E8%AE%A1%E7%AE%97%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%AD%97%E7%AC%A6%20%2B%20%E6%95%B0%E5%AD%97%E4%BC%9A%E6%98%AF%E4%BB%80%E4%B9%88%E6%95%88%E6%9E%9C%E3%80%82%20%E5%9C%A8%E8%BF%99%E4%B8%AA%E4%BE%8B%E5%AD%90%E4%B8%AD%EF%BC%8Cshell,%E4%BC%9A%E6%8A%8A%E5%AD%97%E7%AC%A6%E5%BD%93%E5%81%9A0%E6%9D%A5%E8%AE%A1%E7%AE%97%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%88%91%E4%BB%AC%E6%83%B3%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E7%9A%84%E6%98%AF%E5%90%A6%E4%B8%BA%E6%95%B0%E5%AD%97%EF%BC%8C%E9%82%A3%E5%B0%B1%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20echo%20%24%20%28%20%28%E5%8F%98%E9%87%8F%2B1%29%29%E5%8E%BB%E5%88%A4%E6%96%AD%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%B8%BA1%EF%BC%8C%E9%82%A3%E4%B9%88%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E7%9A%84%E4%B8%BA%E5%AD%97%E7%AC%A6%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%B8%BA%E6%95%B0%E5%AD%97%EF%BC%8C%E9%82%A3%E4%B9%88%E7%BB%93%E6%9E%9C%E4%B8%8D%E4%B8%BA1.