Linux
常见目录说明:
/bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;
/etc: 存放系统管理和配置文件;
/home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;
/usr: 用于存放系统应用程序;
/opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把 tomcat 等都安装到这里;
/proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
/root: 超级用户(系统管理员)的主目录(特权阶级 ^o^);
/sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;
/dev: 用于存放设备文件;
/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
/boot: 存放用于系统引导时使用的各种文件;
/lib 和/lib64: 存放着和系统运行相关的库文件 ;
/tmp: 用于存放各种临时文件,是公用的临时文件存储点;
/var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
/lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。
获取命令帮助信息
help、--help 和 man 是三种常用的获取命令帮助信息的方式
| 工具 | 适用范围 | 详细程度 | 交互性 | 典型用途 |
|---|---|---|---|---|
help | Bash 内置命令 | 基础 | 低 | 快速查看 shell 内部命令的用法 |
--help | 外部命令/通用程序 | 中等 | 无 | 临时查询某命令的支持参数 |
man | 全系统(命令、库、配置等) | 高 | 高(分页) | 深度阅读文档、开发调试、系统管理 |
|是管道命令,表示前边的输出作为后边的输入
目录切换
cd usr:切换到该目录下 usr 目录cd ..(cd../..):切换到上一层目录(上两层目录)cd /:切换到系统根目录cd ~:切换到用户主目录cd -: 切换到上一个操作所在目录
目录操作
ls:显示目录中的文件和子目录的列表。ls /home,显示/home目录下的文件和子目录列表。ll:ls -l的别名,查看该目录下的所有目录和文件的详细信息mkdir [选项] 目录名:创建新目录(增)mkdir -m 755 my_directory,创建一个名为my_directory的新目录,并将其权限设置为 755,即所有用户对该目录有读、写和执行的权限。find [路径] [表达式]:在指定目录及其子目录中搜索文件或目录(查)。
① 列出当前目录及子目录下所有文件和文件夹:find .;
② 在/home目录下查找以.txt结尾的文件名:find /home -name "*.txt"
③ 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:find . -name "*.txt" -o -name "*.pdf"。pwd:显示当前工作目录的路径。rmdir [选项] 目录名:删除空目录(删)。rmdir -p my_directory,删除名为my_directory的空目录,并且会递归删除my_directory的空父目录,直到遇到非空目录或根目录。rm [选项] 文件或目录名:删除文件/目录(删)。rm -r my_directory,删除名为my_directory的目录-r(recursive,递归) 表示会递归删除指定目录及其所有子目录和文件。-f(force,强制) 不显示警告信息,跳过确认提示。cp [选项] 源文件/目录 目标文件/目录:复制文件或目录(移)。cp -r source destination,将source目录及其下的所有子目录和文件复制到destination目录下,并保留源文件的属性和目录结构。mv [选项] 源文件/目录 目标文件/目录:移动文件或目录(移),也可以用于重命名文件或目录。mv file.txt /home/file.txt,将file.txt文件移动到/home目录下,并重命名为file.txt。
文件操作
touch [选项] 文件名..:创建新文件或更新已存在文件(增)。touch file1.txt file2.txt file3.txt,创建 3 个文件。ln [选项] <源文件> <硬链接/软链接文件>:创建硬链接/软链接。ln -s file.txt file_link,创建名为file_link的软链接,指向file.txt文件。-s选项代表的就是创建软链接,s 即 symbolic(软链接又名符号链接)。cat/more/less/tail 文件名:文件的查看(查)。tail -f 文件:对某个文件进行动态监控,例如 Tomcat 的日志文件,会随着程序的运行,日志会变化。tail -f catalina-2016-11-11.log: 监控文件的变化 。head/tail:显示文件的前几行或后几行head -n 10 file_name:显示文件的前10行tail -n 20 file_name:显示文件的后20行more/less:逐页显示文本文件内容more file_nameless file_name
grep:在文件中搜索指定文本grep 要搜索的字符串 要搜索的文件 --color:搜索命令,--color代表高亮显示vim 文件名:修改文件的内容(改)。vim info.log:进入文件。然后,按?关键字,搜寻匹配关键字相关内容!如?getName,则会高亮显示关键字相关内容
wget命令
Linux系统中的wget是一个下载文件的工具,对于Linux用户是必不可少的工具 。 假设文件地址: http://51.istester.com/isTester.png
下载isTester.jpg文件 wget http://51.istester.com/isTester.png
下载isTester.jpg文件,并存储名为isTester_Logo.jpg wget -o isTester_Logo.jpg http://51.istester.com/isTester.png
下载isTester.jpg文件,后台形式下载 wget -b http://51.istester.com/isTeste
yum命令
用于查询、安装、卸载软件包
初始时,需要使用wget下载yum
新建一个目录用来保存yum安装包mkdir yum
进入文件夹并输入命令 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz
yum下载命令: yum -y install 包名
vim命令
在实际开发中,使用 vim 编辑器主要作用就是修改配置文件。
下面是一般步骤:vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底线模式----->输入:wq/q!\
- 命令模式 用户启动
vi/vim,便进入了命令模式
i 切换到输入模式,以输入字符。 x 删除当前光标所在处的字符。 : 切换到底线命令模式,以在最底一行输入命令。 / 输入关键字回车,可用于在文件中搜索定位关键字
- 输入模式 在命令模式下按下
i就进入了输入模式
esc退出输入模式,进入命令模式
- 底线命令模式 在命令模式下按下
:(英文冒号)就进入了底线命令模式
q退出程序,如果退出时当前文件修改了尚未保存,则 vi 并不退出,而是继续等待用户的命令q!不保存文件强制退出,无论文件有没有被修改w保存文件,并不退出,而是继续等待用户输入命令; w test.c,给当前文件起一个新名字,相当于另存为w!(新文件名) 该命令与:w命令相同,所不同的是,即使指定的新文件存在,vi 编辑器也会用当前编辑文件对其进行替换,而不再询问用户wq保存文件并退出wq!强制保存文件并退出(强制写入)(场景:对于只读文件,wq无法操作,wq!可以)

set number:展示行号
文件压缩
zip:压缩 unzip:解压缩 tar:打包
1)打包并压缩文件:
- Linux 中的打包文件一般是以
.tar结尾的 - 压缩的命令一般是以
.gz结尾的。 - 一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般
.tar.gz。
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件 ,其中:
- z:调用 gzip 压缩命令进行压缩
- c:打包文件
- v:显示运行过程
- f:指定文件名
比如:假如 test 目录下有三个文件分别是:aaa.txt、 bbb.txt、ccc.txt,如果我们要打包 test 目录并指定压缩后的压缩包名称为 test.tar.gz 可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt 或 tar -zcvf test.tar.gz /test/ 。
2)解压压缩包:
命令:tar [-xvf] 压缩文件
其中 x 代表解压
示例:
将
/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz将 /test 下的 test.tar.gz 解压到根目录/usr 下:
tar -xvf test.tar.gz -C /usr(-C代表指定解压的位置)
文件传输
scp [选项] 源文件 远程文件(scp 即 secure copy,安全复制):用于通过 SSH 协议进行安全的文件传输,可以实现从本地到远程主机的上传和从远程主机到本地的下载。
例如:scp -r my_directory user@remote:/home/user,将本地目录my_directory上传到远程服务器/home/user目录下。scp -r user@remote:/home/user/my_directory,将远程服务器的/home/user目录下的my_directory目录下载到本地。rsync [选项] 源文件 远程文件: 可以在本地和远程系统之间高效地进行文件复制,并且能够智能地处理增量复制,节省带宽和时间。
例如:rsync -r my_directory user@remote:/home/user,将本地目录my_directory上传到远程服务器/home/user目录下。
命令历史
history: 查看历史命令执行记录history | grep mkdir: 查看命令mkdir 的历史执行记录!178: 执行历史记录中,序号为178的命令history 5 // history | tail -5: 查找最后5条历史记录
文件权限
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读(readable)、写(writable)和执行(executable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
通过 ls -l 命令我们可以 查看某个目录下的文件或目录的权限
第一列的内容的信息解释如下:

Linux 中权限分为以下几种:
- r:代表权限是可读,r 也可以用数字 4 表示
- w:代表权限是可写,w 也可以用数字 2 表示
- x:代表权限是可执行,x 也可以用数字 1 表示
文件和目录权限的区别:
对于文件:
对于目录:
需要注意的是:超级用户可以无视普通用户的权限,即使文件目录权限是 000,依旧可以访问。
- 修改文件/目录的权限的命令: chmod
示例:修改/test 下的 aaa.txt 的权限为文件所有者有全部权限,文件所有者所在的组有读写权限,其他用户只有读的权限。
chmod u=rwx,g=rw,o=r aaa.txt 或者 chmod 764 aaa.txt
系统状态
top [选项]:用于实时查看系统的 CPU 使用率、内存使用率、进程信息等。free [选项]:用于查看系统的内存使用情况,包括已用内存、可用内存、缓冲区和缓存等。ps [选项]:用于查看系统中的进程信息,包括进程的 ID、状态、资源使用情况等。ps -ef/ps -aux:两者的区别是展示格式不同。
如果想要查看特定的进程可以使用这样的格式:ps -ef|grep redis(查看包括 redis 字符串的进程),也可使用pgrep redis -a。df [选项] [文件系统]:用于查看系统的磁盘空间使用情况,包括磁盘空间的总量、已使用量和可用量等,可以指定文件系统上。
例如:df -a: 查看全部文件系统。df -h: 查看当前服务器硬盘空间。du [选项] [文件]:用于查看指定目录或文件的磁盘空间使用情况,可以指定不同的选项来控制输出格式和单位。du -sh isTester: 查看目录isTester/所占有的空间htop [选项]:类似于top,但提供了更加交互式和友好的界面,可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。uptime [选项]:用于查看系统总共运行了多长时间、系统的平均负载等信息。vmstat [间隔时间] [重复次数]:vmstat (Virtual Memory Statistics) 的含义为显示虚拟内存状态,但是它可以报告关于进程、内存、I/O 等系统整体运行状态。sar [选项] [时间间隔] [重复次数]:用于收集、报告和分析系统的性能统计信息,包括系统的 CPU 使用、内存使用、磁盘 I/O、网络活动等详细信息。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。systemctl [命令] [服务名称]:用于管理系统的服务和单元,可以查看系统服务的状态、启动、停止、重启等。
网络通信
ping [选项] 目标主机:测试与目标主机的网络连接。ifconfig或ip:用于查看系统的网络接口信息,包括网络接口的 IP 地址、MAC 地址、状态等。netstat [选项]:用于查看系统的网络连接状态和网络统计信息,可以查看当前的网络连接情况、监听端口、网络协议等。netstat -anpl:查看网络端口占用ss [选项]:比netstat更好用,提供了更快速、更详细的网络连接信息。
其他
sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。lsof -i:端口号:查端口号占用(list open files)kill -9 进程的pid:杀死进程(-9 表示强制终止)先用 ps 查找进程,然后用 kill 杀掉。shutdown:shutdown -h now:指定现在立即关机;shutdown +5 "System will shutdown after 5 minutes":指定 5 分钟后关机,同时送出警告信息给登入用户。reboot:reboot:重开机。reboot -w:做个重开机的模拟(只有纪录并不会真的重开机)。echo:将文本输出到标准输出(主要用于写脚本)echo "Hello, World!"echo ok > test.txtecho no ok >> test.txt
| 符号 | 含义 | 作用说明 | 是否覆盖文件 | 示例 |
|---|---|---|---|---|
> | 输出重定向(覆盖) | 将标准输出写入文件,覆盖原文件内容 | ✅ 是 | echo "Hello" > file.txt |
>> | 输出重定向(追加) | 将标准输出追加到文件末尾,不覆盖原内容 | ❌ 否 | echo "World" >> file.txt |
< | 输入重定向 | 将文件内容作为命令的标准输入 | — | cat < file.txt |
clear: 清空当前终端屏幕exit: 退出当前终端窗口which 程序: 获取程序安装位置, 如which mysqlwho -q: 查看当前系统中所有登录用户的信息
高级命令
awk: 文本处理,字符串截断输出,输入多样。awk -F ":" '{print $1,$4}' test.log:每行按:分割,打印第1,4项awk -F “指定分割符”:分隔符默认为空格或tabsed:文本内容检索和替换sed 's/要被替换的字符串/新的字符串'/g 文件:s(search,搜索),g(global,全局),将修改结果到标准输出,不会修改原文件-i使sed可以修改文件
查看日志
zcat file.gz: 查看 gz 压缩文件的内容tail -f info.log: 动态实时输出info.log日志tail -500f info.log: 动态查看info.log日志最新500条tail -n 200 info.log:查看info.log日志后200行head -n 20 info.log | tail -n 10: 查看info.log日志第10至20行的内容tail -f info.log | grep "orderId":动态查看含有关键字orderId的日志cat info.log:查看info.log的全部日志内容cat info.log | grep "error":查看info.log的error关键字关联的全部内容cat info.log | grep -A 5 "java":查看info.log的java关键字后5行关联的全部内容cat info.log | grep -B 10 "java":查看info.log的java关键字前10行关联的全部内容cat info.log | grep -C 20 "java":查看info.log的java关键字前后20行关联的全部内容less info.log:从头开始查看info.log日志内容more info.log:查看info.log的日志内容,按下方附加操作滚动日志内容more info.log |grep "test":查看全部关键字test关联内容
- 全屏导航
ctrl + F- 向前移动一屏ctrl + B- 向后移动一屏ctrl + D- 向前移动半屏ctrl + U- 向后移动半屏- 单行导航
j- 向前移动一行k- 向后移动一行- 其它导航
G- 移动到最后一行g- 移动到第一行q / ZZ- 退出less命令
head -n 20 info.log:查看info.log日志的前20行内容
常用快捷键
移动光标
Ctrl - 左右键: 在单词之间跳转
Ctrl – a :移到行首
Ctrl – e :移到行尾
编辑命令
Ctrl – h :删除光标左方位置的字符
Ctrl – d :删除光标右方位置的字符(注意:当前命令行没有任何字符时,会销系统或结束终端)
Ctrl – w :由光标位置开始,往左删除单词。往行首删
Alt – d :由光标位置开始,往右删除单词。往行尾删
Ctrl – k :由光标所在位置开始,删除右方所有的字符,直到该行结束。
Ctrl – u :由光标所在位置开始,删除左方所有的字符,直到该行开始。
Ctrl – y :粘贴之前删除的内容到光标后。
Ctrl – t :交换光标处和之前两个字符的位置。
Alt + . :使用上一条命令的最后一个参数。
Ctrl – _ :回复之前的状态。撤销操作。
Ctrl -a + Ctrl -k 或 Ctrl -e + Ctrl -u 或 Ctrl -k + Ctrl -u 组合可删除整行。
查找历史命令
Ctrl – p :显示当前命令的上一条历史命令(↑)
Ctrl – n :显示当前命令的下一条历史命令(↓)
Ctrl – r :搜索历史命令,随着输入会显示历史命令中的一条匹配命令,Enter键执行匹配命令;ESC键在命令行显示而不执行匹配命令。
Ctrl – g :从历史搜索模式(Ctrl – r)退出。
控制命令
Ctrl – l :清除屏幕,然后,在最上面重新显示目前光标所在的这一行的内容。
Ctrl – o :执行当前命令,并选择上一条命令。
Ctrl – s :阻止屏幕输出
Ctrl – q :允许屏幕输出
Ctrl – c :终止命令
Ctrl – z :挂起命令