一、常用命令
1. 文件显示命令
1.1 cat命令
cat file1 > file2 # file2的内容将被file1覆盖
cat file1 >> file2 # file1的内容将追加到file2的末尾
cat file1 #显示文件内容
cat file1 -n #显示行号
1.2 more 命令
# 重点分页
more filename #显示文件内容
more -10 filename # 每页显示10行
more +50 filename # 从第50行开始显示
1.3 head命令
# 输出文件前几行(默认前10行)
head filename #显示文件前10行
head -n 20 filename #显示文件的前 20 行
2. 文件内容查询命令
2.1 grep命令
grep abc filename # 普通查找,寻找所有 包含 abc 的行
grep abc filename1 filename2 # 在多个文件中进行查找
grep -l abc filename1 filename2 # 列出包含指定字符串的文件的 文件名 (只有文件名)
grep -n abc filename # 查找指定字符串并且显示匹配行的行号
grep -n abc filename1 filename2 # 多个文件 显示行号
grep -v "A" filename1 # 显示不匹配的行 (没有 A 的行)
grep -v$ filename1 # 显示空白行
grep ^root filename # 显示匹配指定行首的行 (以root开头的行)
grep abc$ filename # 显示文件中所有以 abc 结尾的行
3. 文件和目录基本操作
3.1 Tab自动补全命令
3.2 man 命令查看帮助信息
4. 文件复制、移动、删除
4.1 cp 命令
cp file /dir # 直接复制 文件 到 一个目录下去
cp file /dir/newfilename # 复制一个文件到一个目录下面并且改名
cp file1 file2 /dir # 复制多个文件 到 一个目录下
cp -r /dir /dir2 # 复制 目录
4.2 mv 命令
# 这两个的区别在于 第二个是文件还是目录
mv file1 file2 # 重命名
mv file1 /fir # 移动文件到一个目录下
4.3 mkdir命令
mkdir dirName # 当前目录下创建新目录
mkdir /temp/dirName # 指定绝对路径创建新目录
mkdir -p dir1/dir2/dir3 # 创建多级目录
4.4 rmdir命令
只能删除空目录
4.5 rm命令
rm file # 删除文件
rm -f file # 强制删除文件
rm -r dir # 删除目录及其子目录
rm -rf dir # 强制删除目录及其子目录
5. 链接
5.1 硬链接与软链接(符号链接)
- 硬链接相当于源文件可以同步更新的备份,符合链接相当于快捷方式
- 硬链接不能跨文件系统,不能链接目录
- 删除源文件,硬链接不会有影响,符号链接变无效
5.2 创建方式
只能对文件进行创建,不能对目录进行创建
ln source linkfile # 硬链接 第一个是资源,第二个是 链接
ln -s source linkfile # 软链接
6. 文件查找命令
6.1 find命令
格式要注意先写查找范围
再写查找类型(文件名、文件类型、权限、所有者、所属组、时间、大小等)
最后是查找文件对象(可使用同通配符)
find /root -name *.sh
6.2 locate命令
注意和 updatedb 命令使用
7. 文件访问权限
rwx 三种权限对于普通文件和目录表现不同
普通文件 目录
r 读取内容 ls
w 编辑内容 touch mv rm
x bash cd , pwd (该权限是进入到目录中)
(1) ls -l(ll)命令显示结果字符串,ls -a 显示全部文件
(2)chmod命令
r 是4 , w是2 , x是1
u是所有者,g是所属组,r是其他人 , a是所有人
- 数字法:chmod 755 file
- 加减法:chmod u+w,g+x,o+x file chmod a+x file
- 等号法:chmod u=rw,g=rw,o=r file
- 设置目录权限:chmod -R 777 dir
(3)umask命令:设置文件和目录的默认权限
root用户的默认umask值是 022 ; 普通用户默认的umask值 002
目录默认权限是 777 , 文件默认权限是 666
存在umask的时候,创建新目录/文件的时候,需要 默认值 - umask值
(4)chown命令:改变文件所有者 chown user file (将file文件的所有者 改为 user)
(5)chgrp命令:改变文件所属组 chgrp newgroup file
(6)newgrp命令:改变用户的有效组
8. 压缩和解压缩
(1) compress zip gzip bzip2 都是压缩命令
(2)tar:可以在打包的同时进行压缩,常用用法:
tar -jcvf filename dir(etc.tar.bz2)#将目录 dir 打包成一个使用 bzip2 压缩算法压缩的归档文件 etc.tar.bz2,并显示详细信息
tar -zcvf filename dir # 使用 gzip 算法 压缩
tar -jxvf filename # 解压缩
二、文件管理
1. 文件类型及区别
文件类型 | ls -l或 ll命令输出的第一个字符 |
---|---|
普通文件 | - |
目录文件 | d |
字符设备文件 | c |
块设备文件 | b |
链接文件 | l |
管道文件 | p |
套接字文件 | s |
2. 常用系统目录
- / :根目录
- /boot : 启动相关文件
- /mnt:挂载目录
- /root :root用户家目录
- /home :普通用户家目录,如/home/user1
- /dev :设备文件目录
- /etc :配置文件目录
3. 文件基础知识
- 大小写:敏感
- 文件类型的含义
- 设备文件名
- 可执行文件的含义
三、用户与用户组
1. 配置文件
- /etc/passwd :用户基本信息,名字等
- /etc/shadow :用户密码信息,密码有效期登
- /etc/group :组的基本信息
- /etc/gshadow:组的密码信息
2. useradd命令
新增用户 useradd newusername
3. passwd命令
- 设置自己的密码:passwd
- 设置其他用户密码(root可执行):passwd user1
- 直接设置其他用户密码(root可执行):echo “newpassword” | passwd --stdin user
- 锁定/解锁用户(root可用):passwd -l user passwd -u user
4. userdel命令
删除用户 userdel user
5. groupadd命令
增加组
6. groupmod命令
- -g:修改 gid
- -n:修改组名
7. gpasswd命令
指定组属性
- gpasswd group:设定组密码
- gpasswd -A group:指定组管理员(root专用)
- gpasswd -M user1,user2 group : 添加组成员
- gpasswd -a user1,user2 group :添加组成功 (组管理员用)
- gpasswd -d user group:删除组成员 (组管理员用)
四、磁盘管理
1. mount 挂载命令
mount /dev/sr0 /mnt/cdrom # 挂载设备到挂载点
umount /mnt/cdrom # 卸载挂载点
mount -o remount,noexec /dev/sdb2 # -o 后接特殊选项,此例为重新挂载并制定不允许在该分区执行可执行文件
2. 磁盘相关
2.1 设备文件名 /dev/sda /dev/sdb
2.2 分区原则
- 主分区最多4个
- 扩展分区最多1个
- 主分区和扩展分区加起来最多4个
- 主分区和扩展分区 分区号 (1-4)
- 扩展分区不能直接写入数据,需要分成逻辑分区
- 逻辑分区的分区号从5开始,系统内第二块硬盘的第一个逻辑分区设备名为 /dev/sdb5
3. 相关命令
fdisk # 分区命令
mkfs # 格式化命令 mkfs -t ext4 /dev/sda2
五、进程管理
1. 进程基础
- ps (-)aux 或 ps -elf 获取快照
- top命令动态获取系统信息(前5行)
- uptime命令可以获取当前启动时间和负载信息
- w命令可以获取 top前3行
2. at 和 batch命令
- 配置文件: /etc/at.allow /etc/at.deny
- at 时间:at now +5 minutes,at now +3 days , at 23:00 2021-11-20 , at midnight 2021-11-11
- atq命令:查询当前 at 任务
- atrm jobno:删除 at 任务
- batch命令不需要制定具体时间,其他与at一样
3. crontab命令
- 配置文件 : /etc/cron.allow /etc/cron.deny /etc/crontab
- crontab -e命令:编辑当前用户的计划任务
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 指令 |
---|---|---|---|---|---|---|
数字范围 | 0 - 59 | 0- 23 | 1- 31 | 1- 12 | 0 - 7 | 这是指令啊 |
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*” 就代表一个小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如”0 8,12,16 *** 命令“,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如”0 5 ** 1-6 命令“,就代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如”*/10 * * * * 命令“,就代表每隔10分钟执行一遍命令 |
时间 | 含义 |
---|---|
45 22 * * * 命令 | 每天的22时45分执行命令 |
0 17 * * 1 命令 | 每周一的17时0分执行命令 |
0 5 1 ,15 * * 命令 | 每月1号,15号的5时0分执行命令 |
40 4 ** 1-5 命令 | 每周一到周五的4时40分执行命令 |
*/10 4 * * * 命令 | 每天4点开始,每隔10分钟执行一次命令 (只有在4点内,超过5点就停止) |
0 0 1,15 * 1命令 | 每周一 或者是 每月1号,15号 的 0时0分执行命令 |
4. 启动/重启/停止服务
service network start/restart/stop
或者服务程序绝对地址 + start/restart/stop
六、软件包管理RPM 和 YUM数据库
1. rpm包相关
- 安装 : rpm -ivh package , 注意使用包全名
- 查询: rpm -q soft , 注意使用软件名
- 卸载:rpm -e package
2. yum相关
- yum命令需要在联网的环境下或者设置本地yum源。
- 在联网的环境下可以自动解决依赖性的问题。
- yum install 软件名 (如 yum install mysqld)
- yum remove 软件名卸载
七、Linux编程
vi filename # 打开或新建文件,并将光标置于 第一行首
vi +n filename # 打开文件,并将光标置于 第n行首
vi + filename # 打开文件,并将光标置于最后一行首
vi + /pattern filename # 打开文件,并将光标置于第一个与 pattern 匹配的串处
vi -r filename # 在上次正用 vi 编辑时发生系统崩溃,恢复 filename
vi filename...filename # 打开多个文件,依次进行编辑
1. 三种 模式
- 运行 vi命令进入命令模式
- 按 aior(或AIOR)进入输入模式(插入模式) , 按ESC回到命令模式
- 输入 : 进入底行命令模式(底行模式、末行模式),按ESC回到命令模式
2. 命令模式下的常用命令
- 定位
命令 | 解释 |
---|---|
H | 移至屏幕顶端 |
M | 移至屏幕中间 |
L | 移至屏幕下端 |
n+空格 | 向右移动n个字符 |
G | 移动到最后一行 |
nG | 移动至第 n 行 |
gg | 移动至 第一行 |
- 删除
命令 | 解释 |
---|---|
x(小写) | 向后删除一个字符 |
X(大写) | 向前删除一个字符 |
nx | 连续删除n个字符 |
dd | 删除当前行 |
ndd | 向后删除n行 |
d1G | 删除第1行至当前行 |
dG | 删除当前行到最后一行 |
- 复制
命令 | 解释 |
---|---|
yy | 复制当前行 |
nyy | 向后复制n行 |
y1G | 复制第1行至当前行 |
yG | 复制当前行至最后一行 |
p(小写) | 粘贴在下一行 |
P(大写) | 粘贴在上一行 |
- 其他
命令 | 解释 |
---|---|
u | 撤销 |
ZZ | 保存文件并退出 |
3. 底行模式下的常用命令
- 保存
:w
:w!
:wq
:q!
:wq!
file
- 行号
:se nu
:se nonu
:set nu
:set nonu
- 查找
命令 | 解释 |
---|---|
:/str | 向下搜索str |
:?str | 向上搜索str |
n | 往前重复上次搜索 |
N | 往后重复上次搜索 |
- 替换
命令 | 解释 |
---|---|
😒/old/new | 本行替换一次 |
😒/old/new/g | 本行全部替换 |
:n1,n2s/old/new/g | 从第n1行到第n2行全部str1替换为str2 |
八、Shell编程
1. shell基础
- echo命令:-e -n :显示内容不换行 (-e 可换行,-n不换行)
- 重定向: > : 以覆盖方式将输出重定向至文件。 >> 以追加方式将内容重定向至文件
- 管道符
2. 变量定义
- echo 输出
- unset 删除变量
- 环境变量:export关键字,建议变量名字全部大写,env查看,unset删除
- 注意事项: = 两边不能有空格;默认为字符串类型;如果有两个单词以上可以使用“ ”或‘ ’ 引起来,“ ”里面特殊字符有固定含义,如 $ !等, ‘ ’里面均为普通字符。 ``反引号可以引用系统命令。
- 预定义变量,位置参数变量
位置参数变量 | 作用 |
---|---|
$n | n为参数,$0代表命令本身,$1- 9 代表第一到第九个参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10} |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
预定义变量 | 作用 |
---|---|
$? | 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确。 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
3. 数值计算
- 双小括号 ( ( ) ) :语法最松散, ∗ 等符号无需转义,运算符两侧空格可有可无,小括号头尾空格可有可无,变量引用时 (()) :语法最松散, *等符号无需转义,运算符两侧空格可有可无,小括号头尾空格可有可无,变量引用时 (()):语法最松散,∗等符号无需转义,运算符两侧空格可有可无,小括号头尾空格可有可无,变量引用时符号可有可无,如a = 11 ; b = 22 ;c=$((a+b)),与 $[]功能相同。
- let :功能等同于 双小括号,变量前可以不加 $ , = 和其他运算符之间不能有空格。如 let c=a+b,let c=$a+2。
- expr命令:*等特殊符号必须转义(\ *),运算符两边必须有空格,引用变量必须加 $。