目录
上一篇 零基础购买阿里云服务器,XShell连接云服务器-优快云博客
通过这一篇我们能够了解到如何购买云服务器,以及通过终端软件XShell去连接我们的我们服务器,接下来就让我们一起来理解一下操作Linux的一些基础指令,然后我们就会带大家部署一个项目到服务器上,部署完成之后,我们就可以让自己的朋友访问你的网站。
认识一下Linux的目录结构
Linux是一个树形目录结构
几个特殊的目录
- / 根目录
- . 当前目录
- .. 当前目录的上级目录
绝对路径和相对路径
形如:/usr/share/temocat/logs/ 以根目录为开头的称为绝对路径
- 形如:./logs 以 . 或者 .. 开头的都称为相对路径
使用tab键补全
我们敲的所有Linux指令,都可以尝试使用 tab 键来尝试补齐,加快效率。
使用 ctrl+c 重新输入
如果输入的指令或者目录敲错了,可以使用 ctrl+c 取消当前的指令
1.Linxu的常用指令
1.1 ls
- 语法:ls [选项][目录或文件]([] 表示可加可不加,不用就不加,要就加)
- 功能:对于目录,就列出目录的所有子目录和文件。对于文件,就列出文件名和其他信息。
- 常用选项:
- a:列出目录下的所有文件,包括以.开头的隐含文件。
- -d:将目录象文件一样显示,而不是显示其下的文件。例如:ls -d 指定目录。
- -k:以 k 字节的形式表示文件的大小。例如:ls -alk 指定文件。
- -l:列出文件的详细信息。
- -r:对目录反向排序。
- -t:以时间排序。
- -R:列出所有子目录下的文件(递归)。
- a:列出目录下的所有文件,包括以.开头的隐含文件。
1.2 pwd
- 语法:pwd
- 功能:显示用户当前所在的目录(绝对路径)
1.3cd
Linux系统中,磁盘上的目录和文件被组成一可棵目录树,每个节点都是目录和文件。
- 语法:cd 目录名
- 功能:改变工作目录,将当前的工作目录转变到指定的目录下。
举例:
1. # 返回上级目录 2. cd .. 3. 4. # 返回用户家目录 5. cd ~ 6. 7. # 返回最近访问的目录 8. cd -
1.4 touch
- 语法:touch [选项] ...文件...
- 功能:touch命令参数可更改文档或者目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
举例
1. touch test.txt
1.5 cat
- 语法: cat [选项][文件]
- 功能:查看目标文件的内容
- 常用选项:
- -n 对输出的所有行编号
举例:
1. cat test.txt
1.6 mkdir
- 语法:mkdir[选项] dirname...
- 功能:在当前目录下创建一个名为 “dirname” 的目录
- 常用选项:
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
举例:
1.# 递归建立多个目录 2. mkdri -p test/test1
1.7 rm
- 语法: rm [-f-i-r-v] [dirname/dir]
- 功能:删除文件或目录
- 常用选项:
- -f:即使文件属性为只读(即写保护),亦直接删除。
- -i:删除前逐一询问确认。
- -r:删除目录及其下所有文件。
- -R 或 --recursive:递归处理,将指定目录下的文件及子目录一并处理。
举例:
1. rm test.txt
重要注意事项:
千万不要运行 rm -rf /,尤其是在公司的生产服务器上。
理解一下递归删除的过程:
先创建如下的目录结构:
test/
├── a
│ ├── a1
│ │ ├── 1.txt
│ │ └── 2.txt
│ └── a2
├── b
│ ├── b1
│ │ ├── 1.txt
│ │ └── 2.txt
│ └── b2
└── c
使用 rm -ri 命令删除test,观察删除的顺序
1.8 cp
- 语法:cp [选项] 源文件或者目录 目标文件或者目录
- 功能:复制文件和目录
说明:cp指令用于复制文件和目录,如同时指定两个以上的文件或目录(要复制的源文件和目录),且最后的目的地是一个已经存在的目录。则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录, 则会出现错误信息;
- 常用选项:
-
-f 或 --force:强行复制文件或目录,不论目的文件或目录是否已经存在。
- -i 或 --interactive:覆盖文件之前先询问用户。
- -r:递归处理,将指定目录下的文件与子目录一并处理。如果源文件或目录的形态不属于目录或符号链接,则一律视为普通文件处理。
- -R 或 --recursive:递归处理,将指定目录下的文件及子目录一并处理。
-
1.10 mv
- 语法:mv [选项] 源文件或者目录 目标文件或目录
- 功能:
- 1.视mv命令的第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其知道一个新的目录。
- 2.当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),他将所给的源文件或目录重命名为给定的目标文件名、
- 3.当第二个参数是已经存在的目录名称时,源文件或目录参数可以有很多个,mv命令将各参数指定的源文件均移至目标目录中
- 常用选项
- -f:force强制的意思,如果目标文件已经存在,不会询问,直接覆盖
- -i:若目标文件已经存在,就会询问是否覆盖!
1.11 tail
- 语法:tail [必要参数][选择参数][文件]
- 功能:用于显示选定文件的末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
- 常用选项:
- -f:循环读取
- -n<行数> 显示行数
举例:
1 显示文末的最后10行 2 tail -10 test.txt
1.12 vim
vim是一个知名的文本编辑器,使用vim可以进行文本编辑。
vim就相当于Windows的记事本,只不过功能比记事本强大一点。
-
1.创建文件/打开问价
vim [文件名]
-
2. 进入插入模式
vim打开文件后默认是普通模式,普通模式下键盘的按键表示一些特殊功能的快捷键。(例如按下j并不是输入字母“j”,而是表示光标向下移动一行)。需要进入插入模式才能正常编辑文本;使用 i 键进入到插入模式。(左下角提示--INSERT--)然后就可以像记事本一样编辑文件了。
-
3.保存
在插入模式下不能保存文件,需要先回到普通模式。按ESC回到普通模式。
在普通模式下输入 :w ,在按下回车,就可以保存文件。
:wq,表示保存并退出。
-
4.退出
在插入模式下不能退出, 需要先回到普通模式.
退出时, 分以下情况:
① 文件未修改: 输入 :q , 再按下回车, 即可退出
② 文件修改并保存: 使用 :wq 同时执行保存和退出.
③ 文件修改, 但不希望保存: 使用 :wq! 进行强制退出
1.13 grep
- 语法:grep [参数]...[文件]...
- 功能:用于查找文件是否包含指定字符串,并显示对应的行
- 选项:
- -n<行数> 显示行数
- -w 全字匹配,要求整个单词都完全相同的结果才能匹配处出来
- -r 递归查找,可以搜索多级目录下的所有文件
- --color 高亮查找找到的结果
- --include 指定查找某些文件
- --exclude 指定排除某些文件
举例:
1 grep "Hello" Hello.java
1.14 ps
- 语法:ps [参数]...
- 功能:用于查找当前系统上运行的进程
- 选项:
- a 显示一个终端的所有进程
- u 以用户为主的格式来显示程序的状况
- x 显示所有进程,不只是会话中的进程
- e 显示所有的进程,包括系统守护的进程
- f 显示完整格式输出
举例:
1 ps aux # 显示系统上所有的进程 2 ps aux | grep "进程名" 3 ps aux | grep "进程id"
1.15 netstat
- 语法:netstat [参数]...
- 功能:查找系统上的网络转态。
- 选项:
- -a 显示所有正在货不在侦听的套接字
- -n 显示所有数字形式地址而不是在解析主机,端口或者用户名
- -p 显示套接字所属进程的PID和名称
举例:
1 netstat -anp 2 netstat -anp | grep "进程名" 3 netstat -anp | grep "端口号"
1.16 管道
- 管道是一种古老的 "进程间通信" 方式. 在 Linux 指令中可以使用 | 作为管道标记.
- 意思是将前一个指令标准输出的内容, 作为第二个指令的标准输入内容.
举例:
ps -ef|grep "java" ps -ef|head -10 #用于显示当前系统中正在运行的进程列表,并只显示前10行 tail -f log.txt|grep "Exception"