Linux 文件系统
Linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后再次目录下再创建其他的目录。
目录结构:

以下是对这些目录的解释:
目录结构 |
含义 |
/root |
该目录为系统管理员,也称作超级权限者的用户主目录 |
/bin |
Binary的缩写,这个目录存放着最经常使用的命令 |
/usr |
非常重要的目录,用户很多应用程序和文件都放在这个目录下,类似与window下的program files 目录 |
/sbin |
存放的是系统管理员使用的系统管理程序 |
/etc |
存放系统或者安装的程序的配置文件,注册服务等 |
/tmp |
存放一些临时文件 |
/lib |
linux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar |
/var |
存放系统日志和缓存日志的目录 |
/home |
家目录,linux中每新建一个用户,会自动在home中为该用户分配一个文件夹 |
/dev |
存放设备文件目录,比如声卡,磁盘,光驱等 |
/boot |
存放的是启动linux使用的一些核心文件,包括一些连接文件以及镜像文件 |
/media |
Linux系统会自动识别一些设备,例如U盘、光驱等,识别后,Linux会把识别的设备挂载到这个目录下 |
/mnt |
是为了让用户临时挂在别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看里面的内容了 |
文件管理命令
ls - 查看文件列表
命令 |
说明 |
ls |
查看当前目录下的文件列表 |
ls -a |
显示全部包括隐藏文件 |
ls -h |
以人类可读的方式显示文件的大小,如用 K、M、G 作单位 |
ls -l |
显示文件和目录的详细资料 |
ls -R |
连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 |
cd - 切换目录
命令 |
说明 |
cd / |
转到根目录 |
cd /home |
比如进入 ‘/ home’ 目录’ |
cd … |
返回上一级目录 |
cd …/… |
返回上两级目录 |
pwd - 显示所在的工作路径
命令 |
说明 |
pwd |
比如切换到 home目录,执行命令 pwd ,显示 /home路径 |
mkdir/touch - 新建文件夹及文件
命令 |
说明 |
mkdir test |
创建一个叫做 ‘test’ 的目录’ |
mkdir test1 test2 |
同时创建两个目录 |
mkdir -p /tmp/test3 |
创建一个目录树 |
touch |
创建新文件,他可以创建一个空白的文件,可以在其中添加文本和数据。touch newfile 该命令创建一个名为newfile 的空白文件 |
rm - 删除文件
命令 |
说明 |
rm -f test |
删除一个叫做 ‘test’ 的文件’ |
rmdir test |
删除一个叫做 ‘test’ 的目录’ |
rm -rf test |
删除一个叫做 ‘test’ 的目录并同时删除其内容 |
rm -rf test1 test2 |
同时删除两个目录及它们的内容 |
cp - 拷贝文件
命令 |
说明 |
cp test newtest |
把 ‘test’ 文件拷贝到 ‘newtest’文件 |
cp –r test newtest |
把 ‘test’ 文件夹拷贝到 ‘newtest’文件夹 |
mv - 移动文件或修改文件名
命令 |
说明 |
mv t.txt Document |
把文件 t.txt 移动到目录 Document 中 |
mv ~/abc.txt /opt/123.txt |
把目录中的 abc.txt 文件移动到 /opt 目录中,并把文件名修改成 123.txt 的命令 |
cat - 查看文本内容
命令 |
说明 |
cat abc.txt |
查看 abc.txt 文本内容 |
less 和 more - 查看文本内容
less:可以按键盘上下方向键显示上下内容
more:不能通过上下方向键控制显示
less不必读整个文件,加载速度会比 more 更快
less 退出后 shell 不会留下刚显示的内容,而 more 退出后会在 shell 上留下刚显示的内容
less命令:
命令 |
说明 |
less abc.txt |
查看 abc.txt 文本内容 |
↑ |
上一行 |
↓ |
下一行 |
G |
第一页 |
g |
最后一页 |
空格 |
下一页 |
q |
推出 |
/关键字 |
搜索关键词 |
more命令:
命令 |
说明 |
more abc.txt |
查看 abc.txt 文本内容 |
tail 查看文本内容
命令 |
说明 |
tail -n 5 abc.log |
查看文件末尾 5 行内容 |
tail -f abl.log |
实时查看文件最新信息 |
tail -f nohup.out |
grep “rumenz” |
echo 显示输出内容
1、输出 hello world
[root@localhost test]# echo "hello\tworld"
hello\tworld
[root@localhost test]# echo -e "hello\tworld"
hello world
2、颜色打印输出内容
命令:sh color.sh
可以把命令写进shell脚本在调用脚本执行,也可以直接执行命令。
color.sh 内容如下
echo -e "\033[35mHello World\033[0m"
echo -e "\033[46;37mHello World\033[0m"
echo "Hello World"
3、覆盖 log.txt 里面的内容
命令:echo Hello World > log.txt
[root@localhost test]# cat log.txt
abcdefghigklmnopqrstuvwxyz
[root@localhost test]# echo Hello World > log.txt
[root@localhost test]# cat log.txt
Hello World
4、在 log.txt 追加内容
命令:echo Hello World2 >> log.txt
[root@localhost test]# cat log.txt
Hello World
[root@localhost test]# echo Hello World2 >> log.txt
[root@localhost test]# cat log.txt
Hello World
Hello World2
find - 查找文件
命令 |
说明 |
find / -name test.txt |
查找当前目录下名为 txt.sh 的文件 |
find / -name ‘*.txt’ |
查找当前目录下后缀为 ‘.txt’ 的文件。 |
find /home/user1 -name *.txt |
在目录 ‘/ home/user1’ 中查找带有’.txt’ 结尾的文件 |
find /etc -type f |
查找 etc 目录下的所有文件 |
find /etc -type d |
查找 etc 目录下的所有文件夹 |
find /usr/bin -type f -atime +100 |
查找在过去100天内未被使用过的执行文件 |
find /usr/bin -type f -mtime -10 |
查找在10天内被创建或者修改过的文件 |
find /home -size 10M |
查找 home 目录下等于 10M 的文件 |
find /home -size +10M |
查找 home 目录下大于 10M 的文件 |
find / -mtime -3 |
查找 3 天内修改过的文件 |
find / -atime -3 |
查找 3 天内访问过的文件 |
grep - 文件内容查找
命令 |
说明 |
grep “abc” abc.txt |
输出文件中包含 ‘abc’ 的行 |
grep -v “abc” abc.txt |
输出文件中不包含 ‘abc’ 的行 |
grep -n “abc” abc.txt |
输出文件中包含 ‘abc’ 的行及行号 |
grep -c “abc” abc.txt |
输出文件中匹配 ‘abc’ 字符串的数量 |
grep -o “abc” abc.txt |
只输出匹配的内容 ‘abc’ |
grep -w “abc” abc.txt |
只匹配 ‘abc’ 这个单词的行 |
vi/vim - 编辑文本内容
命令 |
说明 |
vim abc.txt |
执行命令打开文本内容,按 i 键进行内容编辑,修改完以后按 Esc 键退出编辑,接着按 Shift+:,这时候输入需要操作的命令并且回车,如下: |
命令 |
说明 |
-------- |
----- |
q |
如果未修改,则退出 |
q! |
取消修改并退出 |
wq! |
保存修改 |
tar/zip - 压缩解压缩
命令 |
说明 |
tar -zcvf /home abc123.tar.gz abc.txt 123.txt |
把 ‘home’ 目录中的 abc.txt 和 123.txt 文件压缩成 abc123.tar.gz 压缩包 |
tar -zxvf /home/abc123.tar.gz -C /opt |
把 ‘home’ 目录中的 abc123.tar.gz 包解压到 /opt 目录下 |
zip -r test.zip /home/ |
将 /home 下的所有文件进行压缩成 test.zip |
unzip -d /opt/ test.zip |
将 test.zip 解压到 /opt 目录下 |
系统管理
命令 |
说明 |
查看 IP |
ifconfig、ip a、ip addr |
关机 |
shutdown now 或(shutdown -h:默认一分钟后关闭,shutdown -h 30:30分钟后关闭,shutdown -h now:立刻关闭,shutdown -c:取消关机) |
重启 |
reboot 或 (shutdown -r:默认一分钟后重启虚拟机,shutdown -r 30:30分钟后重启,shutdown -r now:立即重启虚拟机) |
清屏 |
clear |
检查网络 |
ping,比如 ping www.baidu.com 或 ping 192.168.0…2 |
查看系统时间 |
date |
rpm - 软件包管理器
该命令用于管理 Linux 下软件包的软件。在 Linux 操作系统下,几乎所有的软件均可以通过 RPM 进行安装、卸载及管理等操作。
命令 |
说明 |
rpm -ivh |
软件包名 安装软件包并显示安装进度。 |
rpm -qa |
查询已经安装哪些软件包 |
rpm -q |
软件包名 查询指定软件包是否已经安装 |
rpm -uvh |
软件包名 升级一个软件包 |
rpm -e |
软件包名 删除指定软件包 |
yum - 基于 rpm 的软件包管理器
yum 基于 rpm 实现的,提供了除了 rpm 的安装软件、卸载软件等功能以外还有,自动查找、下载软件并自动处理软件的彼此之间的依赖关系,下载并安装依赖包。
命令 |
说明 |
yum list all |
列出所有可以安装的软件包 |
yum info 软件包名称 |
查看软件包信息 |
yum install 软件包名称 |
安装软件包 |
yum update 软件包名称 |
升级软件包 |
yum remove 软件包名称 |
卸载软件 |
yum search 软件包名称 |
查找软件包 |
systemctl - 管理服务
例如:sshd network firewalld 等
命令 |
说明 |
systemctl start work.service |
启动服务 |
systemctl restart work.service |
重启服务 |
systemctl stop work.service |
停止服务 |
systemctl reload work.service |
重新加载配置文件(不终止服务) |
systemctl status work.service |
查看服务状态 |
systemctl enable work.service |
开机自动启动 |
systemctl disable work.service |
开机不自动启动 |
systemctl is-enabled work.service |
查看特定服务是否为开机自动启动 |
systemctl list-unit-files --type=service |
查看各个级别下服务的启动与禁用情况 |
查看内核版本
uname -r
查看cpu
lscpu 或者 cat /proc/cpuinfo 命令
查改主机名
查:hostname,改:hostname myhost --关机失效
域名 ip 映射
所谓本地域名 IP 映射,是指在本地建立域名和 IP 之间的映射关系,无需通过域名解析服务器,直接在本地进行域名解析。在 Linux 系统中,是通过文件 /etc/hosts 描述域名到 IP 映射的,如下:
[root@centos7 ~]# vim /etc/hosts
192.168.199.8 www.hhh.com
免密登录
ssh 登录远程服务器,可以免去输入密码的麻烦。
1、生成公钥
首先查看本地有没有生成密钥,如果有的话,再次生成会影响前面已经设置好的,用下面这条命令就可以
cat ~/.ssh/id_rsa.pub
如果没有的话,输入下面的命令来在本机上生成公钥和私钥
ssh-keygen -t rsa
进入“.ssh”会生成以下几个文件

- authorized_keys:存放远程免密登录的公钥,这个文件主要是允许哪个主机免密访问本机,就会把那个主机的公钥填到这个文件里面
- id_rsa:生成的私钥文件
- id_rsa.pub:生成的公钥文件
- known_hosts:已知的主机公钥清单,如果希望 ssh 公钥生效需要满足两个条件:
- .ssh目录的权限必须是700
- .ssh/authorized_keys文件权限必须是600
2、把公钥复制到远程主机上
方式一:
通过 ssh-copy-id 的方式
ssh-copy-id -i ~/.ssh/id_rsa.pub root@远程服务器ip
方式二:
通过 scp 将内容写到对方的文件中
scp -p ~/.ssh/id_rsa.pub root@192.168.0.12:/root/.ssh/authorized_keys
远程拷贝
scp /home/administrator/test.txt root@192.168.0.12:/etc/squid
scp -r /home/administrator/test.txt root@192.168.0.12:/etc/squid
- /home/administrator/ 本地文件的绝对路径
- test.txt 要复制到服务器上的本地文件
- root 通过 root 用户登录到远程服务器(也可以使用其他拥有同等权限的用户)
- 192.168.0.12 远程服务器的 ip 地址(也可以使用域名或机器名)
- /etc/squid 将本地文件复制到位于远程服务器上的路径