Linux 文件和目录操作
教学基于centos 7, Hi, 我是沙漏,不定期更新python爬虫,其余时间学习java和linux中。关注我哟!
shell命令
- shell命令 – 能够被终端识别并且去做出相对于的操作的命令
常用简单快捷键
-
date 查看时间
-
历史命令切换
- history 查看历史命令记录
- ctrl + p 从当前往历史命令回溯 - 向上遍历
- ctrl + n 从当前往历史命令下掉 - 向下遍历
-
光标移动 以靠近命令开端为后 远离命令开端为前
- ctrl + b 光标向后一格
- ctrl + f 光标向前一格
- ctrl + a 光标跳转开头
- ctrl + e 光标跳转末尾
- ctrl + h 删除光标后面元素
- ctrl + d 删除光标前面元素
- ctrl + u 删除光标后面所有元素
-
自动补齐命令: Tab 可以帮助显示命令 也包括文件路径提示
-
目录的遍历
- ls 遍历目录 后面可接待遍历路径 例如 ls / 表示遍历根节点
- ls 也可以后加参数 比如 ls -a 表示全部文件包括隐藏文件
- ls 也可以加其他的 比如ls - l 查看隐藏文件和时间轴
- ls 也可以加多个参数 比如 ls -al 二个功能都有
-
查看当前工作地点 pwd 或者看前缀提示
-
工作地点的切换 cd /
- cd /home 是直接指明了访问目录的直接路径
-
cd home 是没有指明直接路径,但隐藏的路径是当前目录
- cd\ 表示退出当前地点
-
切换到家目录三种方式:
- 使用绝对路径 cd root/
- 使用符号 cd ~
- 直接点 cd
-
清屏 clear
root下目录结构
目录名称 | 描述 |
---|---|
/bin | bin是binary缩写,这个目录存放经常使用的命令 |
/boot | 存放启动linux使用的核心文件 包括一些连接文件和镜像文件 |
/dev | dev是devicel(设备)的缩写, 存放linux的外部设备 在linux中访问设备的方式和访问文件方式相同 |
/ect | 存放所有的系统管理所需要的配置文件和子目录 |
/home | 用户的主目录,在linux中,每个用户都有自己的目录 一般该目录名以该用户名作为文件夹名称 |
/lib | 存放系统最基本的动态连接共享库 起作用类似windows里面的DLL文件 几乎所有应用程序都需要用到这些共享库 |
/media /mnt | linux系统自动识别一些外界设备,U盘或者其他光驱 linux将这些设备挂载在这个文件夹中 可以在该文件夹中查看外部设备的信息 |
/opt | 存放主机额外安装软件的目录,比如安装一个oracle数据库 |
/root | /目录为系统管理员,也成为超级权限的用户主目录 |
/usr | 主要目录,存放用户应用程序和文件,类似windows的progame files目录 |
用户目录
-
绝对路径: 从根目录开始写 /home/a
-
相对路径: 相对于当前的工作目录而言 比如直接 test.txt
-
其他表示符号
- . 表示当前目录
- … 当前的上一级目录
- — 用于临近二个目录的切换 比如 cd -
- ~ 用户的家目录 (宿主目录)
- #: 超级用户 --root
- $: 普通用户
-
可以使用tree命令行
as: tree -FC 来展示当前树节点 -
文件目录颜色区分
:- 白色 一般为普通文件
- 蓝色 一般表示为目录
- 绿色 一般表示为可执行文件
- 红色 一般表示为压缩文件
- 青色 一般表示为链接文件
- 黄色 一般表示设备文件
- block 块
- char 字符
- fifo 管道
- 灰色 一般表示为其他文件
这些描述都是在一般情况下, 可能存在特殊性,注意区分
目录操作
-
创建目录
- 直接创建 mkdir <目录名> as: mkdir app
- 复合创建 mkdir <外目录>/<子目录> -p as: mkdir app/game -p
-
删除目录
-
删除空目录 rmdir <空目录名> as mkdir app
-
删除非空目录 rm <非空目录> -ri as: rm app -ri
- rm 删除了就很难找到
- -r 表示递归删除方式
- -i 表示带提示删除
- -ri 表示删除带递归提示
-
-
拷贝目录
-
cp 命令 as: cp <源目录> <目标目录> -r (要加参数, 表示递归的复制)
-
eg: cp /root/app /root/newapp -r
-
如果目录不存在, 则直接拷贝目录 粘贴过去
-
如果目录存在 ,则会将源目录粘贴放在目标目录的根目录下面,类似如下
-
app 表示 源目录
newapp 表示目标目录
[root@localhost newapp]# tree -FC
.
├── app/
│ ├── hello
│ └── temp
├── hello
└── temp1 directory, 4 files
-
-
重命名目录
- mv 命令 mv <源目录> <目标目录> eg: mv hello aaa
-
移动目录
-
还是mv命令 mv <源目录> <目标路径目录> eg: mv aaa app
将aaa目录 移动到 app目录下
-
文件操作
-
创建文件 touch 命令 touch <文件名> as : touch helloword
- 如果文件不存在 则表示创建这个文件
- 如果文件存在 则修改文件最后登入时间
-
查看文件 cat 命令 cat <文件名> as : cat helloword
-
删除文件 rm <文件名> -i as: rm help -i
-
文件拷贝 cp 命令 cp <源文件> <目标文件>
- as: cp hello temp 将hello文件 拷贝到 temp文件中
- 如果 temp 文件不存在, 则cp会自动创建这个文件,然后执行拷贝操作
- 如果temp文件存在 , 则 cp 会直接覆盖这个文件, 实现覆盖写操作
-
查看文件 【存在 五种命令 方式】
-
cat 命令 用于文件短小 直接查看 用法: cat <文件名> eg: cat hello
-
more 命令 用于文件较长 一次性打开大约百分之八十文件大小
- eg: more hello
- 此时敲击回车 表示 显示下一行的文本
- 此时敲击空格 表示 显示下一页的文本
- 缺陷: 只能往下看 不能翻回去
- 使用 按键 q 和 ctrl + c 可以退出more命令
- 或者直接 ctrl + z 关闭命令
-
less 命令 用于文件一般 更加智能
- eg: less hello
- 使用 ctrl + p 翻回去一页
- 使用ctrl + n 翻下去一页
- 关闭方式 和 more 是一样的
-
head 命令 用于从头部查看文本
- eg: head hello
- 默认查看十行 , 可以加参数
- eg: head - 20 hello
- 表示从头部查看前20行文本
-
tail 命令 用于从尾部查看文本
- 用法与head一个样, 不多做解释!
-
-
重命名文件
-
mv 命令 mv <源文件> <目标文件> eg: mv hello aaa
newapp: –> app hello temp
[root@localhost newapp]# mv temp aaa
[root@localhost newapp]# ls
aaa app hello
-
-
移动文件
-
还是mv命令 mv <源文件> <目标路径文件> eg: mv aaa app
将aaa文件 移动到 app目录下
-
关于linux中软链接和硬链接
在linux中, 存在硬链接 和 软链接 二种方式, 作用都是创建一个新的打开方式, 类似windows中的外部链接, 或者 超链接之类的东西,简单了解一下就行!
-
软链接: ln -s <目标文件> <链接文件>
- eg: ln -s hello hello1 (hello1为软链接文件)
-
硬链接: ln <目标文件> <链接文件>
- eg: ln hello hello1 (hello1为硬链接文件)
原理上,硬链接和源文件的inode节点号相同,两者互为硬链接。软链接和源文件的inode节点号不同,进而指向的block也不同,软链接block中存放了源文件的路径名。
实际上,硬链接和源文件是同一份文件,而软链接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;但是可以对目录创建软链接,可以跨文件系统创建软链接,可以对不存在的文件创建软链接。
二种链接方式各有各的特点:
-
硬链接的特点:
- 具有相同inode节点号的多个文件互为硬链接文件;
- 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;
- 只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除;
- 硬链接文件是文件的另一个入口;
- 可以通过给文件设置硬链接文件来防止重要文件被误删;
- 可以通过ls -i看到Index;
- 硬链接文件是普通文件,可以用rm删除;
- 对于静态文件(没有进程正在调用),当硬链接数为0时文件就被删除。注意:如果有进程正在调用,则无法删除或者即使文件名被删除但空间不会释放。
-
软链接的特点:
- 软链接类似windows系统的快捷方式;
- 软链接里面存放的是源文件的路径,指向源文件;
- 删除源文件,软链接依然存在,但无法访问源文件内容;
- 软链接失效时一般是白字红底闪烁;
- 创建软链接命令 ln -s 源文件 软链接文件;
- 软链接和源文件是不同的文件,文件类型也不同,inode号也不同;
- 软链接的文件类型是“l”,可以用rm删除。
文件或目录属性
这个作为理解内容, 稍微了解一下就行了。
-
wc 命令: 简单查看文本文件的基础信息
-
用法: wc <文本文件名>
-
[root@localhost newapp]# wc hello
1 2 12 hello[root@localhost newapp]# cat hello
hello world -
wc 会显示如下:
-
【文件行数】 【文件字符个数】 【字节个数】 【文件名】
-
-
od命令: 简单查看二进制文件的基础信息
- 用法: od <二进制文件名> - <参数>
- eg: od hello -c 表示显示ascii字符
- 参数:
- c –> ascii字符
- d –> 有符号十进制数
- f –> 浮点数
- o -> 八进制数
- u -> 无符号十进制数
- x -> 十六进制数
-
du 命令: 查看某个目录的大小
- 用法: du -h (加入参数h 提示更多)
- eg: du app -h
-
df命令: 查看磁盘的使用情况
- 用法: df -h (加入参数 h 提示更多)
- eg: df -h
-
which 命令: 用于查看 查看shell命令的位置 (外部命令)
- eg: which cp
文件权限, 用户, 用户组
-
查看当前用户:
- 直接从终端阅读
- whoami 命令
-
修改用户权限:
- 文字设定法: chmod [who] [+ - =] 【mode】 [文件名]
- eg: chomd o+w hello.c
- [who]
- 文件所有者 u
- 文件所属组 g
- 其他人 o
- 所有的人 a
- [权限添加]
- 添加权限 +
- 减少权限 -
- 覆盖权限 =
- [mode]
- 读 r
- 写 w
- 执行 x
- 数字设定法: chmod [数字串] [mode]
- eg: chomd 765 hello.c
- 【权限表示】
- 没有权限 -
- 读 r 4
- 写 w 2
- 执行 x 1
- 解释 765
- 7 — 文件所有者 —rwx—
- 6 –-文件所属组 —rw—-
- 5 —其他人 — —rx—
- 减少权限 可以使用 - [数字串] 实现对应的权限降低
- eg: chmod -001 hello.c
- 然后其他人的权限就编程了 —r—
- 文字设定法: chmod [who] [+ - =] 【mode】 [文件名]
-
修改文件所有者/所有组
-
所有者: chown
- 示例:
chown root /u 将 /u 的所有者更改为"root"。
chown root:staff /u 和上面类似,但同时也将其属组更改为"staff"。
chown -hR root /u 将 /u 及其子目录下所有文件的所有者更改为"root"。
- 示例:
-
所有组: chgrp
- 示例:
chgrp staff /u 将 /u 的属组更改为"staff"。
chgrp -hR staff /u 将 /u 及其子目录下所有文件的属组更改为"staff"。
- 示例:
-
文件的查找
文件的查找有很多种, 我们逐个讲解。
-
按文件名查找:
- 命令: find 路径【可选,默认为当前路径】 -name “文件名”
- 文件名中可以使用通配符
- 其中 * 表示前面一个或多个
- 其中 ? 表示非贪婪模式
- eg:
find - name “he*?” return /root/app/hello.c
- 命令: find 路径【可选,默认为当前路径】 -name “文件名”
-
按文件大小查找:
- 命令: find 路径[可选,默认为当前路径] -size +10k
- 其中 + 表示 大于 或者 - 表示小于
- 其中 10 表示 文件大小
- 其中 k 表示 kb 或者 M 兆
- 范围查找 `` find -size +10k -size -100k`
- 表示 查找 大于 10k 小于 100k 的全部文件
- 命令: find 路径[可选,默认为当前路径] -size +10k
-
按文件类型查找:
- 命令: find 路径[可选, 默认为当前路径] =type f
- 其中 f 表示文件类型
- f 表示普通文件
- d表示目录
- l 表示链接符号
- b 表示块设备
- c 表示字符设备
- s表示socket文件
- p表示管道
- eg:
find newapp/ -type f
查找newapp目录下的 普通文件
- 命令: find 路径[可选, 默认为当前路径] =type f
-
按文件内容查找:
-
命令: grep -r “查找的内容” 【查找的路径】
- 其中 查找内容 可以使用通配符 与文件名查找类似
-