1. mount: 挂载存储媒体
2. umount: 移除存储媒体
3. df -h : 显示已挂在的分区列表及使用情况(占了多少了)
5. du: 显示特定目录的磁盘使用情况
6. sort: 排序数据
7. grep: 搜索数据
8. bzip2(.bz2) , compress(.Z) , gzip(.gz) , zip(.zip): 压缩数据,只能压缩单个文件
或者某个目录中的文件,或者是能有通用符表示的多个文件。
9. tar: 归档数据(将多个文件归档进单个文件)
10. file:查看文件类型
11. cat,more,less: 查看整个文件
12. tail,head:查看部分文件
13. uname -a 查看当前服务器信息,-a全部
14. date 查看日期 date -s time1 修改时间
15. 关机: shutdown -h now、init 0、telinit 0
16. 重启: shutdown -r now、 reboot
17. 注销: logout
18. tree显示目录树形结构
19. mkdir -p direcotory1/directory2 创建文件夹,-p是递归创建
20. 删除文件:rm -f file1、删除目录:rmdir dir1、 删除目录及下挂文件:rm -rf dir1
21. ln -s file1 link1 为文件或目录创建软连接
22. 创建用户:useradd user1, 删除用户:userdel -r user1 (-r 排除主目录)
23. passwd user1 修改user1的密码
24. chmod -R 所有者(111)|所有者所在组(101)|公共用户(101) file1 111是二进制,分别代码 读 写 执行 权限,-R是将目录及下挂都改变。
25. tar -zxvf xxx.tar.gz 解压 tar -czvf test.tar.gz a 将a 压缩为test.tar.gz
26. centOS: yum -y install xxx 从源下载xxx,其中-y代表默认全选yes ubuntu: apt-get install xxx
27. ifconfig 显示以太网卡配置,如果是ifconfig eth0 ,就是显示具体的eth0的配置
28. ifup eth0 启用网卡eth0,ifdown eth0 禁用网卡eth0
30. top: 实时监测进程
(1)第一行显示系统的概况:第一行显示当前时间、系统运行时间、登录的用户数以及系统的平均
负载(三个值代表最近1min、5min、15min)如果近15min内的平均负载都很高,说明系统可能有问题。
(2)第二行显示了进程概要信息:有多少进程处在运行、休眠、停止或是僵化状态
(3)第三行显示了CPU的概要信息。
(4)第四行是系统的物理内存:总共多少内存,当前用了多少,还有多少。
(5)第五行是系统交换空间内存:总共多少内存,当前用了多少,还有多少。
(6)第六行显示当前运行中的进程纤细列表:
PID:进程ID;
USER:进程属主名字;
PR:进程优先级;
NI:进程的谦让值;
VIRT:进程占用的虚拟内存总量;
RES:进程占用物理内存总量;
SHR:进程和其他进程共享的内存总量;
S:进程的状态(D可中断休眠,R运行,S休眠,T跟踪或停止,Z僵化);
%CPU:进程使用CPU时间比例;
%MEM:进程使用的内存占用内存的比例;
TIME+:自进程启动到目前位置的CPU时间总量;
COMMAND:进程对应的命令行名称。
显示全局变量:env、printenv
显示全局变量具体值(显示PATH):printenv PATH、echo $PATH
var1 = "haha"
获取则$var1或者${var1}
PATH=$PATH:/home/christine/Scripts 。 只能持续到退出或者重启系统。
(1)第一行:
#! /bin/bash
(2)使用变量:
环境变量: 在变量名前加美元符$来使用这些环境变量。
用户变量: var1=10,用户变量可通过美元符引用,在shell脚本结束时会被删除掉。
命令替换:将命令输出赋给变量:反引号字符``或者$()
(3)重定向输入和输出:
输出重定向 : >(写入文件) , >>(追加)
输入重定向 : <(基本输入) , <<(内联输入重定向)
(4)管道( | ):
将一个命令的输出作为另外一个命令的输入,如 ls -l | more
(5)执行数学运算:
expr命令 : expr 1 \* 2 , expr 1 + 5
使用方括号 : var1=$[1 + 5] var2=$[$var1 * 2]
浮点: 使用bc计算器,设置小数位: scale=4
在脚本中使用bc,基本格式:
variable=$(echo “options; expression” | bc)
例如:var1 = $(echo "scale=4; 3.44/5" |bc)
(6)退出脚本:
exit 0 表示默认正常退出
exit命令:允许在脚本结束时指定一个退出状态码,如 exit 5
(1)if语句:
if [ condition ] ####注意空格,第一个方括号后和第二个方括号前都要加一个空格,否则会报错。
then command1
elif [ condition2 ]
then command2
else
command3
fi
(2)if的条件:
数值比较
n1 -eq n2 检查n1是否与n2相等 (equal)
n1 -ge n2 检查n1是否大于或等于n2 (great equal)
n1 -gt n2 检查n1是否大于n2 (greater than)
n1 -le n2 检查n1是否小于或等于n2 (less equal)
n1 -lt n2 检查n1是否小于n2 (less than)
n1 -ne n2 检查n1是否不等于n2 (not equal)
字符串比较
str1 = str2 检查str1是否与str2相同
str1 != str2 检查str1是否与str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
文件检查
定义一个文件:file=/root/Desktop/Scripts
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
(3)复合条件测试:
[ condition1 ] && [ condition2 ] ## 逻辑与
[ condition1 ] || [ condition2 ] ## 逻辑或
(4)高级if判断
高级数学表达式需要用双括号判断,如:
val++ 后增, val-- 后减, ++val 先增, --val 先减
! 逻辑求反, ~ 位求反, ** 幂运算, << 位左移
>> 位右移, & 位布尔和, | 位布尔或, && 逻辑和, || 逻辑或
特殊字符(--)表明选项列表结束
case $USER in
root | barbara)
echo "Welcome, $USER"
echo "Please enjou you visit";;
--) shift
break ;;
testing)
echo "Special testing account";;
*)
echo "sorry,you're not allowed here";;
和switch很像,然后在case的枚举后面,用)代表一个case完。一个case的comman后面加上;;,default应该是*)
for:
for var in list
do
commands
done
while:当test_command为true的时候执行命令
while test_command
do
other commands
done
until当当test_command为true的时候不执行命令
until test_command
do
other commands
done
$0是程序名,$1是第一个参数,以此类推。当参数个数超过10以后,需要在变量数字周围加上花括号,如${10},如果输入到命令行的参数是字符串且含有空格,需要使用引号。
例子: sh haha.sh 1 2 "3 4"这样子
(1)$#:命令行参数的个数
(2)${!#}:最后一个参数
(3)$*:变量会将命令行上所提供的所有参数当作一个单词保存。相当于sh haha.sh 1 2 "3 4" 参数数量为1,也就是 1 2 "3 4"这一个参数。
(4)$@:变量将命令行上提供的所有参数当作同一个字符串中的多个独立的单词。相当于sh haha.sh 1 2 "3 4" 参数数量为3,也就是 1,2, "3 4"这3个参数。
shift:每个参数变量向左移动一个位置,$3的值会移到$2中,$2会移到$1中,而$1的值则会被删除,无法再恢复。
#! /bin/bash
count=1
while [ -n "$1" ]
do
echo "Parameter #$count = $1"
count=$[ $count + 1 ]
shift
done
代码里相当于就是遍历了所有参数了。
read命令从标准输入或者另一个文件描述符中接受输入。
#! /bin/bash
## read 命令
echo -n "please enter your name: "
read name
echo "Hello $name,welcome to my program"
## -p 选项允许直接在read命令行指定提示符
read -p "Please enter your age:" age
day=$[ $age * 365 ]
echo "that makes you over $day days old"
## 如果在read命令行不指定变量,read命令把它收到的任何数据都会放在REPLY中
read -p "Enter your name: "
echo "Hello $REPLY,welcome to my program"
## -t选项设置超时
if read -t 5 -p "Please enter you name:" name
then
echo "Hello $name,welcome to my script"
else
echo
echo "sorry,too slow"
fi
## -n选项设置读取的字符个数
read -n1 -p "Do you want to continue [Y/N]:" ##-n和1一起使用,表示read在接受单个字符后退出
## -s选项隐藏方式读取,通常用于输入密码
read -s -p "Enter your password:" pass
echo "Is your password really $pass"
## 从文件中读取,通常使用cat命令将结果通过管道直接传给含有read命令的while命令
count=1
cat test14_2.sh | while read line
do
echo "Line $count: $line"
count=$[ $count + 1 ]
done
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误
### 2>表示将错误重定向到test4文件,1>表示将标准输出重定向到test5文件
ls -al test badtest 2>test4 1>test5
### &>会将所有的输出发送到同一个文件,包括错误和数据
ls -al test test3 test4 badtest &> test7
(1)临时重定向,使用&
(2)永久重定向,使用exec命令
exec 2>testerror #重定向标准错误
xxxx >/dev/null,将数据重定向到/dev/null。
在命令后加上 & 符就可以了,终端会话推出,后台进程也会随之退出。
## 创建函数,注意函数名和大括号中间有空格,不然会报错
function func1 {
echo "this is an example of funciton"
}
## 使用函数
func1
(1)返回退出默认值:
## 函数默认退出状态码,返回函数执行的最后一条命令
func2() {
echo "trying to display a non-existent file"
ls -l badfile
}
func2
echo "the exit status is: $?" ##$?为函数默认推出状态码
(2)使用return 命令
## 使用return命令,需要函数一结束就取返回值,并且返回值必须是0-255
function db1 {
read -p "Enter a value:" value
echo "doubling the value"
return $[ $value * 2 ]
}
db1
echo "the new value is : $?"
(3)使用函数输出
function db2 {
read -p "Enter a value: " value1
echo $[ $value1 * 2 ]
}
result=$(db2)
echo "the new result is $result"
(1)向函数传递参数
$(func1 10 15)、$(func1 $1 $2)
(2)变量类型
在脚本中定义的所有变量都是全局变量,如果需要局部变量,则在变量声明前加上local关键字:local temp=5
(1)接收数组:thisarray=($(echo "$@")) $@就是按数组获取输入
(2)打印数组:${thisarray*}
通过source命令,替代import,导入库文件。那么就可以用库文件的方法了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。