Linux基础命令、目录和文件管理

一、Linux基础命令

1.1什么是shell

shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。

命令执行过程:
判断是内部还是外部

如果是内部 直接执行

如果是外部

先去hash 缓存中找,找到运行,找不到报错

再去 规定好的路径中找文件 找到文件 直接运行,找不到报错

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin(5个中,只要找到一个就不会接着找了)

内部命令 外部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 Linux系统中能够完成特定功能的脚本文件或二进制程序
属于Shell的一部分 属于Shell解释器程序之外的命令
没有单独对应的系统文件 每个外部命令对应了系统中的一个文件
自动载入内存,可以直接使用 必须知道其对应的文件位置,由Shell加载后才能执行

1.2命令行格式

命令字  [选项]  [参数]
快捷键 功能
Tab 键 自动补齐(两次可以显示所有选项)
反斜杠“\” 强制换行或转义
Ctrl+e 或 end 键 光标移到最后
Ctrl+U 清空至行首不包括当前光标处的 字符
Ctrl+K 清空至行尾包括当前光标处的字符
Ctrl+a 光标移到最前
Ctrl+w 从当前光标删除到开头
ALT+d 从当前光标删除末尾
Ctrl+l 清屏
Ctrl+c 取消本次命令编辑
Ctrl+s/Ctrl+q 锁屏/解锁
向上下箭头 回看执行过的命令

1.3命令帮助

  • help
help 内部命令

命令 --help
  • man
    man分九个章节默认打开第一章节
man 5 passwd
#查看passwd的配置文件

man man
区段1:用户指令
区段5:文件格式

1.4基础命令

1.4.1pwd

pwd 
#显示当前路径

pwd -P
#显示文件的真实路径

1.4.2cd

cd 目标位置

相对路径,相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。
绝对路径,绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
命令 效果
cd cd ~ 若不指定目标位置,切换到当前用户的宿主目录(家目录)
cd - 到前一次目录
一个点号“.”开头(自己) 表示以当前的工作目录作为起点(已点开头的是)
两个点号“..”开头(上一级) 表示以当前目录的上一级目录(父目录)作为起点
“~用户名”形式开头 表示以指定用户的宿主目录(家目录)作为起点
"."开头文件 表示隐藏文件
~ky18 (有个用户叫ky18 家目录为起点) 表示以指定用户的宿主目录作为起点

1.4.3ls

显示内容

ls  [选项]  [文件或目录] 
-l  以长格式显示文件和目录列表 ll=ls -l
-a  显示全部包括隐藏文件
-A  显示全部文件或隐藏文件,但不包括 . 和..
-d  仅列出目录本身,而不是列出目录内的文件数据
-h  友好显示文件大小(human,人性化)
-R  递归显示该目录及该目录的子目录下的所有内容
-t  以时间顺序显示
-r  倒序显示
--color  显示颜色
-S  以文件容量大小排序


ls -a 
#显示所有 包括隐藏文件

ls -A 
#显示所有 不包括. ..的隐藏文件

ls -d  
#只显示本目录

颜色表示的文件类型:

- 黑色数据文件 普通文件
- 绿色   可执行文件
- 黄色   块设备文件硬件设备(硬盘)
- 红色   压缩包
- 蓝色   文件夹
- 天蓝色  连接文件(快捷方式)

1.4.4alias

alias 命令别名=‘命令’

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

unalias  命令别名  
#删除别名

绝对路径>别名>内部>hash>外部命令

1.4.5du

查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。

du  [选项]  [文件或目录]
选项 说明
-a 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s(--summarize) 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小
--max-depth=n (-d 1) 最大显示到第n层
--exclude 不计入统计

1.4.6mkdir

创建文件夹

mkdir [选项] 文件夹

-p  #递归创建

mkdir -p aaa/bbb/ccc

├── aaa
│   └── bbb
│       └── ccc

1.4.7touch

创建文件

touch 文件

touch   新文件(可为空)  文件名   
#不存在就是新建空文件  
                            
touch   不会破坏已有文件  
#刷新时间

1.4.8cp

cp [选项]  源文件     目标  
#相当改名复制  文件夹 文件相当于改名字另存为

cp [选项]  源文件   文件夹    
#多个源文件只能复制到文件夹
选项 说明
-f 覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i 覆盖目标同名文件或目录时提醒用户确认
-p 复制时保持源文件的权限、属主及时间标记等属性不变
-r 复制目录时必须使用此选项,表示递归复制所有文件及子目录
-a 完整保留所有的信息
-v 可视化
-u 相当于增备,差异备份(只对文件夹起作用)

1.4.9mv

mv  [选项]  源文件或目录  目标文件或目录 单个文件

#移动,源文件或目录路径改变
#改名,源文件或目录路径不变

1.4.10rm

rm  [选项]  要删除的文件或目录
-f、强制
-i、交互
-r 递归(删除目录需要)

1.4.11find

find [查找路径] [选项] [查找条件] [处理动作]
#查找路径:指定具体目标路径;不指定为默认为当前目录
#查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
#处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
查找类型 关键字 说明
按名称查找 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写
按文件大小查找 -size 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB
按文件属主查找 -user 根据文件是否属于目标用户进行查找
按文件类型查找 -type 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等
按inode号 -inum 根据文件inode号查找
按权限查找 -perm 按文件权限查找
最大搜索目录深度 -maxdepth level 将你的文件已分级的形式查找
最小搜索目录深度 -mindepth level 同上 find /etc -maxdepth 2 -mindepth 2

处理动作

-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
例子
找到/var/log 文件夹下30天以前大于1G的以log结尾的普通文件移动到/opt下。
find /var/log -mtime +30 -size 1G  -name '*.log'  -type f  -exec mv {} /opt \; 

1.4.12which

which 命令

which ls

1.4.13通配符

符号 效果
匹配一个字符 f?.txt
* 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件
1到10
a b c ...z
A B C .....Z
[123]([此处括号里值代表一个字符]) 取其中之一有就显示没有也无所谓
[a-z]单个小写字母 范围需要注意
[0-9]单个数字 匹配数字范围(0123456789)
\ 转义符,表示原来的意思
[[:lower:]] 小写字母表示 a-z
[[:upper:]] 大写字母表示 A-Z
[^zhou] 匹配列表中的所有字符以外的字符
[[:digit:]] 任意数字,相当于0-9
[[:alpha:]] 任意字母

1.4.14软连接硬链接

硬连接:同一个文件取不同的名或者叫多个名字不支持文件夹,创建一个连接数加一,多路径访问。
软连接:类似于windows里快捷方式,软连接,符号连接,会指向原来的文件。

#软连接
ln  [-s] 源文件或目录  链接文件或目标位置
#硬连接
ln   源文件或目录  链接文件或目标位置

对比项 硬链接 软链接
本质 本质是同一个文件 本质不是同一个文件
inode(身份证号) 相同 不同
连接数 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 删除,新建都不会改变
文件夹 不支持 支持
删除源文件 只是链接数减一,但链接文件的访问不受影响 无法访问连接文件
文件类型 和源文件相同 链接文件,和源文件无关
文件大小 和源文件相同(指向硬盘上的同一个文件) 源文件的路径的长度

二、Linux目录和文件管理

2.1目录

  • 以 . 开头的文件均为隐藏文件
  • 路径用/分开 / 不在第一位就是分隔符
  • 文件名最长 255个字符
  • 区分大小写 linux 注意事项
一级目录 功能(作用)
/bin/ 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/ 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/ 设备文件保存位置
/etc/ 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/ 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/ 系统调用的函数库保存位置(c语言 写的一些固定格式的代码,方便调用)
/media/ 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/ 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/ 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/ 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/ root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/ 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/ 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空

2.2查看文件

2.2.1七类常见文件

第一个字符 文件类型
- 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。
d 目录,类似 Windows 系统中的文件夹。
b 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
c 字符设备文件,例如键盘、鼠标等。
s 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。
p 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。
l 链接文件,类似 Windows 系统中的快捷方式。

2.2.2显示命令

2.2.2.1cat
cat  [选项]  文件
-n  显示行号包括空行
-b  跳过空白行编号
-s  将所有的连续的多个空行替换为一个空行(压缩成一个空行)
-A  显示隐藏字符

cat a.txt > b.txt 
#a的内容覆盖b的内容

cat a.txt >> b.txt
#a的内容放在b的末尾

#cat
cat a.txt
1 2 3 4 5
a b c d e

#tar
逆向显示文本内容
tar a.txt
a b c d e
1 2 3 4 5

#rev
将同一行的内容逆向显示  
rev a.txt
5 4 3 2 1
e d c b a

2.2.3分页显示

2.2.3.1more

一页一页的显示

more  [选项]  文件名
#空格下一页
#b上一页
#enter一行一行滚动
2.2.3.2less

和more类似,向上向下翻页

less  [选项]  文件名
#Page Up 向上翻页,Page Down 向下翻页

2.2.4显示文件前后内容

2.2.4.1head

显示文件或标准输入的前面行

head  [选项]  [文件]
-c 数字 #指定获取前数字字节
-n 数字 #指定获取前#行,#如果为负数,表示从文件头取到倒数第#前
-数字   #同上

head -n 10 文件
#显示文件前十行

head -n -10 文件
#显示除倒数十行的其他行

2.2.4.2tail

tail 和head 相反,查看文件或标准输入的倒数行

tail  [选项]  [文件]
-n  数字  #查看倒数行
-f  数字  #实时追踪最后十行

tail -n +k 文件
#从k行开始显示
2.2.4.3tr

基本功能转换

tr  [选项]  被替换字符  [替换字符]
-d  #删除
-s  #压缩
2.2.4.4wc

统计列数

wc  [选项]  目标文件
-I  #统计行数
-w  #统计单词个数
-c  #统计字节数

#tab  空格  算单词的分隔符
2.2.4.5grep

过滤

grep [选项] 查找条件 目标文件
-i:查找时忽略大小写
-v:反向查找,输出与查找条件不相符的行
-o:只显示匹配项
-f:对比两个文件的相同行
-c:匹配的行数
-   要查找的字符串以双引号括起来单引号也可以
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行

grep "^b" 文件名    
#过滤以b开头

grep '/$' 文件名
#过滤以/结尾

grep -v "^$" 文件名
#过滤非空行
2.2.4.6paste

合并文件

cat user.txt pass.txt 
lisi
liwu
liliu
123
345
444

paste user.txt pass.txt 
lisi	123
liwu	345
liliu	444

paste -d: user.txt pass.txt
lisi:123
liwu:345
liliu:444
2.2.4.7split

分割文件

2.3压缩、解压缩

2.3.1压缩

gzip和bzip都是压缩软件

#压缩
gzip   [-9]  文件名
bzip2  [-9]  文件名 
9代表压缩比例,9最大1最小

#解压
gzip   -d  .gz格式的压缩文件
bzip2  -d  .bz2格式的压缩文件

2.3.2归档

tar (tape archive)归档

tar  [选项]  归档文件名  源文件或目录
tar  [选项]  归档文件名  [-C目标文件]
#选项
-c:创建(Create).tar 格式的包文件
-x:解开.tar 格式的包文件
-C:解压时指定释放的目标文件夹
-f:表示使用归档文件(一般都要带上表示使用tar)
-p:打包时保留文件及目录的权限
-P:打包时保留文件及目录的绝对径
-t:列表查看包内的文件(要和f一起使用)
-v:输出详细信息(Verbose)
-j:调用 bzip2 程序进行压缩或解压
-z:调用 gzip 程序进行压缩或解压
#例子
tar -zcvf all.tar.gz -C /opt
#把all.tar.gz 文件解压到opt文件夹
tar -tf all.tar.gz
#在不解压的情况下,查看all.tar.gz文件里面的内容

2.4vi编辑器

2.4.1命令模式

此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

#退出
ZZ 保存退出
ZQ 不保存退出

#光标跳转
h: 左 
L: 右 
j: 下 
k: 上

#G 或者扩展命令模式下 
:#   跳转至由第#行
G 最后一行
1G, gg 第一行

#删除
dd  剪切光标所在的行
#dd  多行删除
D  从当前光标位置一直删除到行尾,等同于d$

#复制
yy  复制行
#yy  复制多行
Y  复制行

#粘贴
p  向下粘贴
P  向上粘贴


#撤销更改
u 撤销最近的更改
U 撤消光标落在这行后所有此行的更改
操作键 功能
ctrl+f或者Pagedown 向下翻页
ctrl+b或者Pageup 向上翻页
Home;^;0 跳到本行的行首
按 End 键或$ 跳转到本行的行尾
1G 或 gg 跳转到文件的第一行包括空行
G 跳转文件的末尾
#G #代表行号数字,直接跳转到#行
M 跳转到当前显示页面的中间行
x或delete 删除当前光标的字符
dd 删除一整行
#dd 删除当前光标开始到第#行(包括当前行)
d^ 删除当前光标之前到行首 往前不包括当前光标处的字符
86 往后删除包括当前光标处的字符
d$ 删除当前光标到行尾
dw 删除当前光标处的单词
R 或shift+r 替换当前光标处文字,会进入替换模式
yy 复制当前光标处整行
#yy 复制当前光标处向下的#行
p 粘贴到光标处下一行
P 粘贴到光标处上一行
u 只消除上一次可多次使用
U U 取消所有操作
/字符 向下查找
?字符 向上查找
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指定末行模式

2.4.2输入模式

使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令,当编辑文件完成后按 Esc键即可返回命令模式。

-i  在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
-I  行首插入命令
-o  在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
-O  在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
-a  在当前光标所在位置之后插入随后输入的文本
-A  行尾插入命令

2.4.3末行模式

文件中的指定内容执行保存、查找或替换等操作。使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”(英文冒号)键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

#基础命令
# 	         #具体第#行,例如2表示第2行
#,# 		 #从左侧#表示起始行,到右侧#表示结尾行 
#,+# 		 #从左侧#表示的起始行,加上右侧#表示的行数,范例:2,+3 表示2到5行
.   		 #当前行
$ 	         #最后一行
.,$-1 		 #当前行到倒数第二行
%                #全文, 相当于1,$

d                #删除
y                #复制

#另存为
w file           #将范围内的行另存至指定文件中
r file 	         #在指定位置插入指定文件中的所有内容
.!               #将命令执行结果贴到当前光标处

#查找并替换
范围  s/要查找的内容/替换的内容/g

修饰符:
i #忽略大小写
g #全局替换,默认情况下,每一行只替换第一次出现
c #全局替换,每次替换前询问

查找替换中的分隔符/可替换为其它字符,如:#,@

#行号
显示:set number,简写 set nu
取消显示:set nonumber, 简写 set nonu

#忽略字符大小写
启用:set ignorecase,简写 set ic
不忽略:set noic

#显示隐藏字符
显示Tab ^I和换行符 和$显示
启用:set list
禁用:set nolist

快捷键 功能效果
:q 退出不保存
:q! 强制退出不保存
:w 保存
:w 新文件名 另存为新文件:
:wq :zz :x 保存并退出
:e 其他文件名(如果已修改需要加e!) 打开新文件进行编辑
:r 其他文件名 在当前文件中读入其他文件内容
!命令 执行命令
:r!命令 读入命令
: [替换范围] s /旧的内容/新的内容[/g]
😒 /old/new 替换当前行中的第一个old改为new
😒 /old/new/g 替换当前行中的所有old改为new
:#,# s /old/new/g #到#行所有old改为new
:%s /old/new/g %代表全文 全文替换所有old改为new
# d 删除 第#行
#,# d 删除#到#行
#,# y 复制三到6 行
:set nu 或:set nonu 加行号 不显示行号
:set cul (:set nocul ) 光标所在行有下划线(取消)
no hl 取消高亮
:set ai 对齐 回车后和上一行对齐
:set all 可以看所有的一些帮助 可以看所有的一些帮助
set key=password (大X) 加密码
set key=空白 取消密码
set tabstop=4 (set ts=4) tab 一次为四个空格
.!命令 (who,date ) 将date命令插入当前行注意会覆盖当前行

2.4.4可视化模式

在末行有”-- VISUAL -- “指示,表示在可视化模式

- v 面向字符,-- VISUAL --
- V 面向整行,-- VISUAL LINE -- 
- ctrl-v 面向块,-- VISUAL BLOCK -- 

2.4.5vim配置文件定制化

Vim 启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim。

/etc/.vimrc #全局
~/.vimrc #个人
posted @ 2023-07-23 22:39  德国南部之星  阅读(55)  评论(0)    收藏  举报