1.Linux 初步认识
Unix -> Linux -> Ubuntu(个人)、CentOS(公司,服务器)、Red Hat(公司,服务器)、Kali...
安卓内核为Linux,目前大多数手机系统都是基于Android XXX 的 XXX(更改)
Linux 四个部分:
1.Linux kerenel 内核
2.GNU 工具
3.GUI Desktop 环境
4.Application 应用
应用软件->GUI(界面)->Linux内核->硬件
应用软件->GNU(命令)->Linux内核->硬件
1.1 Linux 内核
- Linux 内核:
- 1.管理硬件设备
- 2.软件程序系统
- 3.系统内存
- 4.文件管理
Linux 支持的文件系统:ext,ext2,ext3,ext4(Linux常用),hpfs,iso9660,JFS,minix,msdos,ncpfs,nfs,ntfs(WINDOWS常用),proc,Reiserfs,smb,sysv,umsdos,vfat,XFS,xiafs
Linux 不同分区有不同文件系统
1.2 GNU工具
- GNU 工具(Unix工具->Linux工具)coreutils
- GNU 核心:
- 处理文件
- 操作文本
- 管理进程
"shell" 提供给用户使用的软件,用户通过其使用电脑,与电脑交互。分两种
CLI壳层:纯命令行界面(windows上cmd,Linux上shell(Linux核心是CLI))
GUI壳层:图形化界面CLI shell举例:
bash shell 最基础的shell
zsh: MacOS上常用shell(项目oh-my-zsh)
ash
korn
tcsh
1.3 GUI Desktop
GUI
1.X-Window(模仿windows)
2.KDE
3.GNOME
KDE与GNOME:什么是Linux桌面的终极选择?
4.Unity
2 Shell(ssh root@124.71.211.207)
2.1 CLI
用户名@计算机名(服务器):当前所在目录 等待用户输入($(非root用户)#(root用户))
~ 用户目录:/root或者/home/用户名
/ 根目录:/
2.2 Linux目录
Linux一切皆文件
Windows:盘符:目录
Linux:/目录
目录 | 内容 |
---|---|
/ | 根目录 |
/bin | 二进制文件(GUN工具,各种命令,各用户共用的命令) |
/sbin | 系统二进制目录(GUN高级管理员使用的命令工具) |
/usr | 用户二进制目录(普通用户使用的工具) |
/cdrom | 光盘 |
/etc | 系统配置文件(类似windows的注册表等) |
/home | 用户列表目录 |
/lib(64/32) | 库目录,系统应用程序的依赖库 |
/lost+found | 丢失文件未保存文件 |
/mnt | 挂载目录(U盘等文件) |
/proc | 伪文件系统 |
/run | 运行目录(运行时临时文件) |
/tmp | 临时目录 |
/var | 可变目录(存放经常变换的文件,log之类的) |
/boot | 启动文件目录 |
/dev | 设备目录(设备节点,类似windows设备管理器) |
/media | 媒体目录,和/mnt类似 |
/opt | 其他软件的可选目录 |
/root | 管理员用户目录 |
/srv | 服务目录 |
2.3 命令
man + 命令,获取命令帮助(用pgdn/pgup翻页)
2.3.2 ls
ls 显示当前目录文件(不包括隐藏文件)
ls -a 显示当前目录文件(包括隐藏文件)
ll 竖形显示文件目录(包括隐藏文件)(ls -l -a)
ls -F -R 目录 显示指定目录下遍历所有目录(R)下的所有文件(F)文件过滤:
*:匹配任意多个字符,?匹配任意单个字符,通配符([a-x]匹配a-x的单个字符,[!a-x]匹配非a-x的单个字符)
ls *.pdf 查找所有pdf文件
ls ?.pdf 查找所有文件名为单个字符的pdf文件
2.3.2 cd
cd ~ = cd /home/用户(如果有的话)
cd 进入用户文件夹
. 表示当前目录
.. 表示上一层目录
cd .. 返回上一层目录
cd ../.. 返回上上一层目录
cd - 返回上一次目录
pwd 显示当前目录
2.3.3 touch
&& 同时执行多个命令
touch 文件
- 若文件不存在则创建
- 若文件存在则更新文件修改时间
2.3.4 cp
cp 参数 源文件名 目标文件名
源文件同样可以加过滤,前面目录所有表示方式都可以用
源文件目录/* 复制源文件目录下的文件(不包括源文件夹)
目标文件的修改时间更新,源文件不更新
复制文件夹时 加参数(R) 连同源文件夹一起复制过去
一定要加(I)软链接:对目标文件目录的引用
硬链接:对目标文件内容的引用
附加 光标移动
Tab 补全
Ctrl+方向键 快速跳过一个单词
Ctrl+L 清屏
Ctrl+A 跳到开头
Ctrl+E 跳到结尾
Ctrl+B 光标向前移动一个字符
Ctrl+F 光标向后移动一个字符
Ctrl+H 删除一个字符同backspace
Ctrl+T 将光标前面一个字符往后顺序移动(奇怪的功能)
Ctrl+U 删除光标前的内容
Ctrl+K 删除光标后的内容
2.3.5 lnk(ln)
Linux中的快捷方式
.lnk 链接文件(快捷方式文件)
1.符号(symbolic link)链接(软链接(soft link))- 快捷方式
指向的文件必须存在
2.硬链接 - 副本(windows上复制会创建一个新文件,但Linux上不是,虽然看起来和windows一样,但本质还是指向源文件)
原来的文件同样必须存在(存疑),是将文件的inode属性块进行了复制
硬链接只能在同一个硬盘(注意是硬盘,同一个介质,同一个文件系统)内创建
因此,推荐使用软链接。
hto1 硬链接,与原文件大小相同(12Byte:hello world)注意不占用实际空间,类似于创建副本
to1 软链接,大小不一样(5Byte),是快捷方式
ln -s(symbolic) 源文件 目标文件:创建符号链接
ln 源文件 目标文件:创建硬链接
修改1.txt文件,使其大小改变,然后通过ls -li 查看
源文件大小、内容改变;
硬连接文件大小、内容改变;
复制的文件大小不变,内容不变;
软连接大小不变,内容改变。
使用cp复制链接文件会发生什么:
BY ChatGPT:
在Linux中,使用cp命令(复制命令)复制软链接和硬链接会有不同的行为。
复制软链接:
如果你使用cp命令复制一个软链接(符号链接),默认情况下,会复制软链接所指向的目标文件或目录,而不是软链接本身。
如果希望复制软链接本身而不是目标文件,你可以使用-P选项或--no-dereference选项。这样做将保留软链接,并将其复制到目标目录中,而不会解引用它。
复制硬链接:
cp命令复制硬链接时,默认行为是复制链接的目标文件,而不是创建新的硬链接。
如果希望复制硬链接并在目标目录中保留相同的链接关系,你可以使用-l选项或--link选项。这将尝试在目标目录中创建硬链接。
总的来说,cp命令对软链接和硬链接的处理是不同的:对软链接,默认情况下复制链接的目标文件;对硬链接,默认情况下复制目标文件而不是创建新的硬链接。
2.3.6 mv
移动or重命名
格式:mv -[] source dest
移动:dest目录最后有/
重命名:dest目录最后没有/
mv test.c ~/Documents/c/
cd !$
!$ 代表上一条命令的最后一个路径
2.3.7 rm
彻底删除,慎用
格式:rm -[] dest
rm -i file
2.3.8 mkdir/rmdir
格式:mkdir -[] dest
rmdir删除空目录,还是用rm
mkdir -p /1/2/3/4 :创建多个目录
2.3.9 文件格式(file)
格式:file 文件
检测文件类型
[root@linuxcool ~]# file File.cfg
File.cfg: ASCII text
[root@linuxcool ~]# file Dir
Dir: directory
[root@linuxcool ~]# file /dev/sda
/dev/sda: block special (8/0)
[root@linuxcool ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1] =937708964f0f7e3673465d7749d6cf6a2601dea2, stripped, too many notes (256)
2.3.10 cat/more/less
(右键文件-以记事本打开)
cat显示文件全部内容,适合文本少的
cat -A file
显示所有字符,$:回车,^I:tab键cat -N file
显示行数
more一次显示一屏内容
Space下一页,B上一页,Q退出,Enter向下翻一行
less和more类似
PageUp向上翻页,PageDown向下翻页
less可以输入命令,类似vim,可以查找之类的操作
2.3.11 tail/head
看log日志之类的,只看末尾几行
tail file
同样地,head看头几行
tail -n 2 demo.c
2.4 Shell!Deeper!
不再立足于文件,而是进程!(文件管理器->任务管理器)
2.4.1 System Monitor
Linux 上的任务管理器(图形化界面)
2.4.2 top
top命令的功能是实时显示系统运行状态,包含处理器、内存、服务、进程等重要资产信息。
运维工程师们常常会把top命令比作“加强版的Windows任务管理器”,因为除了能看到常规的服务进程信息之外,还能够对处理器和内存的负载情况一目了然,实时感知系统全局的运行状态。
top命令非常适合作为接手服务器后执行的第一条命令。
2.4.3 ps
ps(process status):进程[!]状态
最复杂的命令之一
PID: 进程的标识
ps axo pid,comm,pcpu :显示进程的pid,名称,cpu占用率
ps -aux | grep named :查看named进程详细信息
ps -l :将目前属于您这次登录的pid的相关信息展示出来
2.4.4 kill
kill pid
kill -9 pid :强制结束
2.4.5 mount
挂载:挂载是指将一个文件系统或设备与一个目录或文件系统的路径关联起来,以便访问或使用。
fdisk -l :查看当前文件系统/设备
mount 文件系统/设备 目标文件夹 :挂载到指定路径
umount 目标文件夹 :取消指定文件夹下的挂载
2.4.6 df
report file system disk space usage
显示磁盘相关信息
df -h:换算单位后显示
2.4.7 du
disk usage
显示指定目录或文件的大小
du -h:换算单位后显示s
2.4.8 sort
对文件内容进行排序
sort 参数 文件名
du -sh * | sort -nr: 排序并显示文件占用空间
2.4.9 grep
查找,可以很复杂
2.4.10 压缩/打包 gzip/tar
linux中的压缩文件
.gz : gzip 解压工具(.tar.gz打包然后压缩)
.bzip2 ,.zip
为什么是.tar.gz
tar可以将多个文件保存到一个归档,并能从归档中还原所有文件
gzip(包括大多数工具)只能将一个文件压缩
于是诞生了.tar.gz
tar -zcvf 文件名 文件路径:压缩文件z:打包为gzip格式,c:打包为一个新文件,v:显示过程,f:指定文件名
tar -zxvf 文件 文件路径: 解压缩文件x:解压文件