目录
1) 创建文件 / 打开文件 创建文件 / 打开文件)
2)进入插入模式进入插入模式)
3)保存保存)
4)退出退出)
[编辑 netstat](#编辑 netstat)
学习目的
Linux虽然也有图形化界面, 但是在服务器/嵌入式设备上往往都是通过命令行的方式操作的. 因此学习Linux命令就是使用Linux的重要基础.
使用命令相比于使用图形界面有以下好处:
节省系统资源: 运行图形界面需要让系统付出一些额外的资源开销. 尤其是对于配置比较低的嵌入式设备, 这一点至关重要.
节省网络带宽: 如果通过网络访问服务器, 使用图形界面需要传输一帧帧的图像, 而图像的大小远高于字符串.
便于批量执行任务: 可以通过一些"脚本"代码来批量执行一些任务, 完成一些简单的编程工作.(比如定时备份文件, 删除文件等).
常用命令
ls
语法: ls [选项] [目录或文件]
功能: 对于目录, 该命令列出该目录下的所有目录和子文件. 对于文件, 则列出该文件名以及其它信息.
常用选项:
-a 列出目录下的所有文件, 包括以 . 开头的隐含文件.
-d 将目录像文件一样显示, 而不是显示其下的文件
-k 以k字节的形式表示文件的大小.
-l 列出文件的详细信息.
-r 对目录反向排序.
-t 以时间排序
-R 列出所有子目录下的文件(递归进行).
使用演示(这个图有点糊所以建议你们自己试试(doge)):
pwd
语法: pwd
功能: 显示用户当前所在目录.
展示:
cd
Linux系统中, 磁盘上的文件和目录组成一棵目录树, 每个节点都是目录或文件.
语法: cd 目录名
功能: 改变工作目录. 将当前工作目录改变到指定的目录下.
举例:
# 返回上级目录
cd ..
# 进入用户家目录
cd ~
# 返回最近访问目录
cd -
认识Linux目录结构
Linux是一个树形结构.
几个特殊的目录:
/ 称为根目录
. 称为当前目录
.. 称为当前目录的上级目录
绝对路径vs相对路径
形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.
形如: ./logs以 . 或者 .. 开头的, 称为相对路径.
小撬门
我们敲的所有Linux命令, 都可以尝试用tab键补全, 加快效率.
如果命令或者目录敲错了, 可以使用ctrl + c取消当前的命令.
touch
语法: touch[选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间, 包括存取时间和更改时间, 或者新建一个不存在的文件.
cat
语法: cat [选项] [文件]
功能: 查看目标文件的内容.
常用选项:
-n 对输出的所有行编号
mkdir
语法: mkdir [选项] dirname...
功能: 在当前目录下创建一个名为 "dirname" 的目录.
常用选项: -p, -parent 可以是一个路径名称. 此时若路径中的某些目录尚不存在, 加上选项后, 系统将自动建立号那些尚不存在的目录, 即一次可以建立多级目录.
举例:
# 递归建立多个目录
mkdir -p test/test1
rm
注: 别想成这个了:
语法: rm [-f-i-r-v] [dirName/dir]
功能: 删除文件或目录.
常用选项:
-f 即使文件属性为只读(即写保护), 亦直接删除.
-i 删除前逐一确认
-r 删除目录及其下所有文件.
重要注意事项: 千万不要运行 rm -rf /, 尤其是在公司的生产服务器上!!!
cp
语法: cp [选项] 源文件或目录(from) 目标文件或目录(to).
功能:复制文件或目录.
说明: cp指令用于复制文件或目录, 如同时指定两个以上的文件或目录, 且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中. 若同时指定多个文件或目录, 最后的目的地并非一个已经存在的目录, 则会出现报错信息.
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在.
-i 或 --interactive覆盖文件之前先询问用户.
-r递归处理, 将指定目录下的文件与子目录一并处理. 若源文件或目录的形态, 不属于目录或符号链接, 则一律视为普通文件处理.
-R 递归处理, 将指定目录下的文件及子目录一并处理.
mv
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
- 视mv指令中的第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中.
2.当第二个参数类型是文件时, mv命令完成文件重命名, 此时, 源文件只能有一个(也可以是源目录名), 它将所给的源文件或目录重命名为给定目标的目标文件名.
3.当第二个参数是已存的目录名称时, 源文件或目标参数可以有多个, mv命令将各个参数指定的源文件均移至目标目录中.
举例:
常用选项:
-f: force强制的意思, 如果目标文件已经存在, 不会询问直接覆盖.
-i: 若目标文件(destination)已经存在时, 就会询问是否覆盖.
tail
语法: tail [必要参数] [选择参数] [文件]
功能: 用于显示指定文件末尾内容, 不指定文件时, 作为输入信息进行处理. 常用查看日志文件.
选项:
-f 循环读取
-n<行数> 显示行数
vim
vim是一个知名的文本编辑器. 使用vim可以进行文本编辑了.
vim就相当于Windows的记事本. 只不过功能比记事本更强大一些.
1) 创建文件 / 打开文件
vim [文件名]
2)进入插入模式
vim打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键. (例如按下 j 并不是输入字母"j", 而是表示光标往下移动一行). 需要进入插入模式才能进行文本编辑.
使用 i 键可以进入到插入模式. (左下角提示--INSERT--)然后就可以像记事本一样正常编辑了.
3)保存
在插入模式下不能保存文件, 需要先回到普通模式. 按下Esc回到普通模式.
在普通模式下输入 :w, 再按下回车即可保存文件.
4)退出
在插入模式下不能退出, 需要回到普通模式.
退出时分为以下情况:
①文件未修改: 输入 :q, 再按下回车, 即可退出
②文件修改并保存: 使用:wq同时进行保存和退出.
③文件修改,但不希望保存: 使用 :wq! 进行强制退出.
grep
语法: grep[参数]... [文件]...
功能: 用于查找文件中是否包含指定的字符串, 并显示对应的行.
选项:
-n<行数> 显示的行数.
-w 全字匹配. 要求整个单词都完全相同的结果匹配出来, 而不仅仅是一个单词的一部分.
-r 递归查找. 可以搜索多级目录下的所有文件.
--color 高亮查找到的结果
--include 指定查找到的某些文件
--exclude 指定排除某些文件
ps
语法: ps [参数]...
功能: 用于查看当前系统上的运行的进程.
选项:
a 显示一个终端的所有进程
u 以用户为主的格式来显示程序状况
x 显示所有程序, 不止是会话中的进程
e 显示所有进程, 包括系统守护进程
f 显示完整格式输出
举例:
netstat
语法: netstat[参数]...
功能: 查询系统上的网络状态.
选项:
-a 显示所有正在监听的套接字
-n 显示数字形式地址而不是去解析主机, 端口或用户名
-p 显示套接字所属进程的PID和名称.
管道
管道是一种古老的"进程间通信"方式. 在Linux指令中可以使用 | 作为管道标记.
意思是将前一个指令标准输出的内容, 作为第二个指令标准输入内容.
举例:
ps -ef | grep "java"
apt
apt是Linux软件包管理工具. 用于相关linux发行版上安装, 更新, 删除和管理deb软件包
大多数apt命令必须以具有sudo权限的用户身份运行.
切换root用户: sudo su
apt常用命令
列出所有软件包:
apt list
更新软件包数据库:
sudo apt-get update
安装软件包:
sudo apt install package_name
移除安装包:
sudo apt remove package_name
remove命令将卸载给定的软件包, 但可能会留下一些配置文件. 如果要删除包含所有配置文件的软件包, 请使用purge而不是remove.
apt remove 和 apt purge区别
apt remove 删除包的二进制文件, 它留下了残留的配置文件.
apt purge删除包相关的所有内容, 包括配置文件.