Linux 入门实战:从目录结构到常用命令 一、Linux 目录结构 —— 先搞清楚“东西放哪儿”Windows 有 C 盘、D 盘Linux 则是一棵以根/为起点的目录树。每个目录都有其约定俗成的用途了解之后你就能猜到某个文件大概在什么地方。根目录 /所有目录的起点。只有 root 用户有写权限普通用户只能读。另外要注意root 用户自己的家目录是 /root不是 /home/root。/bin 和 /sbin —— 命令的“家”/bin 存放的是所有用户都可以使用的命令比如 ls、cp、ping、grep 这些最常用的工具。而 /sbin 里放的是系统管理员专用命令像 fdisk、ifconfig、reboot、iptables 这类通常只有 root 才能执行。所以当你执行某个命令提示找不到时可以看看是不是在 /usr/bin 或 /usr/sbin 下面因为有些发行版会把部分命令放在那里。/etc —— 配置文件大本营几乎所有的系统配置文件都在这里比如网络配置 /etc/sysconfig/network-scripts/主机名解析 /etc/hosts还有各种服务的启动脚本。特别提一下 /etc/hosts它相当于本地 DNS可以手动把域名绑定到 IP如果你们公司内网有测试环境经常需要改这个文件来指定域名解析。/dev —— 一切皆文件设备也不例外Linux 把硬件设备也抽象成文件放在 /dev 下。比如硬盘 /dev/sda终端 /dev/tty1。你往 /dev/null 写数据就等于把它扔进黑洞这个技巧在写脚本时很常用。/proc —— 系统运行的“实时快照”这是一个虚拟文件系统里面存的是当前系统状态和进程信息。比如 /proc/cpuinfo 可以看 CPU 详情/proc/meminfo 看内存。你还可以通过 /proc/进程号/ 查看某个进程的详细信息排查问题时很有用。/var —— 经常变化的文件日志文件 /var/log邮件 /var/mail打印队列 /var/spool都放在这里。如果你的服务器磁盘报警通常要去 /var/log 下看看是不是日志把空间吃满了。/tmp —— 临时文件存放处系统重启后这个目录下的文件会被清空。所以临时下载包、解压文件都可以放这里用完也不用操心清理。/home —— 普通用户的家每个用户在这里有自己的目录比如 /home/john用户登录后默认就进入自己的家目录可以随意存个人文件。/boot —— 引导加载程序内核文件、grub 引导配置都在这里不小心删了系统就起不来了所以没事别动这个目录。/usr —— 用户程序、库文件这个目录挺大/usr/bin 和 /usr/sbin 补充了 /bin 和 /sbin 没有的命令/usr/lib 存放库文件/usr/local 则用来放自己从源码编译安装的软件比如你手动装 Apache通常会放在 /usr/local/apache2。/mnt 和 /media —— 挂载点/mnt 通常是临时挂载文件系统用的比如你插个 U 盘或挂载 ISO 镜像/media 则是系统自动挂载的可移动设备目录比如光盘、U 盘。掌握这些目录后你就能像个“老司机”一样快速定位文件位置而不是到处乱找。二、常用文件操作命令命令的通用格式是命令 -选项 参数。多个选项可以合并比如 ls -la。ls —— 查看目录内容ls 是使用频率最高的命令。加 -a 可以显示隐藏文件以 . 开头的文件加 -l 显示详细信息。那个长串信息里第一列的第一个字符表示文件类型d 是目录- 是普通文件l 是软链接。后面的 9 个字符分成三组分别代表所有者、所属组、其他人的读r、写w、执行x权限。cd —— 切换目录cd / 回到根目录cd .. 回到上级目录cd ~ 回到自己的家目录。没有输出信息但它确实把目录切过去了。pwd —— 看自己在哪当你不知道当前在哪个目录时敲一下 pwd它会打印出完整路径。touch —— 创建空文件touch newfile.txt如果文件不存在就创建存在则更新它的修改时间。mkdir —— 创建目录mkdir newdir 创建一个新目录。如果想一次性创建多层目录加 -p 参数比如 mkdir -p a/b/c。cp —— 复制cp source target 复制文件。如果要复制整个目录加 -r 选项比如 cp -r dir1 dir2。mv —— 移动或重命名mv oldname newname 其实就是重命名mv file /target/ 则是移动文件。它既移动又改名很灵活。rm —— 删除rm file 删除文件rm -r dir 删除目录。强烈建议加上 -f 强制删除避免每次都要确认。但也要格外小心因为 Linux 没有回收站删了就真没了尤其是 rm -rf / 这种操作千万别手滑。cat —— 查看整个文件适合查看小文件比如 cat /etc/hosts。如果文件很长屏幕会刷得飞快这时候要用 more 或 less。more —— 分页查看more /etc/services 会一页一页显示按空格翻页按 Enter 逐行滚动按 q 退出。head 和 tail —— 看头看尾head -20 file 显示前 20 行tail -30 file 显示后 30 行。tail -f 特别实用可以动态跟踪日志文件的更新比如实时查看应用日志tail -f /var/log/messages。ln —— 链接文件ln -s source target 创建软链接类似 Windows 的快捷方式。软链接可以跨文件系统但原文件删了链接就失效。硬链接不加 -s相当于给文件起了个别名两个文件内容同步变化而且原文件删除后硬链接依然可用但硬链接不能跨分区。三、权限管理 —— 安全的核心Linux 的权限管理基于用户、组、其他人三个维度。每个文件都有读r4、写w2、执行x1三种权限。chmod —— 修改权限两种方式字母法或数字法。数字法最常用比如 chmod 755 file表示所有者有 rwx7421所属组和其他人有 rx541。chmod ux file 给所有者加执行权限chmod g-w file 去掉所属组的写权限。chown —— 改所有者只有 root 可以操作比如 chown tom file 将文件所有者改为 tom。chgrp —— 改所属组比如 chgrp developers file 将文件所属组改为 developers。操作目录时要注意对目录来说r 权限表示可以列出目录内容w 权限表示可以在目录里创建删除文件即使该文件本身没有写权限x 权限表示可以进入该目录。所以给目录授权时一般至少 755 或 750。四、文件搜索which —— 找命令的位置which ls 会显示 /bin/ls它只在 PATH 环境变量指定的路径中查找所以只能找命令文件。find —— 最强大的查找工具find 在指定路径下按各种条件查找文件。比如find /etc -name init 精确匹配文件名为 initfind /etc -name *init* 包含 init 的文件find /etc -name init??? 以 init 开头且后面正好三个字符find / -size 204800 查找大于 100MB 的文件单位是 512 字节块204800 块100MBfind / -user sam 查找所有者是 sam 的文件find 还可以组合条件比如 -type f 只查普通文件-type d 只查目录。这个命令很强大但搜索速度较慢适合临时查找。grep —— 在文件内容里搜索grep ftp /etc/services 会在 /etc/services 文件中找出所有包含 ftp 的行。通常和管道结合使用比如 ps -ef | grep java找出 Java 进程。五、帮助命令man 命令是最好的老师。man ls 会显示 ls 的详细手册包括所有参数和用法。按空格翻页按 q 退出。如果记不清某个选项直接 man 一下就行。六、压缩与解压Linux 下常见压缩格式有 .gz、.tar.gz、.zip 等。gzip 和 gunzipgzip file 会把 file 压缩成 file.gz但原文件不保留。如果要保留原文件可以用 gzip -c file file.gz。gunzip file.gz 解压同样默认不保留压缩包可以用 gunzip -c file.gz file 保留。tar —— 打包兼压缩最常用tar 本身只是打包不压缩但配合 -z 可以调用 gzip 压缩。语法打包并压缩tar -zcvf dir1.tar.gz dir1/解压tar -zxvf dir1.tar.gz参数解释-c 创建-x 解包-z 使用 gzip-v 显示过程-f 指定文件名。记忆技巧czf 是“创建压缩文件”xzf 是“解压文件”。zip 和 unzipzip 可以压缩目录且保留原文件zip -r test.zip /test。解压用 unzip test.zip。如果系统提示找不到命令可以用 yum install zip 安装。七、网络与系统管理命令ping —— 测网络通不通ping 192.168.1.1 看能不能连通目标。注意如果防火墙开着可能 ping 不通可以检查防火墙状态systemctl status firewalld 或 service iptables status。临时关闭防火墙service iptables stop永久关闭chkconfig iptables offCentOS 6 方式。CentOS 7 以后用 systemctl 管理。ifconfig —— 查看 IP 地址ifconfig -a 显示所有网络接口信息包括没激活的。现在有些系统推荐用 ip addr但 ifconfig 还是很多人的习惯。shutdown 和 rebootshutdown -h now 立即关机reboot 重启。也可以用 poweroff。八、输出重定向和管道 —— 让命令组合起来输出重定向ls -l /tmp tmp.msg 将命令结果覆盖写入文件date tmp.msg 将日期追加到文件末尾管道|把前一个命令的输出作为后一个命令的输入。比如 ls -l /etc | more 分页显示ls -l /etc | grep init 只显示包含 init 的行再配合 wc -l 可以统计行数非常灵活。命令替换反引号ls -l which touch 会先执行 which touch得到 /bin/touch然后 ls -l 查看这个文件的信息。这在写脚本时经常用到。九、vi/vim 编辑器vi 是 Linux 内置的文本编辑器vim 是它的增强版。初学者容易懵是因为它有三种模式命令模式刚打开时进入可以移动光标、删除、复制等。插入模式按 i、a、o 等键进入此时可以编辑文本按 Esc 回到命令模式。末行模式在命令模式下按 : 进入可以执行保存、退出、查找等操作。基本操作保存并退出命令模式下按 Esc 确保回到命令模式然后 :wq不保存退出:q!查找在末行模式下输入 /关键词按 n 跳到下一个匹配项复制一行yy粘贴p删除一行dd多用几次就熟悉了别被它吓到。十、软件包管理 —— RPM 和 YUMRPM 是 Red Hat 包管理器安装命令rpm -ivh 包名.rpm。但 RPM 有个缺点就是依赖关系需要手动解决经常出现“需要 A而 A 又依赖 B”的循环。所以现在更推荐用 YUM它能自动解决依赖。YUM 常用操作安装yum install 软件名升级yum update 软件名不带软件名则升级全部卸载yum remove 软件名查询已安装rpm -qa | grep 关键词查看软件信息yum info 软件名关于安装 JDK 和 Tomcat手动解压方式有时候我们需要安装官方 tar.gz 包比如 JDK 和 Tomcat步骤一般是下载 tar.gz 包解压到指定目录如 /usr/local/配置环境变量编辑 /etc/profile加入 JAVA_HOME、PATH 等执行 source /etc/profile 让配置生效对于 Tomcat直接解压后进入 bin 目录执行 ./startup.sh 启动./shutdown.sh 停止。记得给启动脚本加执行权限如果提示权限不足就 chmod x *.sh。源码编译安装以 Redis 为例如果需要从源码安装步骤通常是先安装编译工具yum -y install gcc gcc-c make解压源码包进入目录执行 ./configure有些软件不需要比如 Redis 直接 makemakemake install有时候编译会报错比如缺少依赖库根据提示安装对应的开发包即可。还有一个常见问题用 yum 安装时提示 “NOKEY” 警告这是因为缺少 GPG 密钥可以导入对应的公钥例如 rpm --import http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5。