Linux-shell脚本学习-1

cd -:回到上一次目录
cd ..:回到上一级目录

wc -l filename:统计文件行数
wc -w filename:统计文件单词数
wc -c filename:统计文件字符数

#管道(|)将一个命令的输出作为另一个命令的输入
grep 'a' test1.sh|wc -l :搜索文件test1.sh中含有a字符的行并输出行数

#重定向:将命令的结果输出到文件,而不是标准输出(屏幕)
>写入文件并覆盖旧文件
>>追加到文件尾部,保留旧文件内容
head -30000000 test.txt |tail -8000000 > a2200-3000

压缩和解压缩文件
#下面是以gzip格式压缩
tar -zcvf /home/lytest/test.tar.gz test2.sh test3.sh test2.sh
#解压缩
1)进入文件解压缩的目录
2)tar -zxvf test.tar.gz

远程创建目录文件夹
ssh bigdata007 mkdir -p /home/zjw/jdk1.7/jdk1.7.0_51

#条件语句
if ....; then
  ....
elif ....; then
  ....
else
  ....
fi
操作实例:
#!/bin/sh
if [ "$SHELL" = "/bin/bash" ]; then
 echo "your login shell is the bash (bourne again shell)"
else
 echo "your login shell is not bash but $SHELL"
fi
变量$SHELL包含了登录shell的名称,我们和/bin/bash进行了比较。
快捷操作符
熟悉C语言的朋友可能会很喜欢下面的表达式:
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
这里 && 就是一个快捷操作符,如果左边的表达式为真则执行右边的语句
您也可以认为是逻辑运算中的与操作。上例中表示如果/etc/shadow文件存在
则打印” This computer uses shadow passwors”。同样或操作(||)在shell编程中也是可用的。
#for后面必须是两对括号
#!/bin/bash
echo "Input a number n:"
read n :将键盘输入的值赋给n
s=0
for((i=1;i<n+1;i=i+1))
do
let s=$s+$i :赋值前面用let
done
echo "1+2+...+n=$s"

#shell脚本调试
最简单的方法是在怀疑有错误的地方echo输出变量值等信息
sh -n scriptname :输出脚本中的语法错误信息
sh -x scriptname :执行该脚本并显示所有变量的值
exit :退出调试

#运行shell脚本
sh xxx.sh 或者./xxx.sh
如果直接./xxx.sh不行的话,先运行chmod 777 xxx.sh

#输入一个数,求每位数和
#!/bin/bash
#qiu mei yi wei shu zi he
echo -n "Input a number n:" :参数-n的作用是不换行,echo默认是换行
read n
sum=0
len=$(echo $n|wc -c)
let len=$len-1 :赋值是前面加let,如果不加let的话,应是双括号,否则出错,该行可以替换为:len=$(($len-1))注意:len=$($len-1)运行出


for ((i=1;i<=$len;i++))
do
let sum=$sum+$(echo $n|cut -c $i) :同理len的赋值
done
echo "Sum of $n is $sum"

#转义字符反斜杠
echo "\"/home/lytest/test1.sh\""
运行结果:"/home/lytest/test1.sh"

#用mv命令改名
mv /home/zjw/spark/hadoop2 /home/zjw/spark/hadoop2-bak
#这样可以把hadoop2文件夹内的内容备份到-bak文件夹下

#查看文件夹大小
du -s /home/lytest/test //显示KB单位

du -sh /home/lytest/test //显示G/M单位

你可能感兴趣的:(linux,shell,脚本)