前言:
相较于前面背诵的诸多内容,可能现在的部分就需要多多的练习了,难度也慢慢提升。
那就大家一起慢慢努力吧!!!!!
目录
一、Linux目录结构
(一)Windows的目录结构
(二)Linux的目录结构
(三)查看Linux系统磁盘占用情况
(四)文件名和特殊文件名
(五)Linux系统常用目录
二、绝对路径和相对路径
(一)当前目录(工作目录)
(二)绝对路径与相对路径
三、Linux目录常用操作
四、Linux文件常用操作
五、查看文件的内容
六、通配符
七、创建
八、复制
九、移动和重命名
十、硬链接和软链接
十一、which、whereis、find命令查找文件
(一)which命令
(二)whereis命令
(三)find命令
十二、grep命令在文件中查找字符
十三、wc命令统计
十四、du命令查看目录占用的磁盘空间
一、Linux目录结构
(一)Windows的目录结构
Windows的目录结构是多个并列的树状结构;
最顶部是不同的磁盘(分区),如C,D,E;
文件路径都是从盘符开始;
Windows文件系统里面都是文件或文件夹;
Windows文件路径是大小写不区分的,层级用 \ 表示。
(二)Linux的目录结构
没有C、D、E盘符,一切从/(根目录)开始,单个的树状结构。
(三)查看Linux系统磁盘占用情况
命令:df -Th
(四)文件名和特殊文件名
Linux文件名称:大小写敏感,无专用扩展名
如:
/opt/a2018和/opt/A2018是两个文件
a.txt表示整个文件名称为a.txt,非文本文件
ls命令查看某个目录下有哪些文件和目录(文件夹)
ls
ls -al
Linux特殊文件
- / 表示根目录
- . 表示当前目录
- .. 表示当前目录的父目录
- .字符串 表示隐藏文件,如“.bash_profile”文件
(五)Linux系统常用目录
- / Linux系统的根目录
- /etc 系统管理和配置文件
- /home 用户主目录,比如jack用户的主目录就是/home/jack
- /boot Linux系统的内核文件放在该目录下
- /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
- /root 系统管理员root的家目录
- /bin 常用可执行文件,主要有:cat,chmod,chown, date,mv,mkdir,cp,bash等
- /dev 设备文件,如/dev/cd0
- /usr 用户级应用程序和文件几乎都在这个目录下面
- /proc 一个虚拟文件系统,放置的数据都是在内存当中,例如系统核心、进程信息(process)、设备状态及网络状态等,特点:开机就存在,关机就消失
- /tmp 公共的临时文件存储点,存放一些临时文件
- /lib 一些库文件(库是别人写好的现有的,成熟的,可以复 用的代码)
二、绝对路径和相对路径
(一)当前目录(工作目录)
就是我们(Shell)所工作的目录,当用户刚登陆系统时,当前目录是用户的家目录(home目录)
用户家目录是在创建用户的时候会产生,一般是/home/用户名:比如你是tom,家目录一般是/home/tom
当前目录下的所有文件都可以直接访问,假设当前目录下面有个文件file001,要用vi编辑它,就可以直接执行vi file001
查看当前目录命令:pwd
(二)绝对路径与相对路径
绝对路径:开始于根目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件
相对路径:开始于当前目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件
“.”(点)和“..”(点点)表示当前目录和父目录
改变当前路径命令:cd
三、Linux目录常用操作
- cd /home 进入/home目录
- cd .. 返回上一级目录,如果连续使用该命令,需要使用 cd ../../
- cd 进入个人用户的家目录
- cd - 返回上次所在目录
- pwd 显示当前工作路径
- mkdir dir1 创建一个叫做dir1的目录
- rmdir dir1 删除一个dir1目录,必须是空目录才能用这个命名删除
四、Linux文件常用操作
- ls 查看目录中的文件和文件夹
- ls -l 显示文件和目录的详细资料
- ls -a 显示所有文件,包括隐藏文件
- rm file1 删除一个叫做file1的文件,会给出提示
- rm -f file1 强制删除一个叫做file1的文件,不提示
- rm -f file1 file2 file3 强制删除多个文件,不提示
- rm -rf dir1 强制删除dir1目录并删除其内容
ls的参数
- ls # 仅列出当前目录可见文件
- ls -l # 列出当前目录可见文件详细信息
- ls -hl # 列出详细信息并以可读大小显示文件大小
- ls -al # 列出所有文件(包括隐藏)的详细信息
rm的参数
-f
:强制模式,不提示确认即删除文件或目录。-i
:交互模式,删除文件或目录前询问是否确认。-r
:递归模式,删除目录及其下所有文件和子目录。-v
:详细模式,显示删除的每个文件或目录名。
五、查看文件的内容
cat命令:查看短文件
less命令:查看长文件
- k 向上一行
- j 向下一行
- Page up 向上一页
- Page down 向下一页
- q 退出
tail命令:从文件尾部查看文件,常用参数 -f,打印文件的新增内容;tail -n file查看文件的最后n行,比如tail -5 file01表示查看file01的末尾5行。默认显示最后的10行。
head命令:从文件开头查看文件,head -n file查看文件的前n行,比如head -5 file01表示查看file01的前5行。默认显示前10行。
ls命令
- 不带任何参数:列出当前目录的内容
- 参数为目录:列出指定目录的内容
- 加参数-R:递归列出所有子目录的内容
- 加参数-l:列表形式显示详细信息
ls -l可以用别名ll来表示:
[root@localhost logs]# which ll
alias ll='ls -l --color=auto' /usr/bin/ls
六、通配符
定义:通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。
七、创建
创建文件命令:vi,touch
vi abc01.txt
touch file01 file02 file03
创建文件也可以使用相对路径和绝对路径
八、复制
复制文件命令:cp 源文件 目标文件
源和目的路径都可以是绝对路径和相对路径
- cp file01 file02 当前目录复制,源和目标文件名称必须不同
- cp file01 /home/jim 目标是目录,产生同名文件
- cp file01 /home/jim/file02 目标是文件,可以改名(相当于另存为)
- cp file01 file02 /home/jim 源可以是多个文件
如果file02已存在,会被覆盖,除非-i,要求提示
[root@ecs-9b83 charles]# which cp
alias cp='cp -i’
/bin/cp
复制目录
- cp -r dir01 dir02:当前目录复制,源和目标目录名称必须不同
- cp -r file01 dir01 /home/jim/dir02:源可以是多个文件、或目录
参数-r或-R都有效
九、移动和重命名
重命名文件、目录:源地址和目的地址相同就是重命名
比如:
- mv file01 file02 #重命名文件file01为file02
- mv dir01 dir02 #重命名目录dir01为dir02
- mv dir01/file01 dir01/file02 #重命名文件file01为file02
移动文件、目录:源地址和目的地址不同,比如:
- mv file01 dir01/ 移动file01到dir01目录
- mv file01 dir01/file02 移动file01到dir01目录且重命名为file02
- mv file01 file02 dir01 dir02 移动file01、file02、dir01到dir02
- mv dir01 dir02 如果dir02不存在,则重命名,如果dir02存在,则移动目录dir01到dir02目录下
十、硬链接和软链接(难)
为什么需要链接?
- 实现文件的共享使用(原因:不能移动,那个位置也有用)
- 提供了隐藏文件路径、增加权限安全及节省存储等好处
- 和复制的区别:文件在磁盘中只有一个拷贝,节省磁盘空间
链接的种类:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。
- 创建硬链接:ln dog dog-hard
- 创建软链接:ln -s pig pig-soft
我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。下图展示了程序通过文件名获取文件内容的过程。
查看文件inode命令:stat或ls -i
[root@ecs-9b83 charles]# ls -i file01
1837781 file01
硬链接:若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名
- 文件有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
软链接(符号链接):若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。类似于Windows的快捷方式
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
对源文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件的内容。
十一、which、whereis、find命令查找文件
(一)which命令
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果;
用法:用来查找可执行文件的位置、显示命令所在路径;
语法:which 系统命令
举例:which grep:查找grep命令的二进制文件路径
(二)whereis命令
whereis 命令则是用来快速查找程序的二进制文件、源代码和man手册文件的路径;
语法:whereis 系统命令
举例:whereis grep
查找那么找到的结果就比which grep命令找到的结果多,因为which命令只会列出二进制文件路径,而whereis命令会把grep的二进制文件、源代码、帮助手册都返回。
(三)find命令
find命令会在指定目录及其子目录下查找查找符合条件的特定文件,当我们忘记文档路径时,可以使用该命令
语法:find 目录名 条件
举例:
find /home/tom -name test.sh
find / -name test.sh
常用条件
- -name 名称: 指定要被查找的文件或目录名称,可用通配符
- -type 类型: 以文件类型作为查找条件,文件类型如下:d--目录(directory),f--文件 (file)
- -atime -5: 5天内访问的文件
- -atime +5: 5天前访问的文件
- -amin -5: 5分钟内访问的文件
- -amin +5: 5分钟前访问的文件
例如:
- find /temp -name “abc” #在/temp目录下查找名称为abc的文件和文件夹
- find /temp -name “abc*” #在/temp目录下查找名称以abc开头的文件和文件夹
- find /temp -name “abc*” -type f #在/temp目录下查找名称以abc开头的文件
十二、grep命令在文件中查找字符
grep命令
一种强大的文本搜索工具,并把匹配的行打印出来
啥时候用?
- 查看日志
- 查看命令输出
命令格式:grep 关键字 文件,比如:grep root /var/log/message
默认大小写敏感
支持正则表达式
举例:
- grep “test123” d* :显示以d开头的文件中包含test123的行
- grep “test” file01 file02 file03:显示file01、file02、file03中包含test的行
- grep “root” -r /var/log:在/var/log所有子目录文件中搜索包含字符串root的行
- grep “^test” /var/log/message:在/var/log/message文件中搜索以字符串test开头的行
- grep “test$” /var/log/message:在/var/log/message文件中搜索以字符串test结尾的行
常用参数
- -c:只输出匹配行的行数(有多少行匹配)
- -i: 不区分大小写
- -n:只显示匹配行及行号
- -v:显示不含匹配文本的所有行
- -F:指明pattern非正则表达式
十三、wc命令统计
wc -l /etc/passwd:统计/etc/passwd文件有多少行
wc -c /etc/passwd:统计/etc/passwd文件有多少个字节
带着管道符使用:ps -ef |wc -l
十四、du命令查看目录占用的磁盘空间
du命令是查看文件或目录的磁盘使用空间,即占用磁盘大小;
df命令是查看文件系统的磁盘使用情况,比如总空间多大、使用了多少,可用空间多少、使用率等信息;
语法:du -sh 文件名或者目录名
举例:
[root@ecs-9b83 charles]# du -ah /var/charles/
0 /var/charles/dir03/dir02/file01-softlink
4.0K /var/charles/dir03/dir02/dir01
4.0K /var/charles/dir03/dir02/file02
4.0K /var/charles/dir03/dir02/file01
4.0K /var/charles/dir03/dir02/file04
20K /var/charles/dir03/dir02
24K /var/charles/dir03
4.0K /var/charles/dir04/dir01
4.0K /var/charles/dir04/file02
4.0K /var/charles/dir04/file01
4.0K /var/charles/dir04/file04
20K /var/charles/dir04
48K /var/charles/