Linux学习
Linux学习
文件了解
主文件
Linux下一切皆文件
-
/ Linux根目录 最终的
-
/bin 二进制目录,包含GNU工具和ls自带的命令,存放许多用户级
-
/cdrom
-
/bin 系统配置文件
-
/home 主目录,显示所有用户目录
-
/lib 库目录
-
/lost+found
-
/mnt 挂载目录、U盘
- 挂载——外在的设备和电脑进行连接
-
/proc 伪文件系统
-
/run 运行目录
-
/snap
-
/temp 临时目录
-
/var 可变目录(存储日志等)
-
/boot 启动目录
-
/dev 设备目录
-
/media 媒体目录(存储MP3、MP4等)
-
/opt 可选目录
-
/root root用户主目录(管理员)
-
/sbin 系统二进制目录,GNU高级管理员使用的命令
-
/srv 服务目录,本地服务
-
/usr 用户二进制目录,GNU工具
- 安装的软件在/usr/bin/里面找
-
FHS 文件系统层级标准
文件类型
Linux 中有7种文件类型
| 文件类型 | 类型的字符描述 |
|---|---|
| 普通文件类型 | f |
| 目录类型 | d |
| 软连接类型 | l |
| 字符设备类型 | c |
| 块设备类型 | b |
| 管道类型 | p |
| 本地套接字类型 | s |
命令合集
cd命令
cd命令初学
cd # 进入用户主目录;
cd / # 进入根目录;
cd ~ # 进入用户主目录;
cd .. # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. # 返回上两级目录;
cd !$ # 把上个命令的参数作为cd参数使用。
. # 当前目录
gedit + 文件路径 # 打开文件
cd !$ # 执行上一条命令的最后一个路径
路径问题
前面不加/ 是相对路径,如: Documents/bin
前面加/ 是绝对路径,指向根目录,如: /Documents/bin
/前加. 是相对路径,如: ./Documents/bin
ls命令
ls Documents/ -F -R
ls Documents/ -FR
-F # 每个目录名加 "/" 后缀,每个 FIFO 名加 "|" 后 缀, 每个可运行名加“ * ”后缀。
-R # 递归列出遇到的子目录。
ls -l
ll
# 列出当前目录可见文件详细信息
# 文件扩展匹配符: * ?
ls -l fhs-2.3_*.pdf
ls -l fhs-2.3_copy?.pdf
# 过滤所有带有fhs-2.3_字样的pdf文件
# * 表示多个可变字符,? 表示一个可变字符
# 元字符通配符: []
ls -l f[a-x]ck.txt
# 列出fack.txt到fxck.txt的所有txt文件
操控文件(touch、cp)
touch lianxi.txt
# 在当前目录下创建一个空的lianxi.txt文件
# 存在的文件可以更新更改时间
cp lianxi.txt lianxi2.txt
# 将源文件或目录复制到目标文件或目录中
# 将lianxi.txt复制到lianxi2.txt中
# 若lianxi2.txt存在内容,会强制覆盖,且无提示,不推荐使用
cp -i lianxi.txt lianxi2.txt
-i:覆盖既有文件之前先询问用户,推荐使用
cp -r Documents/doc Downloads/doc
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
快捷方式(ln)
-
Windows中的链接文件
- 快捷方式(.lnk)文件
-
Linux中的链接文件
- 符号链接(软链接)——快捷方式
- 硬链接 —— 副本,原本的文件必须是存在的
ln -s lianxi.java lianxi
# 创建lianxi.java的软链接
# s——symbol 创建软链接
ln lianxi.java lianxi2
# 创建lianxi.java的硬链接
mv重命名
mv ——move
mv lianxi.java lianxi2.java
# 将lianxi.java重命名为lianxi2.java
mv ./test.c ~/Documents/program/
# 将当前目录下的test.c文件移动到~/Documents/program/下
rm删除
rm ——removing
sudo rm -rf /*
# 极度危险!!! 会完全删除Linux下所有文件
rm -rf pdf/
# 完全删除pdf下所有文件
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
# rm 最好搭配 -i 进行删除
操控目录(mkdir)
目录即Windows中的文件夹
mkdir ——make directories
mkdir Java
# 在当前目录下创建Java目录
cp -r *.java ./Java
rm -ir ./*.java
# 将当前目录下的java文件复制到Java文件夹下,再将当前目录下java文件删除
mkdir -p cpp/src/util
# 创建多级文件夹
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。
文件类型(file)
file lianxi
# 查看lianxi的文件格式
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-z:尝试去解读压缩文件的内容。
查看文件(cat)
cat lianxi.txt
# 在终端中展示lianxi.txt
-A, --show-all 等价于"-vET"组合选项。
-b, --number-nonblank 只对非空行编号,从1开始编号,覆盖"-n"选项。
-e 等价于"-vE"组合选项。
-E, --show-ends 在每行的结尾显示'$'字符。
-n, --number 对所有行编号,从1开始编号。
-s, --squeeze-blank 压缩连续的空行到一行。
-t 等价于"-vT"组合选项。
-T, --show-tabs 使用"^I"表示TAB(制表符)。
-u POSIX兼容性选项,无意义。
-v, --show-nonprinting 使用"^"和"M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。
--help 显示帮助信息并退出。
--version 显示版本信息并退出。
more lianxi.txt
# 在终端中以全屏方式展现lianxi.txt的内容
# 只允许向后浏览
按 Space 键:显示文本的下一屏内容。
按 Enter 键:只显示文本的下一行内容。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出more命令。
less lianxi.txt
# 在终端中以全屏方式展现lianxi.txt的内容
# 只允许向后浏览
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:继续向后搜索
N:向前搜索
b: 向后翻一页
d: 向后翻半页
u: 向前滚动半页
y: 向前滚动一行
Q: 退出less 命令
空格键: 滚动一页
回车键: 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
G: 移动到最后一行
g: 移动到第一行
tail -n 2 lianxi.txt
# 只看 lianxi.txt 的最后两行
head -n -2 lianxi.txt
# 只看 lianxi.txt 的前面两行
查看任务管理器(top、ps)
top # 可以实时动态地查看系统的整体运行情况
ps # 报告当前系统的进程状态
ps axo pid,comm,pcpu
# 查看进程的PID、名称以及CPU占用率
pid -- PID
comm -- 名称
pcpu -- cpu占用率
ps -aux | grep named # 查看named进程详细信息
ps -l # 将目前属于您自己这次登入的 PID 与相关信息列示出来
- 什么是PID?
PID 是 Process ID 的缩写,也就是 进程编号。
每一个正在运行的程序(进程)在 Linux 系统中都会被分配一个唯一的 进程号(PID),它是系统用来管理进程的一个核心标识。
kill
kill 2974
# 结束PID号为2974的进程
挂载(mount、umount、df、du)
挂载即为U盘在操作系统中创造虚拟磁盘的过程
mount 、 umount
mount /dev/hda1 /mnt # 将mnt下的文件挂载到dev/hda1下
# mount 用于挂载Linux系统外的文件
umount /mnt # 将mnt下的挂载文件删除
df 、du
df
df命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
# 常用
df -h
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
du命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
du -h
sort
sort
对文本文件中所有行进行排序。
sort -n
sort -M
sort -r
-n, --numeric-sort 根据数字排序。
-M, --month-sort 按照非月份、一月、十二月的顺序排序。
-r, --reverse 将结果倒序排列。
grep
在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:
grep match_pattern file_name
grep "match_pattern" file_name
在多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
find
find 是Linux中的一个搜索工具,可以根据属性查找相应的磁盘文件,包括文件名、文件类型、文件大小等
# 语法
find 搜索的路径 -name 要搜索的文件名
# 例:
find ./ -name main.cpp
# 可以使用 * 和 ? 进行模糊查询,不过要用 "" 或 '' 号包起来
find ./ -name "*.cpp"
# 搜索类型
find ./ -type f
# 搜索文件大小
find 搜索路径 -size [+|-]文件大小
# -size 4k 表示区间(3k,4k]
# -size -4k 表示区间[0k,4k]
# -szie +4k 表示区间(4k,+∞)
压缩与解压缩
gzip
gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
tar # 打包
将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。
tar -zcvf test.tar.gz ./test
将test打包压缩为test.tar.gz压缩文件
-z 通过 gzip 过滤归档
-c, --create 创建一个新归档
-v, --verbose 详细地列出处理的文件
-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
tar -zxvf test.tar.gz ./test # 解压缩
-x, --extract, --get 从归档中解出文件
父子shell
sleep & jobs&coproc
sleep 10& # 挂在进程后台,睡眠10s
jobs # 显示作业的状态
-l 在作业信息中额外的列出PID。
-n 只列出最近一次通知以来状态变更的作业。
-p 只列出PID。
-r 只输出处于运行状态的作业。
-s 只输出处于停止状态的作业。
coproc job1 { sleep 10; } & # 协程,创建一个子shell,并睡眠10s
快捷键
- 强制退出
Ctrl+c
- 复制粘贴
Ctrl+shift+c
- 自动补全
Tab
- 跳跃单词
Ctrl+方向键
- 清空终端
Ctrl+l
- 删除光标的内容
Ctrl+u
- 删除光标后的内容
Ctrl+k
- 重复上次命令
方向键 上
GCC
编译
# gcc 编译
gcc main.c -o main
# g++ 编译
g++ main.cpp -o main