Linux
Linux 入门
目录结构
在Unix/Linux系统中组成路径的目录分割符为斜杠"/"
路径分为绝对路径和相对路径:
绝对路径 :绝对路径是从目录树的树根“/”目录向下到达目标路径
相对路径:相对路径是指目标目录相对于当前目录的位置。
shell:命令解析器。—— unix —— Born
bash:命令解析器。 —— Linux —— Born again shell
“.”: 相对于shell当前工作目录位置
“..”: 相对于shell当前工作目录位置上一级目录
-
根目录:"/"表示, ,在Linux下有且只有一个根目录
-
bin 目录:"/bin" 存放二进制可执行文件
-
dev 目录:"/dev" 存放系统设备文件。 —— Linux 系统中, 所见皆文件
-
etc 目录:"/etc" 存储系统配置文件, 不建议在此目录下存放可执行文件。
重要的配置文件:
/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d -
home目录:存放系统用户的“家目录”(宿主目录),新增用户账号时,用户的家目录都存放在此目录下,"~"表示当前用户的家目录
-
root目录:系统管理员root的 “家目录”
终端提示符结构: 用户名@计算机名 : 当前shell的工作目录 #(root)/ $ (普通用户) -
temp目录:存放正在运行的 用户程序,所使用的临时文件
-
usr目录: 存放用户程序相关数据、资源
/usr/bin 存放应用程序
/usr/share 存放共享数据
/usr/lib 存放不能直接运行的函数库文件
/usr/local: 存放软件升级包
/usr/share/doc: 系统说明文件存放目录
/usr/share/man: 程序说明文件存放目录
/usr/include:存放头文件
基本指令
- ls 指令 : list 简写,列出目录的内容
参数 | 含义 |
---|---|
ls -a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
ls -l | 以列表方式显示文件的详细信息 |
ls -h | 以列表方式显示文件的详细信息 |
ls -d | 查看目录本身的详细信息 |
ls-l 解析:
组成结构
- 文件属性(类型):
第一个字符: 文件类型。—— 7种。(Linux系统不以后缀名作为区分文件依据。)
“-”: 普通文件(文本文件)
“d”:目录文件
“l”:软连接 —— 相当于 windows下的快捷方式。
--- 以上3种,是Linux系统中实际占用磁盘存储的文件。
“b”:块设备文件
“c”:字符设备文件
“p”:管道文件(channel) —— pipe
“s”:套接字文件
—— 以上4种,,是Linux系统中伪文件(不占用磁盘存储
- 文件操作权限(存取控制):9个字符, 分3组---- 所有者、所属组、其他人
r:读、w:写、x:执行。 对应位有对应权限,显示对应字符,没有对应权限。用“-”站位。
- 链接:
3.1 硬链接
硬链接特性: 源文件和硬链接文件之间具有相同的属性,并且能实时同步
硬链接原理: 借助 inode(i节点)。 一般情况下,每个文件具有一个inode, 但硬链接文件之间具有相同的inode,系统在操作文件时,以inode为标识访问文件。
inode 查看创建硬链接:ln 源文件名 硬链接文件名
创建硬链接时,相当于在一个 inode上,创建多个访问路径(dentry — 目录项)
查看inode命令: ls -i 文件名 或者 stat 文件名 删除硬链接时,相当于断开一个 dentry 对 inode 的 指向。
3.2. 软链接--类似windows中的快捷方式
创建命令: ln -s 源文件名 软连接文件名 ——> 保证任意搬移软链接依然生效,源文件名采用“绝对路径”创建
软链接的大小:实际指向的文件的访问路径。
- 文件大小:
普通文件:表实际大小。
目录文件:表占用存储空间大小。
软连接文件:表实际路径大小。
时间:创建、或最后一次修改文件的时间。
-
cd指令: 切换工作目录(change directory)
cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录
参数 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd .. | 切换到当前目录的上一级目录 |
cd - | 进入上一个进入的目录 |
-
rm删除指令: 删除文件或者目录(remove)
文件删除后不能恢复
参数 | 含义 |
---|---|
rm -i | 以进行交互式方式执行 |
rm -r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
rm -f | 强制删除,忽略不存在的文件,无需提示 |
-
cp拷贝指令: 将给出的文件或目录复制到另一个文件或目录中
cp 待拷贝文件/目录路径 目的路径
参数 | 含义 |
---|---|
rm -a | 保留链接、文件属性,并递归地复制目录,保持文件原有属性 |
rm -r | cp将递归复制该目录下的所有子目录和文件,目标文件也可以是文件 |
rm -f | 覆盖已经存在的目标文件而不提示 |
rm -i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
rm -v | 显示拷贝进度 |
示例:
cp vim_configure/ code/ -ivr 把文件夹 vim_configure 拷贝到 code 目录里
- mv移动指令: 移动或重命名文件或者目录
参数 | 含义 |
---|---|
mv -i | 交互方式操作,如果导致对已存在的目标文件的覆盖,系统会询问是否重写 |
mv -f | 禁止交互式操作,如有覆盖也不会给出提示 |
mv -v | 显示移动进度 |
-
压缩/解压缩指令:
压缩:
tar -zcvf 压缩包名.tar.gz 压缩源材料(可以是多个文件)
tar -jcvf 压缩包名.tar.bz2 压缩源材料(可以是多个文件)
z:gzip格式
j:bzip2格式
c:Create
v:view 查看
f:file 压缩文件名
解压缩:
tar -zxvf 压缩包名.tar.gz -C 解压到路径 【重点】
tar -jxvf 压缩包名.tar.bz2 -C 解压到路径
x:解压缩
-C 参数: 解压缩到指定目录位置。
其他压缩:zip /rar
zip:
压缩 zip testZIP cba hello.h out ——> testZIP.zip
解压缩:unzip testZIP.zip
rar:
压缩:rar a -r testRAR cba hello.h out ——> testRAR.rar
解压缩: rar x testRAR.rar
- 用户管理:
sudo su —— 切换当前用户为 root
passwd: 修改当前用户的 密码。
su root : 切换当前用户为 root 用户。不改变工作目录位置。
su - root : 切换当前用户为 root 用户。改变工作目录位置到root的家目录。
sudo: 临时获得一次root用户权限。 当前命令执行结束,权限失效。
- 创建删除用户/用户组
1.1 增加用户
sudo adduser 新用户名 —— 输入密码、输入用户信息 、 Y
新用户添加成功,同时创建相应的用户组。 /etc/passwd 有用户相关描述信息。/etc/group 用户组有相关描述
1.2 删减用户
sudo deluser 用户名 —— 同时删除用户组。
删除用户添加成功, /etc/group 和 /etc/passwd 删除相关描述信息。
1.3 增加用户组
sudo addgroup 新组名
新组添加成功,/etc/group 新添用户组相关描述。
1.4 删除用户组
sudo delgroup 组名
删除组名成功, /etc/group 删除相关描述信息。
- 修改文件权限
2.1 修改文件所有者
sudo chown 用户名 待修改文件名
image.png
2.2 修改文件所属组
sudo chgrp 组名 待修改文件名
2.3 修改文件操作属性
文字法:
参数 | 含义 |
---|---|
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | 其他用户 |
a | u, g, o三者都包括 |
- | 撤销权限 |
+ | 增加权限 |
= | 设定权限 |
r | read 表可读权限 |
w | write 表可写权限 |
x | excute 表可执行权限 |
示例:
其他用户增加w权限 用户组设定x权限数字法 :
参数 | 含义 |
---|---|
r | 读取权限,数字代号为 "4" |
w | 写入权限, 数字代号"2" |
x | 可执行权限,数字代号"1" |
- | 无权限,数字代号"0" |
r-x-wx--x —— sudo chmod 531 file
示例:
设定rwx 权限
- 系统管理
- ps(查看系统进程):
参数 | 含义 |
---|---|
-a | 查看全部进程 |
-u | 显示进程详细信息 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
常用指令:
ps aux | grep xxx :筛选出含有 xxx的进程
ps aux | more: 以more的方式显示全部进程信息
2 kill (终止进程):
kill 指定PID(进程号)的进程,需要配合 ps 使用查询对应进程的PID
使用格式:
kill [-signal] PID
siginal list
signal list.png常用指令:kill -9 PID ----强制结束进程
3 关机重启:
参数 | 含义 |
---|---|
reboot | 重新启动操作系统 |
shutdown -r now | 重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:30 | 定时今天20:30关机 |
shutdown -h +10 | 定时10分钟关机 |
init 0 | 关机 |
init 6 | 重启 |
4 字符界面和图形界面切换(适用大部分平台)
切换到字符界面:Ctrl + Alt + F3 或者 init 3
切换到图形界面:Ctrl + Alt + F1 或者 init 5
5 后台程序指令(&,jobs,fg):
用户可以将一个前台执行的程序调入后台执行,方法为:命令 &
如果程序已经在执行,ctrl+z可以将程序调入后台
jobs查看后台运行程序
fg编号(编号为通过jobs查看的编号),将后台运行程序调出到前台
- 查找与检索指令:
- find指令:按文件属性查找
语法: find 搜索目录位置 参数 条件
1.1 -name : 按文件名
例:find /home/itcast -name "hello.go"
find /home/itcast -name "*.mp3" ----搜索以mp3结尾的文件
1.2 -type: 按文件类型
find /home/itcast -type “p”
“f”:普通文件
“d”:目录
“l”:软连接
“b”:块设备
“c”:字符设备
“p”:管道
“s”:套接字
1.3 -size:按文件大小
find /home/itcast/ -size +5M -size -9M
注意事项:
1. 每个大小前,都要加 -size 描述
2. M:不能小写。 k:不能大写
3. 无单位时,采用 扇区(512B)个数统计
1.4 -maxdepth: 指定搜索层级深度
find ./ -maxdepth 1 -name "*.sh"-----查找 当前一级目录下带有sh后缀的文件
1.5 -exec:对搜索到的结果,执行某一命令
find ./ -maxdepth 1 -name "*.sh" -exec ls -l {} \;
查找当前一级目录下的sh后缀的文件,并显示详细文件信息
1.6 -xargs:
find ./ -maxdepth 2 -type "f" | xargs ls -lh
查找当前一级 及二级目录下普通文件,并显示详细文件信息
备注: 解决带有空格文件名的异常
find ./ -maxdepth 2 -type "f" -print0 | xargs -0 ls -lh
- grep指令 :
语法:grep -r “检索条件” 检索目录位置
例:
grep -r “init”./ -n
-n: 显示检索条件所在行号
结合 find 、xargs、grep:
在指定目录下,搜索包含 “love”的普通文件,并显示它们出现的 行号。
find /home/itcast/sh-go1/ -maxdepth 1 -type "f" -print0 | xargs -0 grep "love" -n
- vi / vim 指令
vim工作模式.png命令模式:输入内容都是命令
编辑模式:编写程序
末行模式:执行末行命令----w:保存、 q: 退出、wq:保存退出、x:保存退出、q!:强制退出
-
编辑模式:
i:向光标前面插入
a:向光标之后插入
o:向光标所在行下一行插入
s:删除光标选中字符,切换工作模式为 编辑模式
I:向光标所在行的行首插入
A:向光标所在行的行尾插入
O:向光标所在行上一行插入
S:删除光标所在行,切换工作模式为 编辑模式 -
命令模式:
2.1 常用光标移动指令
参数 | 含义 |
---|---|
h | 光标左移 |
j | 光标下移 |
k | 光标上移 |
l | 光标右移 |
gg | 跳转到第一行行头 |
G | 跳转到尾行 |
nG | 跳转到第n行==末行模式输入:n |
0 | 跳转到本行行头 |
$ | 跳转到本行行尾 |
u | 撤销 |
Ctrl+r | 反撤销 |
2.2 复制,粘贴:
yy:复制光标所在行。 p粘贴到光标所在行的 下一行。 P(大写)粘贴到光标所在行的前一行
Nyy:复制从光标位置向后N行。p粘贴到光标所在行的 下一行。
yw:复制从光标位置向后一个单词。p向后粘、P向前粘。
区域复制:
1) 将光标挪移至待复制区域起始位置。
2) 按“v”(看到“可视”提示)
3) 使用 hjkl 挪移光标,选择要复制区域。 按 y 复制。
4)p向后粘、P向前粘。
2.3 剪切,删除指令
dd:剪切光标所在行。 p粘贴到光标所在行的 下一行。 P(大写)粘贴到光标所在行的前一行
Ndd:剪切从光标位置向后N行。p粘贴到光标所在行的 下一行。
dw:剪切从光标位置向后一个单词。p向后粘、P向前粘。
d0: 删除、剪切 从光标位置到 行首
d$ : 删除、剪切 从光标位置到 行尾 === 等价于“D”
区域剪切:
1) 将光标挪移至待剪切区域起始位置。
2) 按“v”(看到“可视”提示)
3) 使用 hjkl 挪移光标,选择要剪切区域。 按 d 剪切。
4)p向后粘、P向前粘。
2.4 查找,替换
查找:命令模式下“/” 查找一个臆想的查找对象。 “n”提取下一个。
命令模式下,查找一个光标所在位置的单词,后续出现的位置。“*”向后找。 “#”向前找
替换:
1.单行替换:
末行模式下, 光标置于待替换行。 :s/原字符串/新字符串
如果一行有多个,默认只替换一次。在结尾处,添加“g”, 可以全部替换。
如: :s/Println/Printf/g
2.多行替换:
末行模式下, :起始行,终止行s/原字符串/新字符串/g
如: :30,70s/Println/Printf/g
3.通篇替换:
末行模式下,:%s/原字符串/新字符串/g
- 末行模式:
分屏::sp 将当前窗口 横屏划分。
:vsp 将当前窗口 竖屏划分。
Ctrl+ww 再各个屏幕中 切换。
:wq 退出一个子屏幕。
:wqall 全部退出。
在vim中执行shell命令:
!shell命令。 执行结束。按 Enter 返回。
- 其他常用指令
-
cat 文件名:读取指定文件内容,显示到屏幕
-
tac 文件名: 倒序显示文内容(与cat相反)
-
touch 文件名:创建空文件
-
mkdir 目录名: 创建空目录。
-p:一次性创建多级目录。 mkdir -p a/b/c/d == mkdir -p ./a/b/c/d -
rmdir 文件名: 删除空目录
-
file文件名: 获取文件类型
-
pwd: 显示当前工作目录
-
which:查看命令位置 ---- which ls--- >/bin/ls
-
who am I: 查看当前用户
-
history :列出历史执行过的命令记录。使用“!”过往命令序号 可以快速重新执行该命令
-
">" : 将 输出 重定向 给指定文件,文件不存在创建,存在覆盖原有内容 (如果不想覆盖,使用“>>”追加)
-
“more”: more 文件名: 按百分比显示大文件。“空格”一次翻页一屏幕。 “回车”一次一行。 按“q”退出
-
“less”:类似于more。 可以指定行跳转。可以使用鼠标滚动。按“q”退出
-
“head”:执行参数,查看文档前xxx行
-
“tail”:执行参数,查看文档结尾xxx
-
ifconfig:查看配置网卡信息(显示所有网卡的信息)
-
ping:检查是否与远程主机建立了TCP/IP连接
---ping 远程主机ip地址