Linux shell编程基础

一、linux常用命令
    1.修改机器名称(实质上是机器的域名,相当于www.baidu.com):vim /etc/hostname 
    2.关闭机器:shutdown -h now 或者 reboot -h now来直接重启
    3.查看ip地址:ifconfig
    4.通过vim /etc/hosts修改域名和ip的映射关系:192.186.0.104  Master,访问的时候直接访问域名即可,如果要访问远程访问机器,可以直接访问当前机器的 /etc/hosts 文件中配置远程机器的域名IP地址的映射关系
    5.pwd(print work directory)--查看当前所在的工作目录
    6.cd(change directory)--切换到某个工作目录
    7.ls(list)--查看当前目录下的文件的具体名称,通过ls -ll来查看当前目录下文件的详细信息
    8.man+命令名称 --查看命令的用法
    9.vim--打开文件,vim是linux文本编辑器,打开文件后可以有i进行插入编辑,“:wq”保存修改 “q!”不保存,强制退出,vim filename--如果filename存在打开文件,如果文件不存在则创建文件
    10.查看文件内容,使用vim或者gedit图形化编辑器,cat--来显小文件中的所有内容,如果文件需要被一页一页的查看,此时可以用more命令来查看,enter间来翻页,tail--查看文件最后的内容,经典的使用场景是查看服务器日志内容,head--查看文件开头的内容
    11.创建文件简洁方式:touch filename 例如touch linux.txt
    12.目录的创建可以直接使用mkdir来创建,如果多级目录需要创建,可以用mkdir -p
    13.删除空目录rmdir,rm -rf 强制删除当前文件夹的所有内容 
    14.移动文件 mv srcfile disfile
    15.拷贝文件 cp srcfile disfile

二、文件压缩解压缩、文件用户权限、分布式ssh配置
    1.文件压缩命令:tar -czvf 目标文档的名字 要压缩文档的名称
    2.文件解压缩命令:tar -zxvf 要解压文件  可以去掉v这个option来隐藏具体的详情
    3.
    -rwxrw-r-- 1 hadoop hadoop  368 9月  15 16:23 start.sh
    -rw-rw-r-- 1 hadoop hadoop   85 9月  14 10:49 start-worker2.sh
        第1列:每一行最前面的内容代表文件类型:文件使用“-”,目录使用“d”,快捷方式“l”
        第2-4列:代表当前用户对于该文件(夹)具体的操作权限,需要说明的是权限有:
        a)可读 r 2^2 = 4
        b)可写 w 2^1 = 2
        c)可执行 x 2^0 = 1
        如果从数字的角度考虑,对文件的最高权限为7
        第5-7列:代表当前用户所在用户组对于该文件(夹)具体的操作权限
        第8-10列:代表当前用户所在用户组以外其他用户对于该文件(夹)具体的操作权限
        第11列:代表当前文件的链接数:
        第12列:代表当前文件用户拥有者;
        第13列:代表当前用户所在的用户组;
        第14列:文件大小
        第15大列:文件创建或者修改的时间
        最后一列:文件名称
    4.修改文件的用户和用户组:
        创建用户:useradd spark
        设置文件的拥有者:chown -R spark filename
        使用chgrp来改变当前文件所属的用户组
        也可以使用chown所属用户:所属用户组 文件名字
    5.修改文件权限
        chmod对文件的拥有者 文件组的拥有者 文件以外的其他人 设置权限,重点强调的x权限也就是执行;
    6.ssh:远程免密登录
    安装ssh:apt-get install ssh
    启动ssh:service ssh start

三、shell中变量以及引用
    1.变量分为三种
        a)本地变量:只在当前shell生命周期有效
        b)环境变量:在用户登录后到注销钱对于所有的编辑器、脚本、进程等都有效
        c)位置参数:主要适用于向shell脚本产地参数,例如 spark-shell --master spark://Master:7077
    2.${variablename}会具体提取出变量的内容,当然可以把{}去掉
        例如:$HADOOP_CONF_DIR来提取出Hadoop配置文件具体所在路径的值
    3.变量赋值的时候“=”两侧不能有空格,如果变量名称后有空格,则会被认为要执行command指令;如果要打印变量的内容,可以通过echo $variablename来打印 例如echo $val
    4.在shell脚本中编写关于变量的基本使用:
        #!/bin/bash #指定解释器
        a=100 #赋值
        let "a+=10" #把a的值加上10
        echo "a=$a" #输出a的值
    5.环境变量
        使用export关键字来把变量变成环境变量
        export JAVA_HOME=/usr/hadoop/java
        可以通过使用“env”来查看系统中的环境变量的内容;
    6.系统中核心的配置文件
        常见的系统配置文件:
            .bashrc--当前用户的用到的软件的环境变量
            bash_profile(profile)
            bash_logout--用户注销时执行
            修改系统文件后一般要通过source命令使其立即生效

    7.位置参数:主要用于从命令行向shell脚本传递参数
        具体而言,$0代表脚本的名称,$1代表传入的第一个参数,$2代表传入的第二个参数,如果要代表全部参数,则需要使用$*,或$@表示从第一个位置的全部参数
        $#: 代表传递到脚本中的参数的数量
        $$: 脚本运行的进程号
        $?:代表命令退出的状态,0表示没有错误,非0表示有错误
    8.命令替换:将命令的输出作为值赋值给某个变量
        例如export SPARK_HOME="$(cd "'dirname "$0"'"/..,pwd)"实际上使用pwd获得值来取代dirname,并且如果使用$()则会对其时间求值,对例子来说pwd的值为“/home/hadoop/docker”,$0 代表当前文件名称

四、Linux Shell实战条件判断,循环语句
 条件判断
 1.if条件语句
    if ... then ... fi ;注意if条件判断后如果没有分号,则需要把then换行,如果if和then处于同一行,则需要在then前面加上“;”,要终止if语句使用fi

#!/bin/bash #添加解释器
echo "please type your content:" #输入提示
read content #读取输入
if [ "$content" -lt 10 ] #比较
then 
     echo "The content you typed id smaller then 10"
fi


  2.复杂的if...then...else...fi

    说明:case表达式用于多分支选择语句,根据表达书的值来选择要执行的语句,如果遇到匹配的值,就执行该值后面的语句,直到遇到双分号(;;)为止,可以使用*)来匹配所有未匹配的具体值的内容,实例:

    #!/bin/bash
	echo "Please enter your number (1-9):"
	read number
	case "$number" in
	1)
	 	echo "number = $number";;
	2)
		echo "number = $number";;
	*)
		echo "Other number = $number";;
	esac


循环
    1.循环的类型:for、while、until循环语句
    2.循环控制语句:break、continue,工作机制和java、c等是一样的
    for类型:

    #!/bin/bash #解释器
    for item in 0 1 2 3 4 5 6 7 8 9
    do
        echo "The current item is :$item"
    done
        #!/bin/bash
        for item in {0..100}
        do
            echo "The current item is : $item"
        done

  求1+2+3..+100
        

        #!/bin/bash
        sum=0
        for item in {0..100}
        do
            let "sum+=item"
        done
        echo "1+2..+100 = $sum"


    循环打印出所有当前文件目录下的文件

        #!/bin/bash
        for file in $( ls )
        do
            echo "$file"
        done

while循环
while循环会根据测试语句绝对是否循环及循环次数 while expression;do ... done
a)最简单的while循环

    #!/bin/bash
    item=0
    while (( "$item"<=10 ))
    do
        echo "current value: $item"
        let "item++"
    done

 

b)有停止循环标志的while

    #!/bin/bash #解释器
    echo "Please enter your number:" #提示输入
    read number #接收输入参数
    while [[ "$number" != 5  ]] #while循环,5的时候退出
    do
        if [ "$number" -lt 5 ] #if判断
        then
            echo "So smaller,please try again"
            read number #再次读入参数
        elif [ "$number" -gt 5 ]
        then
            echo "So big,please try again"
            read number
        else
            exit 0
        fi
    done
    echo "Bravo!!!"


c)使用shift本身是使得变量的位置下移动一位,$5代替$4

   exec代表具体的启动执行
    exec和ssh配合会启动分布式系统!
    exec命令可以通过文件标识符打开或者运行具体的文件,也可以将文件重定向到标准输入和输出文件中

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值