动态显示系统中运行的程序 | top | |||||||||||||||
显示当前系统中由该用户运行进程的列表 | ps | |||||||||||||||
查看所有的进程机器PID(进程号) | ps -ef | |||||||||||||||
除了可以显示-ef显示的之外,还可以显示内存及其CPU的占有率 | ps -aux | |||||||||||||||
立刻关机 | sudo shutdown -h now | |||||||||||||||
10分钟后关机 | sudo shutdown -h +10 | |||||||||||||||
重新启动 | sudo reboot | |||||||||||||||
列出所有可用的信号名称 | kill -l | |||||||||||||||
执行可用的信号名称(比如第九个信号:杀死进程) | kill -9 PID(进程号) | |||||||||||||||
查看当前系统内存的使用情况 | free | |||||||||||||||
查看文件系统的磁盘空间的占用情况 | df | |||||||||||||||
统计目录(或文件)所占磁盘空间的大小 | du | |||||||||||||||
查看硬盘分区情况 | sudo fdisk -l | |||||||||||||||
修改文件的访问权限(方法一) | chmod 修改命令 文件名 | |||||||||||||||
r:可读 | w:可写 | x:可执行 | 全部权限(a) | |||||||||||||
用户权限(u) | 用户组权限(g) | 其他用户权限(o) | 增加或删除或设置权限(+/-/=) | |||||||||||||
修改文件的访问权限(方法二) | chmod 文件权限 文件名 | |||||||||||||||
文件权限:有权限(rwm)为1,无权限(-)为0,再将表示权限的二进制转化为十进制 | ||||||||||||||||
添加用户 | sudo adduser 用户名 | |||||||||||||||
删除用户 | sudo deluser 用户名 --remove-home | |||||||||||||||
修改用户密码 | sudo passwd 用户名 | |||||||||||||||
添加组 | sudo groupadd 组名 | |||||||||||||||
删除组 | sudo groupdel 组名 | |||||||||||||||
修改用户所在组 | sudo usermod -g 目标组 被修改用户名 | |||||||||||||||
修改文件所属用户 | sudo chown 目标用户名 文件名 | |||||||||||||||
修改文件所属组 | sudo chown :目标组名 文件名 | |||||||||||||||
同时修改文件所属用户和组 | sudo chown 目标用户名:目标组名 文件名 | |||||||||||||||
修改文件所属组 | sudo chgrp 目标组名 文件名 | |||||||||||||||
起别名(一次性) | alias 别名=“目标命令” | |||||||||||||||
起别名(永久生效) | ①vi .bashrc | ②alias 别名=“目标命令” | ||||||||||||||
输出 | echo “输出内容” | ⇔ | printf(“输出内容”) | |||||||||||||
反单引号:将输出里面的命令显示出来 | echo “输出内容`命令`” | |||||||||||||||
在终端中退出循环 | Ctrl+C | |||||||||||||||
查看文档(适合短文) | cat 文档名 | |||||||||||||||
查看文档(适合长文) | 回车:下翻一行 | 空格:下翻一页 | q:退出 | more 文档名 | ||||||||||||
查看文档(适合长文) | 除了more的功能以外,上下键也可以翻行 | less 文档名 | ||||||||||||||
统计文档行数 | wc -l 文档名 | |||||||||||||||
统计文档字节数 | wc -c 文档名 | |||||||||||||||
统计文档单词数 | wc -w 文档名 | |||||||||||||||
匹配任意个字符 | * | |||||||||||||||
匹配一个字符 | ? | |||||||||||||||
匹配指定的一个字符 | [指定字符] | |||||||||||||||
匹配指定的一个字符范围 | [起始字符-结尾字符] | |||||||||||||||
除了指定的一个字符,匹配其他字符 | [^指定字符] | |||||||||||||||
|:将前一个命令的输出作为后一个命令的输入 | 例:ls 文件名 | grep 文件名 | |||||||||||||||
输出重定向(>):将命令输出的内容放在目标文件中,若文件不存在,则新建文件,若文件存在,则覆盖文件内容 | 命令 > 文件名 | |||||||||||||||
追加重定向(>):将命令输出的内容放在目标文件中,若文件不存在,则新建文件,若文件存在,则追加文件末尾 | 命令 >> 文件名 | |||||||||||||||
查看所有的环境变量 | env | |||||||||||||||
shell程序中的注释语句 | # |
硬链接:利用Linux中为每个文件分配的物理编号建立链接 | ln 相对路径 链接名.c | |||
软链接:利用文件的路径名建立链接 | ln -s 相对路径 链接名.c | |||
硬链接与软链接的异同 | 相同点 | ln会保持每一处链接文件的同步性,不论改动了哪一处,其它的文件都会发生相同的变化 | ||
不同点 | 硬链接:会在用户选定的位置上生成一个和源文件大小相同的文件 | |||
软链接:会在用户选定的位置上生成一个文件镜像,不会重复占用磁盘空间,平时使用最多的是软链接 |
压缩打包相关命令 | |||||||
压缩文件 | gzip 文件名 | 生成:文件名.gz | |||||
bzip2 文件名 | 生成:文件名.bz2 | ||||||
解压文件 | gzip -d 压缩包名 | gunzip 压缩包名 | |||||
bzip2 -d 压缩包名 | bunzip2 压缩包名 | ||||||
主要参数 | c:打包 | z:调用gzip来压缩打包文件,与-x连用时完成解压缩 | |||||
x:解包 | j:调用bzip2来压缩打包文件,与-x连用时完成解压缩 | ||||||
v:显示打包或解包的详细信息 | f:指定包名(该参数必须放在最后) | ||||||
压缩目录 | ①打包:tar -参数 名字.tar 文件名 文件名...... | ②压缩:gzip 名字.tar | |||||
打包压缩一步完成:tar -参数 名字.tar.bz2 文件名 文件名...... | |||||||
解包目录 | ①解压:gzip -d 压缩包名 | ②解压:tar -参数 名字.tar 文件名 文件名.... | |||||
解压解压一步完成:tar -参数 名字.tar.bz2 |
临时添加环境变量(只对当前终端有效,关闭无效) | export PATH=$PATH:绝对路径 | |
永久添加环境变量 | ①sudo vim /etc/profile | |
②在文件的末尾添加export PATH=$PATH:绝对路径 | ||
③保存后重启(sudo reboot)或source /etc/profile |
用户管理命令 | 打开系统能够识别的用户清单 | vi /etc/passwd |
打开加密的用户清单 | sudo vi /etc/shadow | |
打开组的名称和组的成员列表 | vi /etc/group |
创建shell脚本 | vim 命名.sh | |
给.sh文件添加权限 | chmod 777 命名.sh | |
运行.sh文件 | ./名字.sh | |
告诉计算机使用哪个版本的shell解析我们的代码 | #!/bin/bash |
用户自定义变量规则 | ①由数字、字母、下划线组成 |
②首字母不能为数字 | |
③shell中变量一般用大写字母表示 | |
用户自定义变量注意事项 | ①任何赋给变量的值都被shell解释为一串字符 |
②给变量赋值时,等号两边都没有空格 | |
③取用变量的值时,在变量名前加$ |
定义位置变量 | |
编译 | 输入:./文件名.sh 1 2 3 4 5 6 7 8 9 10 |
echo “0----------------------$0” echo “1----------------------$1” echo “2----------------------$2” echo “3----------------------$3” echo “4----------------------$4” echo “5----------------------$5” echo “6----------------------$6” echo “7----------------------$7” echo “8----------------------$8” echo “9----------------------$9” echo “10----------------------${10}” | 输出:0----------------------./文件名.sh 1----------------------1 2----------------------2 3----------------------3 4----------------------4 5----------------------5 6----------------------6 7----------------------7 8----------------------8 9----------------------9 10----------------------10 |
注意:变量中有多个字符时,使用{ }括起来 |
预 定 义 变 量 | 输出命令行参数的个数 | $# |
输出所有命令行参数 | $@ | |
输出所有命令行参数 | $* | |
输出前一个命令的退出状态(在shell中0为真,非0为假) | $? | |
输出正在执行的进程的ID号 | $$ |
输出(换行,原样输出) | echo “内容” | ||||
输出(不换行,原样输出) | echo -n “内容” | ||||
输入(法一) | read 变量1 变量2 ... | ||||
输入(法二) | read -p “原样输出内容” 变量1 变量2 ... | ||||
输入(法三) (原样输出内容后面有换行) | read -p “原样输出内容 ” 变量1 变量2 ... | ||||
输入(法四) (当输入的过程中有空格时,分多次进行输入) | read 变量1 read 变量2 | 命令行输入格式: | 变量1内容 变量2内容 |
算数运算命令(简单的整数运算) | 加:+ | 减:- | 乘:\* | 除:/ | 取余:% | |
算数运算命令(法一) | expr $变量1 运算符 $变量2 | |||||
算数运算命令(法二)(反单引号) (将结果赋值给一个变量) | 变量名`expr $变量1 运算符 $变量2` echo “变量名=$变量名” | |||||
算数运算 注意事项 | ①想要将结果赋值给一个变量必须使用反引号 | |||||
②expr与变量以及变量与运算符直间必须加空格 |
test命令:测试字符串、整数、文件属性(主要用于) | |||
输出前一个命令的退出状态(在shell中0为真,非0为假) | $? | ||
测试两个字符串的内容是否完全一样 (一样为0,不一样非0) | test $字符串1 = $字符串2 echo $? | ||
测试两个字符串内容是否有差异 (一样为1,不一样非0) | test $字符串1 != $字符串2 echo $? | ||
测试s1字符串的长度是否为0 (长度为零时为0) | test -z $字符串 echo $? | ||
测试s1字符串的长度是否不为0 (长度不为零时为0) | test -n $字符串 echo $? | ||
test命令 注意事项 | test可以用[ ]来代替,“[”的右边和:“]”的左边以及运算符的左右两边必须有空格 | ||
测试两整数是否相等 (相等为0,不相等为1) | [ $整数1 -eq $整数2 ] echo $? | ||
测试两整数是否不相等 (相等为1,不相等为0) | [ $整数1 -ne $整数2 ] echo $? | ||
测试整数1是否大于整数2 (是为0,否为1) | [ $整数1 -gt $整数2 ] echo $? | ||
测试整数1是否大于等于整数2 (是为0,否为1) | [ $整数1 -ge $整数2 ] echo $? | ||
测试整数1是否小于整数2 (是为0,否为1) | [ $整数1 -lt $整数2 ] echo $? | ||
测试整数1是否小于等于整数2 (是为0,否为1) | [ $整数1 -le $整数2 ] echo $? | ||
测试文件是否为一个目录 (是为0,否为1) | [ -d $文件名 ] echo $? | ||
测试文件是否为普通文件 (是为0,否为1) | [ -f $文件名 ] echo $? | ||
测试文件是否为符号链接 (是为0,否为1) | [ -L $文件名 ] echo $? | ||
测试文件是否存在且可读 (是为0,否为1) | [ -r $文件名 ] echo $? | ||
测试文件是否存在且可写 (是为0,否为1) | [ -w $文件名 ] echo $? | ||
测试文件是否存在且可执行 (是为0,否为1) | [ -x $文件名 ] echo $? | ||
测试文件是都存在且长度不为0 (是为0,否为1) | [ -s $文件名 ] echo $? | ||
测试文件1是否比文件2更新 (是为0,否为1) | [ $文件名1 -nt $文件名2 ] echo $? | ||
测试文件1是否比文件2更旧 (是为0,否为1) | [ $文件名1 -ot $文件名2 ] echo $? |
单分支选择语句 | 多分支选择语句 | 多路分支语句 | for语句 | ||||
if [表达式] then 语句 fi | if [表达式1] then 语句1 elif[表达式2] then 语句2 ....... elif[表达式n] then 语句n else 语句n+1 fi | case 字符串 in 模式1) 命令表1 ;; 模式2) 命令表2 ;; ..... 模式n) 命令表n ;; *) ;; esac | for 变量名 in 单词表 do 语句 done | ||||
双分支选择语句 | 单词表1: for 变量名 in 1 2 3 4 单词表2:(1~10) for 变量名 in {1..10} 单词表3:(10~1) for 变量名 in {10..1} 单词表4:(10 8 6 4 2) for 变量名 in {10..1..2} 单词表5:(10~1) for((i=1;i<10;i++)) | ||||||
if [表达式] then 语句1 else 语句2 fi | |||||||
while语句 | break | continue | |||||
while [表达式] do 语句 done | break n 跳出n层循环 | continue n 结束n层循环,进行下一轮循环 | |||||
函数的定义 (方法一) | 函数的定义 (方法二)(常用) | 函数的定义 (方法一) | 函数的定义 (方法二)(常用) | ||||
函数名() { } | function 函数名() { } | 变量=`函数名 实际参数` 反单引号 | 函数名 实际参数 | ||||
①子函数中的$n并非shell中的$n ②子函数中的所有输出(return 主程序中变量)都传递给了主程序中的变量(都在一行) |