一 Shell命令
-
reset 清空命令行:
文件操作: -
ls 显示文件
-
显示列表 ls -l
-
ls -la 所有
-
ls -l ja* 通配符查找
-
创建文件
touch today.c
vim src.txt
i进入编辑
esc 退出编辑
shift + :保存 -
wq 退出
wq!强制保存退出 -
复制文件
cp src.txt dest.txt
cp -i src.txt dest.txt 询问
cp src.txt . 复制到当前目录
cp -R 目录 dest 复制整个目录到指定路径
cp c_?1 …/ 通配符复制到上级目录 -
mkdir 文件夹名称:创建文件夹
-
cd … 退出当前目录
-
删除文件
rm file -
删除目录
rm -rf 目录 -
查看文件类型:
file 文件 -
查看文件内容:
cat file
cat -n file 显示行号 -
查看文件最后10行
tail -n 10 file -
查看文件最开始的10行
head -n 10 file
二 用户权限管理
1 创建用户
useradd -m jack 创建用户的同时,创建了home目录
userdel -r jack 删除用户
passwd Tim 增加密码
2 创建组
groupadd androidgroup
分配用户到组
usermod -G androidgroup jack
3 文件权限
ls-la 查看文件权限
r读 w写 x执行
如果一个文件的权限如下
drwxr-xr-x
d rwx r-x r-x
1 2 3
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 - 修改当前文件使得所有用户都有读、写、执行的权限
chmod 777 file (file表示文件名称) - 修改当前文件夹,所有的文件权限
chmod -R 777 文件夹
改变创建目录的默认权限
umask 026
777-026
- 改变文件的所属
chown user.group file
chown user file
chown .group file
三 shell脚本
#!/bin/bash :所有脚本的头
1 echo 输出
vim 01.sh 创建文件夹
#!/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 > test
修改权限
chmod u+x 01.sh
#chmod g+x 01.sh
#chmod o+x 01.sh
运行:
./01.sh
输出结果:
10
i love shell
i love shell very much
$NDk
data
bao tty7 2020-03-28 06:18
tst 文件是重定向的内容
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"
3 if
#!/bin/bash
if test $1
then
echo "test ok $1"
else
echo "test not"
fi
运行:./03.sh 10,结果:test ok 10
运行:./03.sh,结果:test not
$1 表示输入的第1个值
$0 表示当前执行的脚本文件,./03.sh
命令执行退出的状态:
0 成功
127 没有找到命令
1 未知错误
126 命令不可执行
test数值比较
if [ $1 -eq $2 ] 表示 $1 == $2
#-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旧
4 case命令
case 变量 in
pattern1) 命令;;
pattern2) 命令;;
*) 默认命令;;
esac
5 for命令
for var in list
do
命令
done
6 while命令
while test command
do
命令
done
7 导入
source ./04.sh
或者. ./04.sh
04.sh
#!/bin/bash
function add()
{
echo $1
}
add $1
05.sh
#!/bin/bash
#source .04.sh
. ./04.sh
function myfun
{
echo $value
}
value=30
myfun
echo "add value $(add 50)"
运行:
./05.sh 88
输出结果:
88
30
add value 50