Linux 文件系统简单介绍
@[toc] Linux文件系统 和 Windows文件系统有一些区别,Windows是分C盘、D盘、E盘...的,但是在Linux中是有一个最大的目录,称之为根目录,用 / 表示,根目录下面会有很多子目录,这些子目录其实可以理解为windows中C盘、D盘、E盘。
不同的子目录具有不同的含义,存放不同类型的文件信息。
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
proc 虚拟文件系统,存放当前内存的映射
usr 存放系统应用程序,比较重要的目录/usr/local 管理员软件安装目录
var 存放运行时需要改变数据的文件
mnt 挂载目录
sbin 存储管理级别的二进制执行文件
root 超级用户主目录
opt 额外安装的可选应用程序包安装位置
下面开始正式分析Linux中的基本命令。
1. 文件查看
pwd 列出当前目录的路径
ls 列出当前目录下的所有文件
ll(ls -l缩写) 列出当前目录下的文件(带文件信息)
ll -a 列出当前目录下的所有文件(包括隐藏文件)
ll --help 查看ls用法,--help是一个帮助命令
2.创建、重命名文件\文件夹
touch filename 创建空文件
mkdir 创建目录
mkdir -p 目标目录存在也不报错
mv 重命名文件\文件夹
3. 链接文件
linux有两种链接:硬链接、符号(软)链接
软链接功能类似类似于windows的快捷方式,主要用于节省磁盘空间
首先看硬链接:硬链接相当于对原始文件的一个复制,不能对目录使用硬链接。
命令如下:
ln hello.txt hlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# ln hello.txt hlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
再看符号(软)链接:
如果想使用软连接,需要添加-s,相当于快捷方式,不能删除原文件
命令如下:
ln -s hello.txt vlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
[root@localhost ~]# ln -s hello.txt vlink
[root@localhost ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 28 22:22 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 Mar 28 22:21 hello.txt
-rw-r--r--. 2 root root 0 Mar 28 22:21 hlink
lrwxrwxrwx. 1 root root 9 Mar 28 22:33 vlink -> hello.txt
4. 切换目录
cd . 当前目录
cd .. 去上一级目录
cd / 去根目录
cd ~ 去当前用户主(家)目录
cd xxx/xxx 直接跳转到某个目录
5. 删除文件\文件夹(目录)
rm命令可以删除文件或者目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉
对于链接文件,只是删除整个链接文件,而原有文件保持不变。
常见用法:
rm 删除文件
删除文件,但是会有提示确认对话,输入y确认删除!
[root@localhost test]# touch abc.txt
[root@localhost test]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 29 13:53 abc.txt
[root@localhost test]# rm abc.txt
rm: remove regular empty file ‘abc.txt’? y
[root@localhost test]# ll
total 0
rm -r 删除目录,需要确认
删除目录需要指定r参数,否则会提示不能删除
r是给rm加入递归(recursion)特性,也就是目标为文件夹时删除文件夹下所有数据
使用rm -r 在删除目录的时候也会有提示确认对话,输入y确认删除
[root@localhost abx]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 29 14:01 test
[root@localhost abx]# rm test
rm: cannot remove ‘test’: Is a directory
[root@localhost abx]# rm -r test
rm: remove directory ‘test’? y
[root@localhost abx]# ll
total 0
rm -f 强制删除
f给rm加入强制(force)特性,也就是遇到删除时不需要询问即可直接删除
注意:这个操作还是比较危险的,建议慎用,因为删除之后就找不到了
Linux系统中没有回收站
[root@localhost abx]# touch a.txt
[root@localhost abx]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 29 14:03 a.txt
[root@localhost abx]# rm -f a.txt
[root@localhost abx]# ll
total 0
rm -rf 递归删除目录及其文件
Linux中最危险的操作,最具破坏性
rf参数可以强制递归删除任何数据,并且没有任何提示,慎用!慎用!慎用!
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:03 abx
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
[root@localhost ~]# mkdir -p abx/test/aaa
[root@localhost ~]# cd abx/test/aaa/
[root@localhost aaa]# touch a.txt
[root@localhost aaa]# cd ~
[root@localhost ~]# rm -rf abx
[root@localhost ~]# ll
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
6. 复制、粘贴、剪切
常见用法:
cp 复制&粘贴文件
复制hello.txt文件,复制后的文件名为hello-bak.txt
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# cp hello.txt hello-bak.txt
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 29 14:20 hello-bak.txt
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
cp -r 复制&粘贴文件或目录
复制目录,需要指定r参数
[root@localhost ~]# mkdir abc
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
[root@localhost ~]# cp abc xyz 【错误用法,复制目录必须指定-r参数】
cp: omitting directory ‘abc’
[root@localhost ~]# cp -r abc xyz
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
mv 移动(剪切)文件或目录
将目录xyz移动到目录abc下面
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 6 Mar 29 14:21 abc
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
[root@localhost ~]# ll abc/
total 0
[root@localhost ~]# mv xyz abc
[root@localhost ~]# ll abc/
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
7. 远程复制
scp命令用于在网络中不同主机之间复制文件或目录。scp是有Security的文件copy,基于ssh登录,如果没有配置免密码登陆,需要输入主机密码。
常见用法:
从本地复制(192.168.182.131)到远程主机 (192.168.182.130)
scp /root/hello.txt 192.168.182.130:/root
[root@localhost ~]# scp /root/hello.txt 192.168.182.130:/root/
The authenticity of host '192.168.182.130 (192.168.182.130)' can't be established.
ECDSA key fingerprint is SHA256:uUG2QrWRlzXcwfv6GUot9DVs9c+iFugZ7FhR89m2S00.
ECDSA key fingerprint is MD5:82:9d:01:51:06:a7:14:24:a9:16:3d:a1:5e:6d:0d:16.
Are you sure you want to continue connecting (yes/no)? yes 【第一次会提示此信息,输入yes即可,以后就不提示了】
Warning: Permanently added '192.168.182.130' (ECDSA) to the list of known hosts.
root@192.168.182.130's password: 【在这里输入192.168.182.130机器的密码即可】
hello.txt 100% 0 0.0KB/s 00:00
登录到192.168.182.130机器,确认文件是否成功复制过去
[root@localhost ~]# cd /root/
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 29 14:30 hello.txt
[root@localhost ~]#
提示:
显示进度在scp后添加-v
复制目录在scp后添加-r
静默复制模式在scp后添加-q
scp -rq /root/abc 192.168.182.130:/root
[root@localhost ~]# scp -rq /root/abc/ 192.168.182.130:/root/
root@192.168.182.130's password:【在这里输入192.168.182.130机器的密码即可】
登录到192.168.182.130机器,确认目录是否成功复制过去
[root@localhost ~]# ll
total 4
drwxr-xr-x. 3 root root 17 Mar 29 14:33 abc
-rw-------. 1 root root 1243 Mar 28 20:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Mar 29 14:30 hello.txt
8. 文件属性
黑带七段
- 第一段:权限
第一个字符代表文件(-)、目录(d),链接(l)
其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
第一组:文件所有者的权限是读、写和执行
第二组:与文件所有者同一组的用户的权限
第三组:不与文件所有者同组的其他用户的权限
也可用数字表示为:r=4,w=2,x=1,如:权限6可以表示为r+w=6
- 第二段:目录/链接个数
对于目录文件,表示它的第一级子目录的个数
注意:此处的值要减2才等于该目录下的子目录的实际个数(目录下默认包含.和..这两个目录)
对于其他文件,默认是1
- 第三段:所属用户
- 第四段:所属组
- 第五段:文件大小(字节)
- 第六段:最后修改时间
- 第七段:文件\文件夹名称
9. chmod 分配权限
常见用法:
chmod u+x xxx.txt 给当前所有者添加执行权限【x表示是执行权限】
针对hello.txt文件,给当前用户添加执行权限
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Mar 28 22:21 hello.txt
[root@localhost ~]# chmod u+x hello.txt
[root@localhost ~]# ll
-rwxr--r--. 1 root root 0 Mar 28 22:21 hello.txt
chmod 777 xxx.txt 添加rwxrwxrwx权限
给hello.txt添加777权限
[root@localhost ~]# chmod 777 hello.txt
[root@localhost ~]# ll
-rwxrwxrwx. 1 root root 0 Mar 28 22:21 hello.txt
chmod -R 777 xxx 给指定目录递归添加rwxrwxrwx权限
给abc目录及其子目录中的所有内容添加777权限
[root@localhost ~]# ll
drwxr-xr-x. 3 root root 17 Mar 29 14:24 abc
[root@localhost ~]# cd abc/
[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 root root 6 Mar 29 14:21 xyz
[root@localhost abc]# cd ..
[root@localhost ~]# chmod -R 777 abc
[root@localhost ~]# ll
drwxrwxrwx. 3 root root 17 Mar 29 14:24 abc
[root@localhost ~]# cd abc/
[root@localhost abc]# ll
total 0
drwxrwxrwx. 2 root root 6 Mar 29 14:21 xyz
10. 内容查看
cat 显示文本内容,类似windows中的type(顺序输出)
cat -b 显示行号输出
11. 压缩、解压
参数:
-z 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-c 创建一个压缩文件的参数指令(create 的意思);
-x 解开一个压缩文件的参数指令!
-v 压缩的过程中显示文件!
-f 使用档案名字,这个参数是最后一个参数,后面只能接档案名!
注意:特别注意,在参数的下达中, c/x 仅能存在一个!不可同时存在!
- 压缩 tar -zcvf 打包及压缩(gzip方式)
- 解压 tar -zxvf 解压(gzip包)
12. 输出及显示
echo:将内容输出到设备,类似java里面的system.out.println()
[root@localhost ~]# echo "hello\t\t world!"
hello\t\t world!
[root@localhost ~]# echo -e "hello\t\t world!"
hello world!
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
常见用法:
echo "hello\t\t world!" 不解析转义字符
echo -e "hello\t\t world!" 解析转义字符
echo $PATH 输出环境变量
注意:在打印变量信息的时候,使用echo ${PATH} 也可以,效果是一样的
13. 软件的安装和卸载
第一种:压缩包安装方式,直接解压,配置相应的环境变量即可使用
第二种:在线安装,使用yum
yum集成了连接网络,软件安装,删除,更新等功能,yum在配置好repo后,机器只要连网,就能智能化安装软件,使用yum 安装的好处在于可以自动安装软件需要的依赖包
安装
yum install -y 安装
升级
yum update 不跟则更新全部
查找和显示
yum info 显示包信息
yum list 不跟则显示已安装或可安装包
删除程序
yum remove
清除缓存
yum clean all 清除所有缓存(包含文件、旧软件)
14. 查看操作历史
history保留了最近执行的命令记录,默认可以保留1000。
历史清单从0开始编号到最大值。
常见用法:
history N 显示最近N条命令
history -c 清除所有的历史记录
history -w xxx.txt 保存历史记录到文本xxx.txt
15. 磁盘使用情况
使用df命令查看硬盘使用情况
查看磁盘使用情况
这里显示一共17G,已使用1.2G,还剩余16G
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.2G 16G 7% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
16. 清屏小命令
clear
17. 查看内存使用情况
free 查看内存和交换空间的使用情况
常见用法:
free -m:显示内存单位为MB
free -h:根据值的大小,显示易于识别的单位
18. 关机重启快捷命令
shutdown -h now 关机
reboot -h now 重启
exit 退出当前登录状态