Shell命令快速笔记

其实,不是特别需要的话,我不会学shell。因为安装ambari最终以失败告终,使用Ubuntu系统过程中感觉十分吃力,每次都要用Google,所以列出一些常用的自己喜欢的命令

解压文件

没必要去获得完整的参数说明,只需要记住特定几个命令就好了

  1. 解压oneslide.tar

      tar -xf oneslide.tar
    
  2. 查看oneslide.tar的内容

     tar -tf oneslide.tar
    
  3. 解压oneslide.tar.bz2,oneslide.tar.gz

    tar -xf  oneslide.tar.bz2  #一个命令就可以了
    

类Unix系统为什么要这么多的压缩工具?
简单来说就是bzip2工具压缩大型二进制文件性能优。
bzip2和gzip两个压缩工具都是为了压缩tar归档文件,它们不用于打包多个文件或整个目录
结构。并且都会在解压缩后自我删除。

压缩(归档)文件

 #tar -cf  压缩后文件名 路径或文件一 路径或文件2
   tar -cf  test.tar  onedir/*  hello.java

windows习惯,以下都是记录比较倾向于在命令行下执行在windows常用的操作

删除目录

 rm -rf onedir

IF-ELSE

if-else 额外注意空格,"[ ]"的两边都应该与其他地方有一个空格,我不喜欢使用test感觉
过于冗长。
估值的时候此时应注意不是$[...]

a=1
b=2
echo $a 
echo $b
if [ $a -lt $b ]
   then
     echo "$a is less than $b"
fi

-lt是比较参数,其列表为:

参数 对应数学符号
-lt <
-le <=
gt >
ge >=
eq ==
ne !=

增加else语句

a=2
b=1
echo $a 
echo $b
if [ $a -lt $b ]
   then 
     echo "$a is less than $b"
   else
     echo "$a is not less $b"
fi

对比在非if-else语句中:

echo $[ $a >= $b ]

For

这个真是不好记,一会是C型的,一会是脚本型的

for((a=1;a<5;a++))
   do
     echo "oneslide"
done

查看指定端口运行进程

lsof -i:8080

靠名称查看运行进程

  ps -e |grep ssh

易错区-字符串比较

a="bash"
b="hell"

if [ $a > $b ]
   then 
     echo "wrong"
   else
     echo "right"
fi

上面的代码会输出为wrong,因为>被默认解析成重定向符号,所以应该在\>加个转义字符

until [ $var1 -eq 0 ]
do
   ##something here
done

易错区–变量赋值

a=1
a=$[ $a + 1 ]
echo $a

易错区–输出重定向简单方式

#!/bin/bash
for((a=1;a<5;a++))
   do
     echo "oneslide"
done > hello.back

$0

$0 从不同脚本文件执行命令所产生的不同输出:

root@ubuntu:/home/oneslide# bash hello.sh
root@ubuntu:/home/oneslide# vi hello.sh
root@ubuntu:/home/oneslide# ./hello.sh
./hello.sh
root@ubuntu:/home/oneslide# bash hello.sh
hello.sh
root@ubuntu:/home/oneslide# bash /home/oneslide/hello.sh
/home/oneslide/hello.sh

你可能感兴趣的:(Operating,System)