一、前言
1.1 Linux是什么?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。
- Linux内核
是一个Linux系统的内核,而不是一个操作系统
- Linux操作系统
红帽操作系统(RedHat),乌班图(Ubuntu)等才是操作系统的名字,他们都使用Linux内核,我们常常把它们笼统的称为Linux操作系统。
1.2 Linux的应用
1.3 终端
Linux 的终端就是控制台,是用户与内核交互的平台,通过输入指令来控制内核完成仟务操作。
1.4 Shell
shell是linux的外壳。是一个内核的解释器,让我们跟内核交流翻译的工具。
- 命令的解释
可以解析我们给shell终端的命令,来控制操作系统做相关的功能。
- 保护操作系统
可以帮助我们通过一条简单的命令来调用系统函数或者系统接口,来依次完成我们需要的功能,不会导致调用错误或者其他问题导致系统不能正常使用,
二、基本操作命令
2.1 基本操作常用热键
Tab键 ===> 命令补全功能
Ctrl+c键 ===> 停止当前正在运行的程序
Ctrl+d键 ===> 相当于exit,退出
Ctrl+l键 ===> 相当于clear,清屏
2.2关机与重启
2.2.1 关机命令(关闭系统)
#关机
shutdown -h now 立马关机 ===》相当于halt 和poweroff
shutdown -h 21:00 今天21:00关机
shutdown -h +10 十分钟后关机
注:取消定时关机命令:shutdown -c
2.2.2 重启命令
#重启
shutdown -r now 立马重启 ===>相当于reboot
shutdown -r +10 十分钟后重启
三、目录操作命令
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 / 。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。首先我们需要先知道什么是绝对路径与相对路径。
- 绝对路径:
路径的写法,由根目录 / 写起的完整路径。
- 相对路径:
路径的写法,不是由根目录 / 写起,是相当于当前工作目录的路劲(用pwd命令查看)。
注:白色标记为常用,黑色为了解。
3.1 显示当前目录pwd
pwd命令用来显示当前所在工作目录
图1 当前工作目录/root
3.2 目录的切换cd
cd命令改变(切换)工作目录。它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
注:可在不同目录间切换,但该目录必须拥有足够的权限进入目的目录。
3.2.1 常见的cd命令
cd /root # 切换到目录/root
cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录
cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录
cd +回车 #快速回家
cd - #回到刚才所在目录底下去
图2 常见cd命令示例
3.3 目录的查看ls
ls命令可列出目录的内容,包括文件和子目录的名称。
3.3.1 常见的ls参数选项
ls #查看当前目录下的所有目录和文件
ls -a #查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l #列出长数据串,包括文件的属性和权限数据等每个文件输出在一行上
ls /dir 查看指定目录下的所有目录和文件 如:ls /usr
-d :仅列出目录本身,而不是列出目录的文件数据
-h :将文件容量以较易读的方式(GB,kB等)列出来
-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
3.3.2 常见的ls参数组合使用
ls -l # 以长数据串的形式列出当前目录下的数据文件和目录
ls -al # 以长数据串的形式列出当前目录下的数据文件和目录及隐藏文件(常用)
ls -lR # 以长数据串的形式列出当前目录下的所有文件
ls -aR # 列出当前目录所有文件,包括子目录
ls -al --block-size=m # 查看文件大小,其中k,m,g表示单位
图3 常见ls命令示例
3.4 创建目录【增】mkdir
mkdir命令用于创建新目录。
3.4.1常见的mkdir命令
mkdir aa #创建一个aa目录
mkdir -p aa/bb/cc #创建一个嵌套目录
图4 常见的mkdir命令示例
3.5 删除目录【删】rm、rmdir
rm命令用来删除文件或目录,删除目录必须加"-r"。
3.5.1常见的rm命令
rm file #删除文件file
rm -r aa #删除aa目录下的所有文件或目录(递归删除)
rm -f aa #忽略不存在文件,不会出现警告信息
rm -i aa #互动模式,在删除前会询问是否删除
图5 常见的rm命令示例
3.5.2 常见的rmdir命令
rmdir命令删除空的文件目录。
rmdir /aa #删除跟下aa空目录
rmdir -p #删除指定目录上所有目录
图6 常见的rmdir命令示例
3.6 修改目录【改】mv
mv命令可移动文件或目录,或更名。
3.6.1 常见的mv命令
mv aa 十个勤天 #将当前目录aa更名为十个勤天
mv 十个勤天 /home/ #将当前目录下的十个勤天移动至home(剪切)
图7 常见的mv命令示例
3.7 搜索目录【查】find
find命令在指定目录下查找文件。
3.7.1 常见的find命令
find 目录 参数 文件名称 #常用命令
find . -name "*.txt" #将当前目录及其子目录下所有后缀名为".txt"文件列出来
find . -iname "AA" #忽略大小写查找AA文件
find . -name "*.txt" -o -name "*.pdf" #在当前目录下查找以这两个后缀名结尾的目录
find . -type f #将当前目录及其子目录所有一般文件列出
find . -ctime -20 #将当前目录及其子目录下近20天所有更新过的文件列出
图8 常见的find命令示例
3.8 目录的复制 cp
cp命令就是拷贝文件和目录。
3.8.1 常见的cp命令
cp -r 目录名称 目标位置 #常用命令
cp -r dir1 ../ #将当前目录的dir1目录拷贝到上一级目录中
cp -i #在拷贝过程中询问是否要拷贝
cp -f #在拷贝过程中不询问直接拷贝
cp -r #拷贝目录中所有文件和目录
图9 常见的cp命令示例
四、文件操作命令
常见的文件类型分类
4.1 新建文件【增】touch
touch命令用于创建空文件或修改现有文件的时间戳。
4.1.1常见的touch命令
$ touch 十个勤天 #新建空白文件
$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 root root 0 7月 15 20:00 testfile
图10 常见的touch命令示例
4.2 删除文件【删】rm
rm file #删除文件file
rm -i file #删除前询问
rm -f file #忽略不存在文件,不会出现警告信息
图11 rm删除文件的示例
4.3 修改文件【改】vi或vim
vim打开文件为普通模式,普通模式下输入(i、a、o)进入插入模式。
插入模式下按 Esc键进入普通模式普通模式下输入:进入末行模式。
插入模式和末行模式不能直接切换
- 普通模式主要操作:删除、复制、粘贴
- 编辑模式主要操作:编辑文本
- 末行模式主要操作:退出保存
4.3.1 编辑文件
使用vi编辑器打开文件后点击按键:i,a或者o即可进入编辑模式。
i:在光标所在字符前开始插入a:在光标所在字符后开始插入
o:在光标所在行的下面另起一新行插入
vim 文件名/文件路径 #光标置于第一行首(若没有该文件名,将自动创建)
vim 文件名/文件路径 +N #N为几,打开文件后光标就处于第几行
4.3.2 取消编辑
第一步:ESC 进入命令行模式
第二步::进入底行模式
第三步:q!撤销本次修改并退出编辑
4.3.3 保存文件
第一步:ESC 进入命令行模式
第二步::进入底行模式
第三步:wq 保存并退出编辑
4.4 查看文件【查】
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
- grep 命令用于在文件中搜索指定的字符串或模式,并将匹配的行打印出来。这对于在大型文件中查找特定信息非常有用
4.4.1 cat命令
cat
命令用于连接并显示文件的内容。如果文件不大,可以直接使用cat
命令查看整个文件内容。
图12 常见的cat命令示例
4.4.2 more命令
more
命令允许你按页查看文件内容。当文件内容超过一屏时,more
会暂停并显示--More--(XX%)
,你可以按空格键查看下一页,按b查看上一页,或者按q
键退出查看。
4.4.3 less命令
less
命令与more
类似,但功能更强大。less
允许你向前和向后浏览文件内容,提供了更多的导航选项。在less
中,你可以使用上下箭头键、Page Up、Page Down 键等来浏览,按/
键进行搜索,按n
键查找下一个匹配项,按N
键查找上一个匹配项,按q
键退出。
4.4.4 head命令
head
命令用于显示文件的开头部分,而tail
命令则用于显示文件的末尾部分。这两个命令默认显示前/后10行,但你可以通过-n
选项指定显示的行数。
head filename # 显示文件的前10行
head -n 20 filename # 显示文件的前20行
4.4.5 tail命令
head
命令用于显示文件的开头部分,而tail
命令则用于显示文件的末尾部分。这两个命令默认显示前/后10行,但你可以通过-n
选项指定显示的行数。
tail
命令还有一个-f
选项,它可以用于实时跟踪日志文件的内容更新,这在系统管理和故障排查中非常有用。
tail filename # 显示文件的最后10行
tail -n 20 filename # 显示文件的最后20行
tail -f logfile.log # 实时查看logfile.log文件的更新内容
4.4.6 grep命令
grep
命令用于在文件中搜索指定的字符串或模式,并将匹配的行打印出来。这对于在大型文件中查找特定信息非常有用。
选项:
-i忽略字符大小写的差别。
-n 在显示符合范本样式的那一列之前标示出该列的编号。
-v 反转查找。
grep "text" -n file_name #输出包含匹配字符串
grep -v "text" file_name #输出除"test"之外的所有行
grep "root" /etc/passwd #过滤root目录下的流信息
grep -n "root" /etc/passwd #过滤跟root有关的行
grep -ni "a" /etc/passwd #不区分大小写过滤
ls | grep ".txt" #过滤所有后缀民为...
4.4.7 tac命令
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
4.5 文件的压缩和解压缩tar
tar命令是要是用来打包或这解包,压缩或这是解压缩的一个命令,常常用作备份文件使用,或将许多文件打成一个包并压缩。
注:要注意的时tar命令的使用,因为参数较多,在参数的下达中, c/x/t/r 仅能 存在一个,不可同时存在,因为不可能同时压缩与解压缩。z--gzip
4.5.1 打包
tar [选项] [目标包名] [源文件或目录]
- 选项: -c:创建一个包 -f: 定义目标包
- 目标包名: 要打成的包名
- 源文件名或目录名: 哪些文件要被打成包
tar 选项 目标包名 源文件或目录
tar -cf xxx.tar /aa #将aa 打成xxx.tar包
图13 常见的tar打包命令示例
4.5.2 查看
tar [选项] [包名]
- 选项: -t:查看 包 里面的文件! -f: 定义目标包
- 目标包名: 查看xxx.tar 的包的路径
tar -tf xxx.tar #在不解包的情况下查看里面的文件或目录
图14 常见的tar查看命令示例
4.5.3 添加
tar [选项] [包名] [源文件或目录]
- 选项: -r:将文件追加到包中 -f: 定义目标包
- 包名:查看xxx.tar 的包的路径
- 源文件或目录: 要添加的文件或这目录
tar -rf xxx.tar bb #将bb文件追加到xxx.tar包中
图15 常见的tar添加命令示例
4.5.4 解包
tar [选项] [包名]
- 选项: -x:将包 解包 -f: 定义目标包
- 包名: 查看xxx.tar 的包的路径
tar -xf xxx.tar #将xxx.tar中的文件解包
图16 常见的tar解包查看命令示例
4.5.5 压缩
tar [选项] [压缩名] [源文件]
- 选项: -c:打包 -z:将打包的文件用gzip格式压缩 -v:显示过程 -f: 定义目标包
- 压缩名: 指定压缩的名字
- 源文件: 要打包压缩的文件
tar -czvf xxx.tar.gz /aaa bb #将/aaa bb 文件 打包压缩为 xxx.tar.gz
图17 常见的tar压缩包命令示例
4.5.6 解压缩
tar [选项] [包名]
选项: -x: 解包解压 -z:以gzip的格式进行解压 -v:显示过程 -f: 定义目标包
包名: 查看xxx.tar 的包的路径
tar -xzvf xxx.tar.gz #将 xxx.tar.gz解包解压到当前目录下
图18 常见的tar解压缩命令示例
五、用户管理
用户分为程序用户、超级管理员root,普通用户
5.1 新建用户和组别adduser、groupadd
5.1.1 新建用户名
adduser 用户名
图19 常见的adduser命令示例
5.1.2 新建组
groupadd 组名
图20 常见的groupadd命令示例
5.1.3 将用户添加到组里
useradd -g 组名 用户名
图21 将用户添加到组里命令示例
5.2 查看用户id
id [选项] [参数]
- 选项: -g:显示用户所属群组的ID。 -u:显示用户ID。
- 参数: 用户名,要查看的用户名。
id -u #查看当前用户的用户id
id test #查看test的用户id组id
图22 常见的id命令示例
5.3 权限设置(重要)
在Linux系统中,rw-r--r--权限用数字表示是(C)
A.755 B.655 C.644 D.744
5.3.1 改变文件的所属chown
chown [选项] [参数]
- 选项: -R:递归处理,将指定目录下的所有文件及 子目录一并处理。
- 参数: 所属用户 ==> 要改变的所属用户。 所属组 ==> 要改变的所属组。
chown -R test /kk #将/kk目录下的所有文件改为test用户所有
5.3.1.1 改变文件所属人
- chown 新所属人 需更改的文件名称
- chown 新所属人 : 原组名 文件名
图23 常见的chown改变文件所属人命令示例
图24 常见的chown改变文件所属人命令示例
5.3.1.1 改变文件所属组别
chown : 新所属组名 文件名
注:冒号不能丢
图25 常见的chown改变所属组别命令示例
5.3.2 改变文件的权限chmod
chmod [选项] [参数]
- 选项: 权限 ==> 权限值。
- 参数: 文件名:设置权限的文件名
chmod u+x,g+w kk #文件kk设置权限
chmod u=rwx,g=rw,o=r kk #给kk文件设置权限
chmod 764 kk #文件kk设置权限
图26 常见的chmod命令示例
六、进程管理
进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行 资源分配和调度的一个独立单位,是应用程序运行的载体。
注:(1)对于shell来说执行程序产生的进程分为前台进程和后台进程
(2)执行一个程序的时候如果需要将它变为后台进程时 在执行命令后加&
(3) Ctrl+c 将正在进行的前台进程终止
6.1 当前用户进程ps
ps [选项] [参数]
选项:
- -a:显示所有用户的进程
- -u:显示用户名和启动时间
- -x:显示 没有控制终端的进程
- -e:显示所有进程,包括没有控制终端的 进程
- -l:长格式显示
ps #只显示隶属于自己的进程状态
ps -aux #显示所有进程
ps –aux | grep xxx #过滤出要查看的进程
图27 ps查看自己的进程状态命令示例
图28 ps查看所有进程的命令示例
图29 ps过滤所需进程命令示例
6.2 进程杀死命令kill
kill [选项] [参数]
- 选项: -1:重启进程 -9:强制杀死
- 参数: pid进程编号
Kill pid #杀死进程进程编号为pid的进程
Kill -1 pid #重新启动pid的进程
Kill -9 pid #强制杀死pid进程
6.3 查看进程信息top
top [选项] [参数]
提示: 退出top按q
top 动态的显示进程状态
6.4 操作系统的负载查看(重要)
- uptime: 命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
- free:可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区空闲内存:available=free+buffer(缓冲)+ cache(缓存)
- mpstat:cPu核状态
- ifstat: 网卡网络状态
- df :查看磁盘的使用率
七、重定向操作
Linux中的重定向是将程序的输入流或输出流从默认的位置改变到指定的位置。可以使用特殊的符号来实现重定向操作。(文中command代表命令)。
(1)重定向命令列表
命令 说明
command > file 将输出重定向到 file
command < file 将输入重定向到 file
command >> file 将输出以追加的方式重定向到 file
n > file 将文件描述符为 n 的文件重定向到 file
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file
n >& m 将输出文件 m 和 n 合并
n <& m 将输入文件 m 和 n 合并
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入
(2)文件描述符
0:通常是标准输入(STDIN)
1:是标准输出(STDOUT)
2:是标准错误输出(STDERR)
输出重定向:
7.1 符号 > 将程序的标准输出重定向到指定位置,会覆盖原有内容。
图30 让查到的ls全到c2中去
7.2 符号 >> 将程序的标准输出追加到指定位置,不会覆盖原有内容
图31 将标准输出追加到指定位置
7.3 符号 2> 代表将程序的标准错误输出重定向到指定位置。
图32 将标准错误重定向到指定位置
7.4 符号 2>> :将程序的标准错误输出追加到指定位置。
图33 将标准错误追加到指定位置
八、其他重要操作命令
8.1 创建连接(快捷方式)ln(重要)
8.1.1 连接的分类
Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。
链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。
- 硬链接类似于复制了一个新的文件,这个文件不会随着源文件的丢失/修改而无法读取或者出现问题。
- 但是软连接类似于windows的快捷方式,新的数据块中存放的内容是另一文件的路径名的指向,所以源文件的丢失/修改都会影响新的链接。
- ln(link)创建链接,表示生成一个硬链接文件,-s表示生成软链接文件。
注意:
不能对目录使用硬链接。
不能在不同的文件系统之间创建硬链接或软连接。
源文件被删链接文件将不可用。链接文件删除源文件可正常使用
8.1.2 硬链接和软链接的区别(重要)
1、定义不同
(1)软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
(2)硬链接就是一个文件的一个或多个文件名。把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
2.inode 号:
(1)硬链接与原始文件共享同一个 inode 号
(2)而软链接有自己独立的 inode 号。
例如,对于一个文件
file.txt
,创建硬链接hardlink.txt
后,它们的 inode 号相同。但创建软链接softlink.txt
,其 inode 号则不同。3.跨文件系统:
(1)软链接可以跨文件系统创建,而硬链接不行。
注: 假设系统中有两个不同的文件系统分区,在一个分区中的文件无法创建指向另一个分区中文件的硬链接,但可以创建软链接。
4.指向对象:
(1)硬链接直接指向文件的 inode
(2)而软链接指向的是文件的路径。
注:这意味着如果文件的路径发生改变,软链接可能会失效,但硬链接不受影响。
5、限制不同
(1)硬链接只能对已存在的文件进行创建,不能交叉文件系统进行硬链接的创建;
(2)软链接可对不存在的文件或目录创建软链接;可交叉文件系统;
6、创建方式不同
(1)硬链接不能对目录进行创建,只可对文件创建;
(2)软链接可对文件或目录创建;
7、影响不同
(1)删除一个硬链接文件并不影响其他有相同inode号的文件。
(2)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即danglinglink,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
8.1.3 软硬连接的实现
ln [选项] [参数]
- 选项: -s:创建软连接
- 参数: 源文件 ==> 指定要连接的文件
- 目标文件:指定源文件要连接的文件
图34 常见的ln软连接命令示例
图35 常见的ln硬连接命令示例
8.2 显示日历cal
cal [选项] [月份] [年份]
- 选项: -s: 显示星期天为一个星期的第一天,默认的 格式
-m: 显示星期一为一个星期的第一天
-j: 显示在当年中的第几天
- 月份: 1-12
- 年份: 1-9999
cal #显示当年月的日历
cal 2024 #显示整年日历
cal 7 2024 #显示2024年7月的日历
cal -j #显示今年是一年中的多少天
cal -j 7 2024 #显示7月是当年的第几天
图36 常见的cal命令示例
8.3 显示系统信息uname
uname命令会显示系统重要信息,如内核名称、主机名、内核版本等
uname -r #内核版本
uname -n #主机名
uname -a #显示所有系统重要信息
图37 常见的uname命令示例
8.4 显示时间date
date [选项] [参数]
选项:
- -d:显示字符串所指的日期与时间
- 。字符串前后必须加上双引号;
- -s:根据字符串来设置日期与时间
- -u:显示GMT(世界时间);
date +"%Y-%m-%d %H-%M-%S" #格式化显示时间
date -s "20180523 00:20:00" #设置时间
图38 常见的date命令示例
8.5 显示文件大小du
du [选项] [参数]
- 选项:
-s 仅显示总计,只列出最后加总的值。
-h 以K,M,G为单位,提高信息的可读性。
- 参数: 目录或文件
du xx #查看xx文件大小
du -h xx #查看xx文件大小带单位
du -h ./ #查看当前目录的文件大小(带单位版)
du -sh ./ #统计当前目录的总大小(带单位版)
图39 常见的du命令示例
图40 常见的du命令示例
8.6 统计文本 wc
wc [选项] [文件]
选项: -c:只显示Bytes数;
-l:只显示列数;
-w:只显示字数
wc xxx.txt #查看文本的行号 字符数 单词数
wc -c #显示字符数
wc -l /etc/passwd #可以知道有几名用户(有几行数据就有几个用户)
图41 常见的wc命令示例
8.7 控制台输出echo
echo [参数]
参数: 要输出的值或字符串
echo hello #输出hello
echo hello world #输出hello world,两个参数
echo "hello world" #输出hello world,一个参数
图42 常见的echo命令示例
8.8 命令别名alias,unalias(取消)
1.命令别名
alias [选项] [参数]
- 选项: -p:打印已经设置的命令别名。
- 参数: alias 新的命令='原命令 -选项/参数
2.取消别名
unalias [选项] [参数]
- 选项: -a:取消所有命令别名。
- 参数: 命令别名:指定要取消的命令别名。
1.命令别名
alias -p #显示已有的别名
alias cc='ls -il' #给ls -il 组合命令下·其别名
2.取消别名
alias -p #显示已有的别名
unalias lskk #取消 lskk这个别名
图43 常见的alias命令示例
图44 常见的unalias命令示例
后续会不断补充完善,哪里不对望宝宝们指出!