上一章我们讲了centos和ubuntu,这一章着重讲解linux的基础命令。
一、Linux的目录结构
之前学数据结构大部分知识点围绕着树结构,而linux的目录结构采用了这一数据结构——树结构。
最开始的目录是根目录即' / ',' / '目录下由许多目录,下面一张表带你了解一些目录主要功能。
/ | Linux文件系统的顶层目录,所有的目录结构都是从“/”开始 |
/bin | 存放用户可执行的程序、一些最基本的Linux命令和二进制文件 |
/home | 一般用户的主目录或者FTP站点管理目录,默认情况下,每创建一个用户,就会在/home下创建对应的目录 |
/root | 管理员的主目录 |
/boot | 操作系统启动时所需要的文件 |
/usr | 存放用户使用的系统命令和应用程序等信息 |
/var | 具有变动性质的相关程序目录,如:log |
/dev | 接口设备文件目录,例如:had表示硬盘 |
/etc | 包含了所有的系统配置文件。通常这些文件可以用来配置硬件,网络等等。例如,/etc/passwd 来存储用户的信息。 |
/proc | 目前系统核心与程序执行的信息。 |
/sbin | 此目录存放系统启动时所需要执行的程序 |
/tmp | 用来存放暂存盘的目录 |
/mnt | 装置的文件系统加载点,例如:光驱、软盘等 |
二、Linux命令
1.三大常用命令
(1) cd : 切换目录 , eg:cd /home/ubuntu(你的用户名) , (注:cd ~ 此命令快速切换到家目录)
(2) ls : 打印当前目录下的文件和文件夹
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-d 只列出目录(不递归列出目录内的文件)。
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 递归显示目录中的所有文件和子目录。
eg:ls -l
(3) pwd : 输出当前目录详情, eg:pwd
2.--help 帮助信息
eg:ls --help 查询ls的用法
3.man 帮助信息
man 是linux提供的一个手册,这个手册有很多个章节,用来查看命令、库函数、系统调用等。
-f
:显示与指定关键字相关的手册页面。
-k
:搜索手册页中与关键字匹配的条目。
-a
:显示所有匹配的手册页面。
-w
:仅显示手册页的位置,而不显示其内容。
eg: man ls ,查看 ls 命令的手册,按q退出
eg:man 3 printf ,查看 C 语言标准库函数 printf 的手册 ,按q退出
4.tab自动补全(严格来说是一个快捷键,输入前面几位字母按下tab会自动补全后面字母)
eg:cd /home/ubu(按下tab自动补全后面ubuntu)
5.history查看历史命令
eg:history
6.tree树状显示目录结构
使用该命令需要提前下载该命令
sudo apt-get install tree
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
eg:tree -a
7.clear清屏
clear可以清空屏幕,使用时直接输入clear即可
8.cat查看文本内容
n 或 --number:由 1 开始对所有输出的行数编号。
b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
E 或 --show-ends : 在每行结束处显示 $。
T 或 --show-tabs: 将 TAB 字符显示为 ^I。
A, --show-all:等价于 -vET。
e:等价于"-vE"选项;
t:等价于"-vT"选项;
eg:cat a.txt
9.touch用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
eg:sudo touch b.txt
10.chmod控制用户对文件的权限的命令
观察上面会发现a.txt和b.txt文件颜色不一样,这是应为两个文件的访问权限不一样。
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
eg:sudo chmod 777 b.txt,然后会发现b.txt颜色跟a.txt一样了
11.rm删除文件或目录
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
eg:sudo rm b.txt,执行完后b.txt会没有
12.cp要用于复制文件或目录
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-r
或 --recursive
:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。
-i
或 --interactive
:在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答 y 时目标文件将被覆盖。。
-u
或 --update
:仅复制源文件中更新时间较新的文件。
-v
或 --verbose
:显示详细的复制过程。
-p
或 --preserve
:保留源文件的权限、所有者和时间戳信息。
-f
或 --force
:强制复制,即使目标文件已存在也会覆盖,而且不给出提示。
-l:不复制文件,只是生成链接文件。
eg:cp a.txt b.txt
13.mv用来为文件或目录改名、或将文件或目录移入其它位置
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
eg:sudo mv b.txt c.txt
14.mkdir 创建文件夹
eg:sudo mkdir add
15.grep用于查找文件里符合条件的字符串或正则表达式
-i
:忽略大小写进行匹配。
-v
:反向查找,只打印不匹配的行。
-n
:显示匹配行的行号。
-r
:递归查找子目录中的文件。
-l
:只打印匹配的文件名。
-c
:只打印匹配的行数。
eg:grep hello a.txt
16.In链接文件
Linux ln(英文全拼:link files)命令是一个非常重要命令,面试时经常会考,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
链接又分为软链接(源文件和链接文件内容实时同步。链接文件等价于源文件的快捷方式 如果删除源文件,链接文件将无效)和硬链接(源文件和链接文件 内容实时同步,链接文件是一个普通的独立文件,如果删除源文件,链接文件不受影响)
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
必要参数:
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理
eg:ln /home /ubuntu/Desktop/vscode/code /home/ubuntu/Desktop/test
17.tar压缩和解压文件
tar命令的参数比较多,我们需要是自行查询手册,我们只需要掌握三种tar的参数操作。
(1)压缩文件,非打包
tar -czvf test.tar.gz text.c 压缩 text.c文件为test.tar.gz
(2)列出压缩文件内容
tar -tzvf test.tar.gz
(3)解压缩文件
tar -xzvf test.tar.gz
18.wc 用于计算字数
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。
eg:wc a.txt
19.时间日期类指令
(1)date 用来显示或设定系统的日期与时间
date (功能描述:显示当前时间)
date +%Y (功能描述:显示当前年份)
date +%m (功能描述:显示当前月份)
date +%d (功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S" ( 功能描述:显示年月日时分秒)
eg:date +%Y
(2)cal查看日历
eg:cal 2023
20.ps 用于显示当前进程的状态,类似于 windows 的任务管理器
ps参数比较多,仅列出几个常用的,若以后需要则自行查询手册
e 显示所有进程
-f 显示所有字段(UID,PPIP,C,STIME字段)
-h 不显示标题
-l 长格式
-w 宽输出
-a 显示一个终端的所有进程
-r 只显示正在运行的进程。
-u 显示当前用户进程和内存使用情况
-x 显示没有控制终端的进程
–sort 按照列名排序
eg:ps -ef
其中:
UID:用户ID,即进程的拥有者
PID:进程ID
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
C:cpu的占用率,形式是百分数(%)
STIME:进程开始启动时间
TTY:终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
TIME:进程的执行时间
CMD:该进程的名称或对应的路径
eg:ps -ef | grep sshd (管道查询指定进程)
到这里就结束了,谢谢大家观看ヾ(≧▽≦*)o