目录
一、文件相关操作
1、概念
Linux 中一切都是文件 → 磁盘、分区、命令都是文件
2、文件命名
1)最大支持256个字符,可用A~Z、a~z、0~9字符命名;
2)尽量简单;
3)避免应用 /、空字符、空格、制表符或其它控制字符;
4)避免使用有特殊含义的字符;
注意:
① Linux扩展名无实际意义,仅帮助用户了解文件可能用途,执行与否仍需权限规范;
② Linux系统区分文件名的大小写 → 以圆点(.)开头的文件名是隐含文件;
3、文件的分类:(6种)
★普通文件(-):纯文本文件(数字、字母);二进制文件、数据格式的文件;
★目录文件(文件夹)(d):包含文件名构成的列表;
★链接文件(l):指向另一个文件或目录的特殊文件;
★设备文件(c、b):用于与计算机硬件设备通信的特殊文件,设备文件允许应用程序通过文件系统接口与硬件设备进行交互,例如磁盘驱动器、打印机、串口设备等;
字母 "c" 表示字符设备文件,用于处理字符流的设备,如终端、键盘等
字母 "b" 表示块设备文件,用于处理数据块的设备,如硬盘、USB设备等
★管道文件(p):用于进程间的通信。它允许一个进程将数据写入管道,而另一个进程可以从同一管道读取数据。管道在Shell脚本和命令行中经常用于将一个命令的输出传递给另一个命令作为输入;
★套接字文件(s):用于实现不同计算机上的进程之间的网络通信;
4、Linux目录结构
以文件目录的方式来组织和管理系统中的所有文件
5、路径
1)绝对路径:以根目录/为起点的路径名称做绝对路径名 → 以斜线字符(/)开头,它表示根目录;
2)相对路径:相对 当前工作目录 的路径命名,不是从根目录开始的路径,从当前操作位置到目标目录或文件的通路;
(.)当前工作目录 → (./)默认可省略;
(..)上一层/父目录,根目录的父目录为其本身;
在每个目录中都有点点目录文件(..);
可以连续使用(../)表示父目录直至根目录;
6、主目录
1.系统管理员增加用户时创建起来的;
2.每个用户都有自己的主目录;→ root用户:/root;其他用户user:/home/user
3.~符号 来表示主目录;
4.用户初始登录到系统中,其主目录就成为其工作目录;
5.也叫家目录;
7、其他目录
① /:根目录;
② /user/bin:放置用户用的执行命令,如:ls命令;
③ /user/sbin:放置root系统管理员用的执行命令,如shutdown命令;
④ /boot:放置Linux启动时用到的文件
/dev:放置设备文件
/etc:放置系统主要的配置文件 /tmp:临时文件夹
/home:放普通用户默认 主目录 /root:是root用户的主目录
8、Linux目录基本操作
1)mkdir:make directory
2)rmdir:remove directory(只能删空文件夹)
3)cd:change directory
4)pwd:print work directory
5)ls:list directory
例如:
mkdir -p test/test/test 在当前目录递归创建3个test目录
rkdir -p test/test/test 递归删除三个test目录
ls -l:显示文件详细信息; ls -a:包括隐藏文件的全部文件
参数是 目录:将列出其中所有子目录与文件的信息;
参数是 文件:将列出有关该文件属性的一些信息;
参数是 缺省:将列出当前目录子目录与文件的信息;
9、Linux文件基本操作
1)touch:创建一个或多个空文件
2)cp:copy 复制源文件或目录到目标位置
3)mv:move 剪切
4)rm:remove删除一个或多个文件或目录
5)文件名通配符
(1)touch:
touch /tmp/hello 在/tmp目录中创建空文件hello
touch 1 2 3 在当前目录创建三个空文件1 2 3
(2)cp:
cp -r:递归复制子目录下的所有目录和文件
cp file1 file4 将file1复制到当前目录并改名file4
cp file1 file2 file3 /tmp/abc;
cp -r /tmp/abc ./
(3)mv:
mv test/ /tmp/ 将当前目录下的test目录移动到/tmp中
mv ex3 new1 将文件ex3改名为new1
(4)rm:
rm file1:删除文件file1
rm -rf /tmp/abc:强制删除/tmp/下的abc目录
rm -r file3 file4:强制删除当前目录下的file3和file4文件
rm -r * 删除当前文件夹下所有文件
(5)文件名通配符:
① 星号(*):与0个或多个任意的字符相匹配 → 以点(.)开头的隐含文件除外;
.*只与隐含文件匹配;
② 问号(?):与单个任意的字符相匹配,可以使用多个问号
③ 中括号[ ]:从[ ]选定内容中选择通配符
10、显示文件内容命令
注意:(仅显示内容,不改变内容)
1)cat:显示文件的内容到标准输出;连接两个或多个文件并显示到标准输出;
2)more:向后分页显示文件内容,每次一屏左下显示百分比;空格回车:下一页;q:立刻离开more;b:往回翻页;
4)less
5)head:head -number 显示文件前number行;
6)tail:tail -f 持续在屏幕上显示指定文件末尾内容
11、文件内容查找命令
grep:grep 【选项】 搜索字符串 文件名;选项:-i 忽略字符串大小写;-v 反向搜索,显示不含有搜索字符串的行
12、文件查找命令
1)which:查找可执行命令的路径 → which 命令
2)find:在指定的目录开始,递归地搜索其各个子目录 → find 路径 -name 文件名;
f:普通文件;d:目录;l:符号链接文件;b:块设备文件;
find 路径 -type 字符 按文件类型在文件系统中查找文件;
find 路径 -perm nnn 按文件权限在文件系统中查找文件
find 路径 选项 -exec 命令 对找到的文件执行操作
find /home -type d -exec ls -l {} \
13、文件内容排序统计
(1)sort
基本用法:sort 文件名
按照数字排序(例如,数值列的排序):sort -n 文件名
指定字段分隔符进行排序:sort -t'分隔符' -k 列号 文件名
(2)uniq
基本用法:uniq 文件名
只保留唯一行,并显示重复的次数:uniq -c 文件名
注意事项:
uniq
命令只能删除连续重复的行,因此在使用uniq
之前通常需要先使用sort
对文本进行排序,以确保重复行都相邻。
3)wc:统计指定文件的字节数、字数、行数
14、修改文件归属及权限
我们知道一共有3种访问文件或目录的方式(即访问权限):
① 读(r)查看目录下内容;
② 写(w)增删文件或目录mkdir touch rm rmdir;
③ 可执行或查找(x)切换目录;
我们可以用如下命令查看权限:
ls :文件类型 --rwx所有的人有的权限
(1)chmod命令
格式1:
chmod 【选项】 【ugoa】【+-=】【rwx】 文件或目录
u、g、o、a 分别是 属主、属组、其他用户、所有用户; +-=分别 增加、去除、设置权限
格式2:
chmod 【选项】 nnn(三位八进制数) 文件或目录
选项 -R:递归修改,指定目录下所有文件、子目录的权限
注意:
nnn -> 每个n代表r + w + x 的值,其中
r:4;w:2;x:1;
(2)chown 命令
修改文件所有权
chown [-R] [账号名][:组名] 文件或目录名
(3)chgrp命令
改变文件或目录的归属组
chgrp [选项] 组名 文件或目录名
15、文件压缩
(1)gzip命令:
压缩文件(不能压缩目录)
gzip [选项] 待压缩文件
选项:-d 解压缩;-v 显示压缩信息;
注意:压缩后文件后缀名:.gz
(2)gunzip命令:
解压缩.gz的压缩文件(不能压缩目录)
gunzip [选项] 压缩文件
选项:-v 显示压缩信息;
(3)bzip2命令:
压缩文件
bzip2 [选项] 待压缩文件
选项:-k 保留原文件;-d;-v
注意:压缩文件后缀名:.bz2
(4)bunzip2命令:
解压缩.bz2的压缩文件
bunzip2 [选项] 压缩文件
选项:-k;-v
16、文件打包
tar命令:
tar [选项] [打包后文件名] [目录或文件列表]
注意:打包文件后缀名:.tar
选项:
-c 打包;-x 解包; -t 查看包; -v 显示打包详细信息;
-f 指定文件名(f写在最后一个);-C 解压缩时指定目录;
-z 通过gzip进行压缩/解压缩;(后缀名:.tar.gz)
-j 通过bzip2进行压缩/解压缩;(后缀名:.tar.bz2)
二、系统用户和用户组管理
每个用户都有唯一身份标识,称作用户ID(简称UID)
1、用户的分类:
操作系统实际使用的是用户ID;
用户ID为32位,从0开始
分三类:-超级用户(ID为0);-系统用户(虚拟用户,无登录系统的能力);-普通用户;
2、用户组分类
(1)基本组:
基本组在文件系统中有重要的作用,它决定了新创建的文件和目录的所属组。当用户创建一个新文件或目录时,它们将继承创建者的基本组作为其所属组。
(3)附加组:
附加组是用户额外的组成员身份。通过属于附加组,用户可以获得与该组相关的权限和资源访问。附加组可以用于共享资源或限制对特定文件或目录的访问。
注意:一个用户可以属于多个附加组,但只能有一个基本组且不能从组里删除
此外:
普通用户:/home/用户名/,所有者和所属组分别是此用户及其基本组 750
超级用户:/root/,所有者和所属组分别是root用户及root的基本组 700
3、用户账号文件
它们存放在:/etc/passwd 中
每一行表示一个用户信息
每一行用户属性使用“:”分割
用户:UID:GID:别名:主目录:获取shell的方法
例如:
root:0:0:root:/root:/bin/bash
4、用户密码文件
它们存放在:/etc/shadow 中,该文件的访问权限通常只对系统管理员可见
每一行表示一个用户密码信息
可以用cat 命令查看
5、用户组
(1)用户组账户文件
存放在:/etc/group
(2)用户组密码文件
存放在:/etc/gshadow
6、增加用户
useradd 【选项】 用户名 → 创建用户账户 root执行
-m 创建用户的主目录;
-u UID 指定其UID;
-d 主目录 指定主目录; -g组名 指定用户初始默认组;-G 组名 指定用户附加组;
7、删除和修改用户信息
(1)删除用户:(root执行)
userdel 用户名
userdel -r 用户名
(2)修改用户信息:
usermod 选项 用户名
-u 改UID; -c 修改用户说明信息; -G 修改用户附加组;
8、组管理命令
添 groupadd;删 groupdel;改 groupmod -n 新组名 老组名;
把用户加入组 gpasswd -a 用户名 组名;
把用户移除组 gpasswd -d 用户名 组名;
查看当前用户所属的组:groups
切换用户的有效工作组:newgrp 组名
补充:
显示用户最后登录的信息:last;last -n;
切换用户:su 用户名;su - 用户名(连带环境变量一起切换);
三、磁盘
磁盘文件
命名规则为 hdX(或sdX),其中X为小写字母
磁盘使用(三步骤)
分区 → 格式化 → 挂载
1、基本分区:(两类)
(1)主分区 P
(2)扩展分区 E (仅可有一个,不可被直接使用)
逻辑分区 L (在扩展分区上划分)
基本分区范围是从1-4,逻辑分区从5开始
最合理的分区方式:
主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区;主分区的个数+扩展分区个数要控制在四个之内
2、常用命令
① fdisk 创建分区
② mkfs 在分区创建文件系统格式化
③ mount 挂载文件系统,或是修改/etc/fstab文件使得开机自动挂载文件系统
④ umount 卸载文件系统
3、fdisk (root执行)
(1)功能1:
查看全部硬盘或者指定的使用情形
fdisk -l 或者 fdisk -l 磁盘文件名
(2)功能2:
对磁盘分区
fdisk 磁盘文件名
子命令:
fdisk 磁盘名 进入command状态
n:增加新的分区;d:删除分区;
q:不保存修改退出;
w:保存新的分区表,退出;
4、mkfs——格式化
功能:在分区上建立各种文件系统
mkfs -t 文件系统类型 分区文件名
注意:分区文件名只能是主分区和逻辑分区。扩展分区无法格式化。
5、挂载和卸载文件系统
注意:已格式化的分区设备必须要挂载到系统目录树中才能被使用
(1)mount命令
功能1:查看挂载状态
功能2:mount和lumount命令可以实现挂载和卸载功能
mount 设备名称 挂载点
mount -t 文件系统类型 设备名称 挂载点(提前创建好挂载点)
(2)umount命令
功能:将某个分区、光盘、软盘或是u盘进行卸载
umount 设备名称
或者 umount 挂载点
6、df命令
功能:查看文件系统的整体使用情况
df -h
四、vim编辑器
1、三种模式
① 一般模式,可以进行动作指令,如移动光标、删除、复制、粘贴等
② 插入模式,输入字符
③ 命令行模式,输入命令,如打开、保存、查找、替换等
2、相关操作
(1)打开文件:
vim 文件名
运行上述命令将打开指定的文件,如果文件不存在,则会创建一个新的文件。
(2)插入和编辑文本:
- 在正常模式下,按下
i
进入插入模式,在此模式下可以编辑文本。 - 在插入模式下,按下
Esc
键返回到正常模式。
(3)保存文件:
- 在正常模式下,按下
:w
可以保存文件,但不会退出Vim。 - 想要保存并退出Vim,可以在正常模式下输入
:wq
,或者简写为:x
。
(4)退出Vim:
- 在正常模式下,输入
:q
可以退出Vim。如果有未保存的更改,Vim会提示你保存或放弃更改。 - 强制退出Vim并放弃所有更改,可以在正常模式下输入
:q!
。
(5)删除文本:
- 在正常模式下,按下
x
可以删除光标所在位置的字符。 - 按下
dd
可以删除当前行。
(6)撤销和重做:
- 在正常模式下,按下
u
可以撤销上一步的操作。 - 按下
Ctrl + r
可以重做被撤销的操作。
(7)搜索和替换:
- 在正常模式下,按下
/
后输入要搜索的文本,按下回车可以查找文本。 - 输入
:s/old/new/g
可以替换文本中所有的 "old" 为 "new",并使用g
标志表示全局替换。
(8)复制、剪切和粘贴:
- 在正常模式下,按下
yy
可以复制当前行。 - 在正常模式下,按下
dd
可以剪切当前行。 - 将光标移到目标位置,在正常模式下按下
p
可以将复制或剪切的内容粘贴到光标位置之后。
(9)移动光标:
- 使用方向键(上下左右)可以在正常模式下移动光标。
- 在正常模式下,按下gg 移动到文件首行,按下G 文件末行,输入数字后再按下
G
可以跳转到指定行。
(10)补充:
- :set nu → 显示行号
- :set no nu → 取消设置行号
- :set all → 查看所有环境配置参数
五、管道与重定向
1、管道
管道允许将一个命令的输出作为另一个命令的输入,将多个命令连接在一起,形成一个命令链。管道使用竖线符号 |
表示。格式: 命令1 | 命令2 | 命令3
例如,将 ls
命令的输出传递给 grep
命令来搜索文件名包含特定关键字的文件:
ls | grep "keyword"
2、重定向
重定向(Redirection): 重定向允许将命令的输入或输出重定向到文件或设备。
覆盖符号:>
追加符号:>>
(1)将命令的输出重定向到文件:
command > output_file
例如,将 ls
命令的输出重定向到一个名为 "file_list.txt" 的文件:
ls > file_list.txt
(2)将命令的输出追加到文件末尾:
command >> output_file
例如,将 echo
命令的输出追加到一个名为 "log.txt" 的日志文件:
echo "Some log message" >> log.txt
(3) 将文件作为命令的输入:
command < input_file
例如,将一个名为 "data.txt" 的文件作为 grep
命令的输入,搜索包含 "keyword" 的行:
grep "keyword" < data.txt
(4)将命令的错误输出重定向到文件:
command 2> error_file
例如,运行一个可能产生错误消息的命令,并将错误消息输出到 "error.log" 文件:
command_with_error 2> error.log
六、补充
大多数Linux默认shell版本:bash
图形界面→字符界面:Ctrl+Alt+F1~F6
字符界面→字符/图形界面:Alt+F1~F6,Ctrl+Alt+F1~F6
★出现菱形等不明符号:
export LANG=en修正
快捷键:
1、Tab两次:命令/文件名补全
2、Ctrl+c:中断目前程序
3、上下方向键:最近执行的命令
退出系统:
exit;logout;Ctrl+d;sudo poweroff;sudo shutdown -P now;sudo systemctl poweroff -i(立即退出);
关闭系统:
sudo shutdown -h (+过多久关闭,注意:按分钟);sudo systemctl halt -i(立即关闭系统);
重启系统:
sudo reboot;sudo shutdown -r now;sudo systemctl reboot -i (立即重启系统);
取消操作:
shutdown -c; Ctrl + c;.
系统运行时间显示:
uptime;依次显示 现在时间 运行时间 目前多少用户登录 1、5、15分钟系统负载
列出所有正在使用系统的用户及所用终端和注册到系统的时间:
who
显示计算机的主机名:
hostname;sudo hostname + 新主机名(修改主机名)
将输入的字符串送往标准输出:
echo;echo $?;
查看之前执行过的命令历史:
history;history n(显示最近n条命令);history -c(清除历史);!数字(执行编号为盖数字的命令);!!(执行上一条命令);
清屏:
clear
帮助文档:
man 命令名; info 命令名;