Shell 命令整理

1 基础命令

清空命令行:reset

文件操作:
显示列表

ls -l
# 所有
ls -la
# 通配符查找
ls -l ja*

创建文件

touch today.c

复制文件

cp src.txt dest.txt
# 询问
cp -i src.txt dest.txt
# 复制到当前目录
cp src.txt .
# 复制整个目录到指定路径
cp -R 目录 dest
# 通配符复制到上级目录
cp c_?1 ../

删除文件

rm file

删除目录

rm -rf 目录

查看文件类型:

file 文件

查看文件内容:

cat file
cat -n file 显示行号

查看文件最后10行

tail -n 10 file
# 查看文件最开始的10行
head -n 10 file

创建用户

# 创建用户的同时,创建了home目录
useradd -m jack
# 删除用户
userdel -r jack

创建组

groupadd androidgroup
# 分配用户到组
usermod -G androidgroup jack

文件权限
r读 w写 x执行
drwxr-xr-x
d rwx r-x r-x
d目录
1.文件所属用户具备的权限(root对该文件具备读写执行权限)
2.文件所属用户的所属组具备的权限(读、执行)
3.系统的其他用户具备的权限(读、执行)

rwx必须是固定顺序

权限 二进制 八进制
— 000 0
–x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

修改文件权限

chmod 644 file
# 给用户加上执行权限
chmod u+x file

改变创建目录的默认权限

umask 026

777-026

改变文件的所属

chown user.group file
chown user file
chown .group file

----------------------shell脚本
输出 echo

#!/bin/bash                                                              
NDK=10
text="i love shell"

#命令的执行结果的输出作为变量的值
text1=`date`
text2=$(who)

echo $NDK
echo $text
echo "$text very much"
echo "\$NDK"
echo $text1
echo $text2

命令执行退出的状态:
0 成功
127 没有找到命令
1 未知错误
126 命令不可执行

只有if命令的退出状态码为0,才会执行then部分

if 命令
then 
   命令
fi

test数值比较

-gt
-eq 等于
-le 
-ne 不等于

test字符串比较

str1 == str2
str1 != str2
str1 < str2
-n str1 长度是否非0
-z str1 长度是否为0

文件比较
-d 检查是否存在,并且是一个目录
-e 检查file是否存在
-f 检查是否存在,并且是一个文件
-r 检查是否存在,并且可读
-w、-x
file1 -nt file2 file1比file2新
file1 -ot file2 file1比file2旧

case命令

case 变量 in
pattern1) 命令;;
pattern2) 命令;;
*) 默认命令;;
esac
```s

for命令
```shell
for var in list
do
	命令
done

while命令

while test command
do
	命令
done

2 demo

2.1 demo-1

#!/bin/bash
NDK=10
text="i love shell"

#命令的执行结果的输出作为变量的值
text1=`date`
text2=$(who)

echo $NDK
echo $text
echo "$text very much"
echo "\$NDK"
echo $text1
echo $text2

#输出重定向
ls -al > test2

#输入重定向
wc < test3

2.2 demo-2

#!/bin/bash
a=10
b=20
#expr命令
c=$(expr $b / $a)
#方括号
d=$[$a * 2]
#bc 浮点数计算
#| 管道,一个命令的输出作为另外一个命令的输入
#scale是自带的内建变量
e=$(echo "scale=4; $a / 3" | bc)

#内联输入重定向
f=$(bc << EOF
scale=4
a1 = ($a * $b)
a1 / 3
EOF
)


echo "c:$c"
echo "d:$d"
echo "e:$e"
echo "f:$f"

#!/bin/bash
a=10
b=2
c=$[$a / $b]
echo result is $c

var1=20
var2=3.1333
var3=$(echo "scale=4; $var1 * $var2" | bc)
echo result is $var3

#退出状态码
exit 5

2.3 demo-3

#!/bin/bash
echo "my shell exit"
exit 5

2.4 demo-4

#!/bin/bash
testuser=lady
#
if grep $testuser /etc/passwd 
then
	echo "ok"
	ls -a /home/$testuser/
#	
elif ls -d /home/$testuser
then
	echo "用户不存在,主目录仍然存在"
#	
else
	##嵌套if
	#if 
	#then
	echo "$testuser not exist"
fi	

#!/bin/bash
testuser=jack
#if 条件状态码必须是0
if grep $testuser /etc/passwd
then
	ls -a /home/$testuser/
	echo
else
	echo $testuser not exist
fi

2.5 demo-5

#!/bin/bash
#test命令,如果条件成立,test命令已状态为0退出,if条件成立
if test $var
then
	echo "test条件成立"
else
	echo "test条件不成立"
fi

2.6 demo-6

#!/bin/bash
a=10
b=5
#test命令简单形式
if [ $a -gt $b ]
then
	echo "$a greater than $b"
else
	echo "$a smaller than $b"
fi

#!/bin/bash
if [ $a -eq $b ]
then
	echo "$a equal $b"
else
	echo "$a smaller than $b"
fi

2.7 demo-7

#!/bin/bash
str1=""
if [ str1 = "" ]                                                            
then
	echo "有内容"
else
	echo "没内容"
fi

#!/bin/bash
testuser=ricky
if [ $USER = $testuser ]
then
	echo "welcome $USER"
elif [ $USER = "jack" ]	
then
	echo "hello jack"
else
	echo "bye"
fi

2.8 demo-8

#!/bin/bash
mydir=/usr/jason
#-d检查目录是否存在
if [ -d $mydir ]
then
	echo "$mydir exist"
	cd $mydir
	ls
else
	echo "mydir not exist"
fi

2.9 demo-9

#!/bin/bash
#多个条件 []
mydir=/usr/jason/shell
#任意数学赋值或者比较表达式
#if (( a++ > 90 ))
if [ -d $HOME ] && [ -w $mydir ]
then
	cd $mydir
	touch test5
else
	echo "no"
fi

2.10 demo-10

#!/bin/bash
testuser=rose

case $testuser in
rose)
	echo "hi,$testuser";;
ricky)
	echo "hello, ricky";;
*)
	echo "defaults";;
esac	

#!/bin/bash
testuser=tom
case $testuser in
jack | rose)
	echo "hello, $testuser";;
ricky)
	echo "hi, $ricky";;
*)
	echo "others";;
esac

2.11 demo-11

#!/bin/bash

list="Mother\'s Father Brother"
list2="windows--linux--macos"
#IFS字段分隔符
IFS=$--
for item in $list2
do
	echo $item
done

2.12 demo-12

#!/bin/bash
a=10
while [ $a -gt 0 ]
do
	echo "num:$a"
	#赋值不用使用$符号
	a=$[ $a - 1 ]
	if [ $a -eq 5 ]
	then
		echo "break"
		break
	fi	
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值