Linux使用
一、linux系统启动
修改root用户密码
1
sudo passwd root
停机和关机
1
2
3
4
5
6
7
8
9
10
11
12shutdown -H 停机
shutdown -P 关机(断电)
shutdown -r 重启
shutdown -h 相当于 -P ,除非指定 -H
shutdown [options] [time] 在指定时间执行操作
shutdown -h now 马上关机
shutdown -h +n 在 n 分钟后关机
shutdown -h 13:14 在今天 13:14 关机
shutdown -k 只发送 wall message
shutdown -c 取消 shutdown 命令 执行
shutdown --no-wall 执行 shutdown 命令前不发送 wall message
二、linux系统目录结构
输入 ls -/ 命令查看目录结构
1
bin boot dev etc home init lib lib64 media mnt opt proc root run sbin snap srv sys tmp usr var
目录结构的作用和含义
- /bin 存放常用的命令,如 cat、chmod、cp 等
- /boot 存放启动linux需要的核心文件
- /dev 存放linux的外部设备
- /etc 存放系统管理需要的配置文件和子目录
- /home 用户主目录,以用户名命名,如 /codecho
- /lib 存放系统最基本的动态链接共享库,作用和windows中的DLL文件类似,几乎每个程序都使用到这些共享库
- /lost+found 一般为空,当系统非法关机后,该目录存放一些“孤儿???”文件
- /media linux识别设备后将其挂载到此目录
- /mnt 系统临时挂载点
- /opt 存放安装的第三方软件
- /proc 虚拟的文件系统,非真实存在,记录和系统相关的信息
- /root root用户主目录
- /sbin 存放root用户使用的命令
- /srv 存放一些服务启动后需要的数据
- /sys 也是一个虚拟的文件系统,是对linux系统下所有设备的映射
- /tmp 存放临时文件
- /usr 存放用户的程序和文件
- /usr/bin 存放一般的应用程序
- /usr/sbin 存放root用户使用的应用程序
- /usr/src 存放linux内核源码
- /var 存放经常会变化的文件,比如系统的日志
- /run 存放系统启动后的信息,重启时清空
三、linux文件基本属性
使用 ls -l 或 ll 命令显示文件/文件夹的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26drwxr-xr-x 23 root root 4096 Jan 25 19:47 ./
drwxr-xr-x 23 root root 4096 Jan 25 19:47 ../
drwxr-xr-x 2 root root 4096 Jan 25 17:23 bin/
drwxr-xr-x 3 root root 4096 Dec 12 2018 boot/
drwxr-xr-x 18 root root 3740 Jan 25 16:29 dev/
drwxr-xr-x 91 root root 4096 Jul 19 09:49 etc/
drwxr-xr-x 3 root root 4096 Dec 26 2018 home/
lrwxrwxrwx 1 root root 33 Dec 12 2018 initrd.img -> boot/initrd.img-4.15.0-42-generic
lrwxrwxrwx 1 root root 33 Dec 12 2018 initrd.img.old -> boot/initrd.img-4.15.0-20-generic
drwxr-xr-x 19 root root 4096 Dec 12 2018 lib/
drwxr-xr-x 2 root root 4096 Jan 25 17:22 lib64/
drwx------ 2 root root 16384 Dec 12 2018 lost+found/
drwxr-xr-x 4 root root 4096 Dec 12 2018 media/
drwxr-xr-x 2 root root 4096 Apr 27 2018 mnt/
drwxr-xr-x 3 root root 4096 Dec 27 2018 opt/
dr-xr-xr-x 134 root root 0 Jan 25 16:29 proc/
drwx------ 11 root root 4096 Jul 16 20:19 root/
drwxr-xr-x 25 root root 800 Jul 19 09:09 run/
drwxr-xr-x 2 root root 4096 Dec 27 2018 sbin/
drwxr-xr-x 2 root root 4096 Apr 27 2018 srv/
-rw------- 1 root root 993249280 Dec 12 2018 swapfile
dr-xr-xr-x 13 root root 0 Jan 26 00:29 sys/
drwxr-xr-x 3 root root 4096 Jan 25 19:47 test/
drwxrwxrwt 22 root root 4096 Jul 19 10:58 tmp/
drwxr-xr-x 12 root root 4096 Jan 25 18:36 usr/
drwxr-xr-x 12 root root 4096 Jun 18 15:40 var/- 第一个字符为 d 时,表示是目录
- 第一个字符为 - 时,表示是文件
- 第一个字符为 l 时,表示是链接文件
- 第一个字符为 b 时,表示是装置文件里面的可供储存的接口设备(可随机存取装置)
- 第一个字符是 c 时,表示是装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
- rwx rwx rwx 分别表示 文件所有者(owner) 、所有者同组用户(group)、其他用户(others) 拥有该文件的权限
- r 表示读权限,- 表示没有读权限
- w 表示写权限,- 表示没有写权限
- x 表示执行权限,- 表示没有执行权限
- 特殊情况: t 表示 sticky bit ,可以理解为 防删除位,一般用在目录上,如 /temp 目录,用户只能删除自己的文件,不能删除其他用户的文件
更改文件属性的命令
- chgrp:更改文件所属的用户组 -R 表示递归更改所属的用户组,更改某个目录下的所有文件的所属的用户组
1
chgrp [-R] 所属的用户组 文件/目录
chown:更改文件所属用户,也可以同时更改文件的所属的用户组
1
2chown [-R] 所属的用户 文件/目录
chown [-R] 所属的用户:所属的用户组 文件/目录chmod:更改文件的9个属性 其中 xyz 表示三个权限的数字之和,如下所示
1
2
3
4
5
6-----------------使用数字改变文件的权限-----------------
chmod [-R] xyz 文件/目录
各权限代表的数字:r=4 w=2 x=1 -=0(没有权限则为0)
x: [r+w+x] = [4+2+1] --> 7 表示 owner 所拥有的权限
y: [r+w+x] = [4+2+1] --> 7 表示 group 所拥有的的权限
z: [r+w+x] = [4+2+1] --> 7 表示 others 所拥有的权限1
2
3
4
5
6-----------------使用符号改变文件的权限-----------------
将用户分为四种类型:a=all(所有用户) u=user(所属用户) g=group(所属用户组) o=others(其他用户)
将操作分为 +(添加) -(去除) =(设置)
chmod u=rw,g=wx,o=x test.txt 将test.txt文件的权限设为rw--wx--x
chmod a-w test.txt 去除所有用户对test.txt文件的写权限
chmod a+x test.txt 添加所有用户对test.txt文件的执行权限
四、linux文件与目录的操作
linux根目录:/
文件/目录的常用操作命令
ls:列出目录
1
2
3ls -a 列出所有的文件/目录,包括以 . 开头的文件
ls -d 列出目录本身,不包括其内容
ls -l 列出所有详细信息,包括权限、日期、所属用户等cd:切换目录
1
2
3cd [绝对路径/相对路径]
cd / 切换到根目录
cd .. 返回当前目录的上一级目录pwd:显示当前目录
1
pwd 显示当前目录
mkdir:创建目录
1
2mkdir -m xyz 目录名 创建目录时同时设置目录的权限,如 mkdir -m 777 test
mkdir -p 目录1/目录2/目录3 递归创建多级目录,如 test1/hello/worldrmdir:删除空目录
1
rmdir -p 目录1/目录2/目录3 连带其上级目录一起删除
cp:复制文件/目录
1
2cp [options] source dest
cp -r test test1/test2 递归复制rm:删除目录或文件
1
2
3
4rm [-fir] 文件/目录
rm -f 文件/目录 直接删除文件/目录,没有警告信息
rm -i 文件/目录,删除前显示警告
rm -r 文件/目录,递归删除mv:移动目录/文件,或者修改名称
1
2
3mv [-fi] source dest
mv -f source dest 若目标文件存在,直接覆盖
mv -i source dest 若目标文件存在,询问是否覆盖
linux文件内容查看
cat:从第一行开始显示内容
1
2
3
4cat -b test.txt 列出行号,空白行不显示行号
cat -n test.txt 列出行号,空白行也显示行号
cat -E test.txt 显示结尾的断行字节 &
cat -T test.txt 将 tab 制表符显示为 ^|tac:从最后一行开始显示内容,和 cat 相反
tail:显示文件最后 n 行内容
1
tail [-n number] 文件名 number 为要显示的行数
五、linux用户和用户组管理
添加用户账号
useradd [options] 用户名
1
2
3
4
5
6sudo useradd -d /home/pain -m pain
-d 指定用户主目录
-m 如果主目录不存在则创建
-g 指定用户所属用户组
-G 指定用户所属的附加组
-s 指定用户登录shell
设置用户账号密码
passwd [options] 账号
1
2
3-l 锁定账号
-e 强制账号密码过期
-d 强制删除账号密码
删除用户账号
userdel [options] 账号
1
2userdel -r pain
-r 将账号的主目录也删除
修改用户账号
usermod [options] 账号
1
2
3
4usermod -s /bin/hello -d /home/hello -g test pain
-s 指定新的登录shell
-d 指定新的用户主目录
-g 指定新的用户组
添加用户组
groupadd [options] 用户组
1
2-g GID 指定用户组的id
-o 表示新用户组的id可以和已有用户组的id相同
删除用户组
- groupdel 用户组
修改用户组
groupmod [options] 用户组
1
2groupmod -g 102 group2
将group2的用户组id改为102
切换用户组(前提是该用户属于要切换的用户组)
- newgrp 要切换的用户组
六、linux磁盘管理
df:查看文件系统的整体磁盘空间使用量
1
2
3df [options] 目录/文件
-a 列出所有的文件系统
-T 显示文件系统类型du:查看文件和目录的磁盘使用空间
1
2
3du [options] 文件/目录
-a 列出所有的文件与目录容量
-h 以易读的方式显示
七、linux vi/vim
vi/vim主要分为三种模式:命令行模式、编辑模式、底部命令行模式
命令行模式:此时用户输入会被识别为命令
1
2
3i 切换到编辑模式
x 删除光标所在位置的字符
: 切换到底部命令行模式编辑模式:可以输入内容编辑文件,按下 esc ,退出编辑模式
底部命令行模式:输入命令
1
2
3
4q 退出
w 保存
wq 保存退出
q! 不保存退出常用按键:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38—————————————底部命令行使用的复制粘贴、搜索替换等操作—————————————
/key 寻找光标后方的名为 key 的字符串
?key 寻找光标前方的名为 key 的字符串
n 重复上一个寻找的操作,如执行 /key 寻找光标后方的名为 key 的字符串,按下 n 继续向光标后方寻找
N 反向重复上一个寻找的操作,如上,按下 N 向光标前方寻找
:n1,n2s/key1/key2/g 在n1行到n2行之间寻找名为key1的字符串,并将其替换为key2
:1,$s/key1/key2/g 从第一行到最后一行之间寻找key1的字符串,并将其替换为key2
:$s/word1/word2/g 同上,写法不同
:1,$s/key1/key2/gc 从第一行到最后一行之间寻找key1的字符串,并将其替换为key2,取代之前会有提示信息,让用户确认是否替换
:$s/word1/word2/gc 同上,写法不同
dd 删除光标所在的一整行
nx 连续向后删除 n 个字符
ndd 删除光标后方的 n 行
d$ 删除光标到该行最后一个字符
d0 删除光标到改行第一个字符
yy 复制光标所在行的内容
nyy 复制光标后方的 n 行内容
y$ 复制光标到该行最后一个字符
y0 复制光标到该行第一个字符
p,P p 将复制的内容粘贴到光标的下一行, P 将复制的内容粘贴到光标的上一行
c 重复删除多个数据,如 10cj 删除光标下方10行
u 复原前一个动作
ctrl+r 重做前一个动作
—————————————底部命令行模式切换到编辑模式的操作—————————————
i,I i 从光标处输入 I 从光标所在行第一个非空格符处输入
a,A a 从光标处的下一个字符处输入 A 从光标所在行最后一个字符处输入
o,O o 从光标处的下一行输入 O 从光标处的上一行输入
—————————————编辑模式切换到底部命令行模式的操作—————————————
ESC 从编辑模式退出到底部命令行模式
—————————————底部命令行模式切换到命令行模式的操作—————————————
:w 保存内容
:w! 强制保存
:q 不保存退出
:q! 强制不保存退出
:wq 保存并退出
八、linux yum命令
yum:查找、安装、删除软件包
1
2
3
4
5
6
7
8
9
10
11
12yum [options] [command] [package]
-y 安装过程选择 yes
-q 不显示安装过程
command 要执行的命令
package 软件包
yum check-update 列出可更新的软件
yum update 更新所有软件
yum list 列出可安装的软件
yum install package 安装指定的软件
yum update package 更新指定的软件
yum remove package 删除指定的软件
九、Shell脚本
shell:一种应用程序,它是用户和linux内核之间的桥梁,用户通过shell来间接地使用内核
shell脚本:一种为shell编写的脚本程序
shell的分类:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)是linux的默认shell
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
查看系统可用的shell
1
2
3
4
5
6
7
8cat /etc/shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux
/usr/bin/screen查看当前系统的默认shell
1
2
3echo $SHELL
/bin/bash编写一个简单的shell脚本
1
2
echo "hello world,this is a shell script"执行shell脚本:
1
2
3
4
5./helloworld.sh 注意要在shell脚本所在目录
hello world,this is a shell script
/bin/sh helloworld.sh
hello world,this is a shell script
十、linux命令(经常使用的)
文件管理
cat [options] filename
1
2
3
4
5
6
7
8
9
10
11
12-n | --number 从1开始对输出的行数编号
-b | --number-nonblank 和-n相似,但是对空白行不编号
-s | --squeeze-blank 连续两行以上空白行,替换为一行空白行
-E | --show-ends 在每行结束处显示 $
-T | --show-tabs 将 TAB 符显示为 ^|
cat test1.txt 显示test1.txt中的内容
cat test1.txt test2.txt 同时显示test1.txt和test2.txt中的内容
cat test1.txt test2.txt > test3.txt 将test1.txt和test2.txt中的内容写到test3.txt中
cat /dev/null > test4.txt 将test4中的内容清空
/dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据(报告写入成功),读取它则会立即得到一个 EOFchgrp:参考 三
chmod:同上
chown:同上
find path [options],命令行上第一个 -(),! 之前的部分为path,后面的是expression,如果path为空字符串,使用当前路径,如果expression为空字符串,使用-print为预设expression
1
2
3
4
5
6
7
8
9
10
11
12
13
14find . -name ".txt" 在当前目录查找所有以 .txt 结尾的文件
find . -iname "T*" 查找文件名满足T*的文件,忽略大小写
find . -cmin +10 查找修改时间超过10分钟的文件
find . -amin +10 查找超过10分钟内被访问的文件
find . -newer test3.txt 查找比test3.txt文件修改时间更晚的文件
find . -anewer test3.txt 查找比test3.txt文件更晚被读取的文件
find . -type c 查找文件类型是 c 的文件
c的取值
d 目录
l 符号链接
f 普通文件
c 字符设备
b 块设备
s 套接字mv:参考 三
rm:同上
tee [-ai][file]
1
2
3tee test1.txt -a 读取用户输入的内容,将其输出到test1.txt文件中
-a | --append 附加到文件后面,而非覆盖
-i | --ignore-interrupts 忽略中断信号