关于Linux的一些知识¶
Linux是类Unix的操作系统
文件夹分类¶
/boot¶
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev¶
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
/etc¶
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
user/lib¶
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
/lost+found¶
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/media¶
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt¶
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/proc¶
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器
/root¶
该目录为系统管理员,也称作超级权限者的用户主目录
/srv¶
该目录存放一些服务启动之后需要提取的数据。
/sys¶
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp¶
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr¶
usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin¶
系统用户使用的应用程序。
/usr/sbin¶
超级用户使用的比较高级的管理程序和系统守护程序。
/var¶
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run¶
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
注:
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
基础命令¶
sudo su#切root
sync#同步内存数据到硬盘中
logout#退出root
exit#关闭终端(退出root或者直接关闭)
useradd test#创建账号test 在目录/home/test下
useradd -d /home/us test#指定目录
passwd test#设置密码
# 保留家目录删除
userdel test
# 但是无法登入
# 删除家目录同时删除用户
userdel -r test
whoami#查询当前用户
vim¶
是Linux的文本编辑器,学会用Vim是一个非常需要被掌握的技能
三种模式¶
- 正常模式(浏览与技能)
jkhl表示上下左右移动dd删除当前行u撤回上一步的请求yy复制当前行p粘贴内容- 插入模式
- 按
i启动,esc退出 - 正常执行操作
- 命令行模式
- 输入
:w$\rightarrow$ Save(保存) - 输入
:q$\rightarrow$ Quit(退出) - 输入
:wq$\rightarrow$ 保存并退出 - 输入
:q!$\rightarrow$ 强行退出
更多参考¶
文件目录¶
# 显示当前绝对路径(绝对路径就是全路径,相对路径就是相对于当前文件夹的路径)
pwd
# 工作目录 Docker / Kubernetes
# 查看当前文件夹文件信息
ls
-a # 查看全部
-l # 查看单行详细信息
-h # 人类看懂的
ls -l 目录 # 指定文件夹
ls -al[-la]
# 进入指定文件夹(支持绝对路径或者相对路径)
cd ~ # 回到家目录
# 或者使用
cd # 使用空格回到家目录
# 回到上一层目录
cd .. # 只能回到根目录之前
# 创建文件夹
mkdir test # 创建test的文件夹
# 创建多级目录
mkdir -p robin/test # 先创建robin,再在robin文件夹下创建test
# 删除空文件夹
rmdir test
# 删除文件夹(可带文件)
rm -rf robin # -r 递归,-f 强制删除
# 创建空文件
touch test.txt
# 当然也可以直接使用 vim 进行创建并操作文件内容
vim test.java # 具体参考vim指令
# 拷贝命令
cp [参数] 文件现目录 文件拷贝要到的目录
cp test.txt /home
# 拷贝全部
cp -r test /home
# 覆盖拷贝
cp -r test /home
# 移动文件(文件夹)或重命名
mv oldName.txt newName.txt
# 修改文件名
mv oldPath newPath
# 查看文件内容
cat [选项] fileName.txt
# 行号查询
cat -n fileName.txt
# 管道命令:将前语句的查询结果,扔给下一个语句 | more·
cat fileName.txt | more
# 按住enter键查询下一行,或者直接空格翻页
# more 基于Vi文本编辑器的文本过滤器
more fileName.txt
# less 分屏查看文件内容,与more相似,但是更强大,是一种动态加载文件内容信息的命令
less fileName.txt
# 空格下一页,pgDn下一页,pgUp上一页,/[?]字符串(n下找,N上找),q离开
/haha
# 等价于
?haha
# 输出内容到控制台
echo [选项] [输出内容]
echo $PATH
echo $HOSTNAME
echo "Hello World!"
# 查看文件开头部分
head [选项] [值] fileName.txt
head fileName.txt
# 默认查看前十行
head -n 5 fileName.txt
# 查看前五行
# 查看文件末尾部分
tail [选项] [值] fileName.txt
tail fileName.txt
# 默认查看后五行
tail -n 5 fileName.txt
# 查看后五行
# 实时追踪文件更新
tail -f fileName.txt
# 此时在另一个用户终端,输入
echo "Hello World!" > fileName.txt
# 就会发现文件内容进行了更新(一个箭头是覆盖,两个是追加)
# > 就是重定向,将上一条命令执行的结果返回给下一句
cat 文件1 > 文件2
ls -al > 文件
# Linux 的快捷方式
ln -s 指定的文件 被指定的文件
# 将 被指定的文件 创建快捷键到 指定的文件
# 查看历史执行命令
history
# 查看进10个命令
history 10
# 执行曾经的第22个命令
!22
压缩文件¶
# 压缩文件/解压
gzip 文件名
# 只能将文件压缩为.gz文件
gunzip 文件名.gz
# 解压缩.gz文件
=================================================================
# 压缩文件夹(文件)/解压缩文件夹(文件)
zip [选项] 文件名.zip
unzip [选项] 文件名.zip
-r 递归压缩
-d 指定解压后文件的存放地
# 举例
zip -r hello.zip /home/hello/ # 包含hello文件夹,它等价于
zip -r hello.zip /home/hello/*
unzip -d /opt /home/hello/hello.zip # 将文件解压到 /opt
=================================================================
# 压缩和解压一体指令(.tar.gz)
tar [选项] 文件名.tar.gz 解压的路径
[选项]
-c:创建一个新的归档文件(打包)。例如:tar -cvf archive.tar /path/to/directory。
-x:解压归档文件(解包)。例如:tar -xvf archive.tar。
-t:列出归档文件中的内容。例如:tar -tvf archive.tar。
-f:指定归档文件的名称。通常与-c或-x参数一起使用。例如:tar -cvf archive.tar file1 file2。
-v:显示详细信息,即在打包或解压过程中显示所处理的文件名。例如:tar -cvf archive.tar file1 file2。
-z:使用gzip进行压缩或解压缩,通常用于处理.tar.gz格式的归档文件。
例如:tar -czvf archive.tar.gz /path/to/directory(压缩),tar -xzvf archive.tar.gz(解压缩)。
-j:使用bzip2进行压缩或解压缩,通常用于处理.tar.bz2格式的归档文件。
例如:tar -cjvf archive.tar.bz2 /path/to/directory(压缩),tar -xjvf archive.tar.bz2(解压缩)。
-J:使用xz进行压缩或解压缩,生成.tar.xz文件。
例如:tar -cJvf archive.tar.xz /path/to/directory(压缩),tar -xJvf archive.tar.xz(解压缩)
权限管理¶
# 第 1 位通常是:d(目录)、l(链接快捷方式)、-(普通文件)、c(字符设备外设)、b(块设备,硬盘)
# 第 2~4 位代表文件所有者对该文件的权限(r读、w写、x执行、-无权限)
# 第 5~7 位代表文件所属组对该文件的权限(rw-就是不可执行)
# 第 8~10 代表其他组对该文件的权限
# 修改Linux文件/文件夹权限
chmod
# 第一种,使用 + - = 对权限进行管理
# 其中 u 代表用户,g 代表所在组,o 代表其他组,a 代表所有人
chmod u=rwx,g=rw,o=x 文件名/目录
chmod o+w 文件名/目录 # 单独给 其他组 + 写的权限
chmod a-x 文件名/目录 # 单独给 所有用户 - 执行权限
# 第二种,使用数字进行变更权限
# r=4,w=2,x=1,所以r+w+x=7
# 1执行,2写,3执行+写,4读,5读+执行,6读+写,7读+写+可执行
chmod 751 文件/目录
# 修改文件文件所有者
chown 新用户 文件/目录 # 变更所有者
chown 新用户:新组 文件/目录 # 更改 所有者 和 所有组
[选项]
-R # 全体子文件信息(一定是大R)
chgrp 新组 文件/目录
磁盘管理常用命令¶
ls -l /目录 | grep "^-"
# 列出普通文件
# "^-" 就是ls出来的第一占位符符号
ls -l /目录 | grep "^-" | wc -l
# 统计数量,wc计算,-l是指行数
ls -l /目录 | grep "^d" | wc -l
# 文件夹数量
ls -l /目录 | grep "^d"
# 列出文件夹
ls -lR /目录 | more
# 列举子文件和子文件夹递归显示
ls -lR /目录 | grep "^-" | wc -l
# 递归子文件,并计数
ls -lR /目录 | grep "^d" | wc -l
# 递归子文件夹,并计数
yum install tree
tree /目录
# 树状展示目录结构