XShell
使用阿里云服务器连接 XShell
使用Xshell连接阿里云服务器(超详细截图版)-CSDN博客
连接成功后 xshell 页面:
清空页面内容,直接输入 clear
即可:
关于 XShell 下的复制粘贴
- 复制:
Ctrl + Insert
(有些同学的Insert
需要配合Fn
来按) - 粘贴:
Shift + Insert
Ctrl + C
/Ctrl + V
是不行的。- 可以重新设置快捷键:工具 => 选项 => 键盘和鼠标 => 编辑
认识 Linux 目录结构
Linux 是一个树形目录结构。
几个特殊的目录:
/
称为根目录.
称为当前目录..
称为当前目录的上级目录
绝对路径 vs 相对路径:
- 形如:
/usr/share/tomcat/logs/
以根目录开头的,称为绝对路径。 - 形如:
./logs
以.
或者..
开头的,称为相对路径。
使用 Tab 键补全:
我们敲的所有 Linux 命令,都可以使用 Tab 键来尝试补全,加快效率。
使用 Ctrl + C 重新输入:
如果命令或者目录敲错了,可以 Ctrl + C
取消当前的命令。
Linux 常用命令
ls (查看当前文件内容)
语法:
ls [选项] [目录或文件]
功能:
- 对于
目录
,该命令列出该目录下
的所有子目录
与文件
。 - 对于
文件
,将列出文件名
以及其他信息
。
常用选项:
ls -a
列出目录下的所有文件,包括以 .
开头的隐藏文件。
ll
是一个简化的命令,等同于 ls -al
ls -l
列出文件的详细信息。
-d
将目录像文件一样显示,而不是显示其下的文件。如:ls -d
指定目录
-k
以 k 字节的形式表示文件的大小。ls -alk
指定文件
-r
对目录反向排序。
-t
以时间排序。
-R
列出所有子目录下的文件。(递归)
pwd (查看当前文件路径)
功能:显示用户当前所在的目录。
举例:当前用户为 root
,所以用户当前所在的目录
为 /root
mkdir (创建文件)
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
举例:
此时创建的 test1 目录,是 snap 的子目录:
使用mkdir
指令创建目录后,如何进入这个目录呢?我们可以使用cd
指令进入该目录。
常用选项:
-p, --parents
可以是一个路径名称。- 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
# 递归建立多个目录
mkdir -p test/test1
cd (进入指定文件)
功能:Linux 系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
语法:cd 目录名
功能:改变工作目录
。将当前工作目录改变到指定的目录下。
举例:
如果我们想回到上级目录 snap,就需要输入指令:
# 返回上级目录
cd ..
上图演示的命令,从目录~
进入子目录 ~/test1
,再返回 ~/test1
的上级目录,~
表示 /root
我们还可以再次使用pwd
命令,查看当前工作目录
的完整路径
:
我们创建多级目录:
cd ..
命令用于返回上级目录,而通过连续使用cd ../..
或cd ../../
等类似的指令,可以一次性返回多级上级目录:
ls # 查看当前 /root 目录中的内容
snap test test1
cd test # 进入多级目录 /root/test
ls # 查看当前 /root/test 目录中的内容
test1
cd test1 # 进入目录 /root/test/test1
cd ../../ # 连续返回两次上级目录 /root
我们在 /root/test 目录下,再创建一个名字较长的文件目录:
# 进入用户家目录
cd ~# 返回最近访问目录
cd -
tab (补全文件名)
在输入长路径时,容易输错文件名。可以输入文件名的首字母,然后按Tab
键,系统会自动补全匹配的文件名。
如果当前目录下有多个以相同首字母开头
的文件或目录,就需要输入更多字符来进一步指定
,再次按Tab
键即可精确补全。
touch (创建文件)
语法:touch [选项]... 文件...
功能:
touch
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
举例:
touch test.txt
rm (删除文件)
语法:rm [-f-i-r-v] [dirName/dir]
功能:删除文件或目录
常用选项:
-f
即使文件属性为只读(即写保护),亦直接删除-i
删除前逐一询问确认-r
删除目录及其下所有文件
举例:
rm test.txt
rm
还可以删除多级目录:
# 创建多级目录
mkdir -p# 递归删除, 表示删除指定目录及其所有子目录和文件
rm -r# 强制删除, 表示不提示用户确认, 即使文件不存在也不会报错
rm -rf
重要注意事项:
-
千万不要运行
rm -rf /
,尤其是在公司的生产服务器上。 -
理解递归删除的过程:
-
先手动创建如下目录结构:
test ├── a │ ├── a1 │ │ ├── 1.txt │ │ └── 2.txt │ └── a2 ├── b │ ├── b1 │ │ ├── 1.txt │ │ └── 2.txt │ └── b2 └── c
-
使用
rm -ri
命令删除test
,观察删除的顺序。
-
rz (上传文件)
执行 rz
之前,确保安装 lrzsz
,通过以下命令安装 lrzsz
包:
sudo apt update
sudo apt install lrzsz # 表示安装 rz sz 这两个命令
此时,输入 rz -E
:
注意,rz
和 rz -E
的区别:
rz
:
- 默认情况下,如果目标目录中已经存在同名文件,
rz
会覆盖原有文件。rz -E
:
- 使用
-E
选项时,如果目标目录中已经存在同名文件,rz
不会覆盖原有文件,而是在新上传的文件名后加上.0
,再次上传则会加上.
或者直接拖到文件到服务器:
当通过拖动文件上传到服务器时,默认会使用rz -E
,而不是rz
:
因此,多次拖动同一个文件上传时,会生成该文件的副本,而不是覆盖原有文件:
sz (下载文件)
在 Linux 服务器上安装lrzsz
后,不仅可以使用rz
上传文件,还可以使用sz
将服务器上的文件下载到本地:
mv (移动/重命名文件)
语法:mv [选项] 源文件或目录 目标文件或目录
功能:
如果 mv
命令中第二个参数类型的不同(是目标文件还是目标目录),mv
命令将文件重命名或将其移至一个新的目录中。
如果目标路径不存在,mv
会将源文件重命名为目标路径
。
如果第二个参数是已存在的目录名
时,mv
命令可以接受多个源文件或目录
作为参数,并将它们全部移动到目标目录
中。
常用选项:
-f
强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i
若目标文件 (destination) 已经存在时,就会询问是否覆盖!
举例:
mv test1.txt test2.txt
cat (显示文件全部内容)
语法:cat [选项] [文件]
功能:查看目标文件的内容
常用选项:
-n
对输出的所有行编号
举例:
cat text.txt
more (进度条显示文件内容)
more
是一个简单的分页查看工具,用于在终端中逐页显示文件内容。它适合查看大型文件,特别是当文件内容较多,无法一次性在屏幕上显示时。
主要功能:
-
逐页显示内容:
more
会逐页显示文件内容,每一页显示的内容取决于终端窗口的大小。- 当一页内容显示完毕后,用户需要按
Enter
键或空格
键来查看下一页。
-
基本交互:
Enter
键:逐行向下滚动。空格
键:显示下一页。q
键:退出more
,返回到命令行。
使用方法
more filename
filename
:要查看的文件名。
less (滚轮显示文章内容)
less text.txt
text.txt
:要查看的文件名;
在Linux中,
less text.txt
命令用于分页查看文件内容
,特别是当文件内容较多,无法一次性在屏幕上显示时。
less
是一个功能强大的文本查看工具,提供了比more
更丰富的交互功能:
-
分页显示内容:
less
会逐页显示文件内容,每一页显示的内容取决于终端窗口的大小。- 当一页内容显示完毕后,用户可以使用各种快捷键进行导航。
-
交互功能:
Enter
键:逐行向下滚动。空格
键:显示下一页。b
键:向上翻页。/
键:向下搜索指定的文本。?
键:向上搜索指定的文本。q
键:退出less
,返回到命令行。
head (显示文件前面的内容)
head
命令用于显示文章前面的行数,默认显示前十行:
# 默认显示前十行
head test.txt # 指定显示前二十行
head -20 test.txt
tail (显示文件后面的内容)
语法:tail [必要参数] [选择参数] [文件]
功能:用于显示指定文件末尾内容
,不指定文件时,作为输入信息进行处理。常用于查看日志文件。
选项:
-f
循环读取-n<行数>
显示行数
举例:
tail -10 test.txt
cp (复制文件或目录)
语法:cp [选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:
cp
指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。- 若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
常用选项:
-f
或--force
强行复制文件或目录,不论目的文件或目录是否已经存在-i
或--interactive
覆盖文件之前先询问用户-r
递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理-R
或--recursive
递归处理,将指定目录下的文件及子目录一并处理
举例:
cp test1.txt test2.txt
vim (编辑文件)
vim
是一个知名的文本编辑器。使用 vim
可以进行文本编辑。vim
就相当于 Windows 的记事本,只不过功能比记事本强大一些。
(1) 创建文件 / 打开文件
vim [文件名]
回车后,进入编辑页面;
(2) 进入插入模式
vim
打开文件后默认是普通模式,需要进入插入模式才能进行文本编辑。
普通模式
下键盘的按键表示一些特殊功能的快捷键,例如按下j
并不是输入字母 “j”,而是表示光标往下移动一行
;
使用 i
键可以进入插入模式(左下角提示 --INSERT--
),然后就可以像记事本
一样正常编辑了:
(3) 保存
在插入模式下不能保存文件,需要先回到普通模式。
- 按下
Esc
回到普通模式。 - 在普通模式下输入
:w
,再按下回车,即可保存文件。
# 回到普通模式保存文件
:w
(4) 退出
在插入模式下不能退出,需要先回到普通模式。
退出时,分以下情况:
# 1. 文件未修改:输入 :q,再按下回车,即可退出。
:q# 2. 文件修改并保存:使用 :wq 同时执行保存和退出。
:wq# 3. 文件修改,但不希望保存:使用 :q! 进行强制退出。
:q!
grep (查找文件指定字符串)
语法:grep [参数]... [文件]...
功能:用于查找文件中是否包含指定字符串
,并显示对应的行。
选项:
-n<行数>
显示的行数-w
全字匹配。要求整个单词都完全相同的结果才能匹配出来,而不仅仅是单词的一部分。-r
递归查找。可以搜索多级目录下的所有文件。--color
高亮查找到的结果--include
指定查找某些文件--exclude
指定排除某些文件
举例:
grep "hello" Hello.java
ps (查看系统运行进程)
语法:ps [参数]...
功能:用于查看当前系统上运行的进程。
选项:
a
显示一个终端的所有进程u
以用户为主的格式来显示程序状况x
显示所有程序,不止是会话中的进程e
显示所有进程,包括系统守护进程f
显示完整格式输出
举例:
ps aux # 显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"
# | 表示管道, 将 ps aux 的输出结果, 作为 grep 命令的输入
netstat (查看系统网络状态)
语法:netstat [参数]...
功能:查看系统上的网络状态。
选项:
-a
显示所有正在或不在侦听的套接字-n
显示数字形式地址,而不是去解析主机、端口或用户名-p
显示套接字所属进程的PID
和名称
举例:
netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"
管道
管道是一种古老的“进程间通信”方式。在 Linux 指令中可以使用 |
作为管道标记。
意思是将前一个指令标准输出的内容,作为第二个指令的标准输入内容。
举例:
ps -ef | grep "java"
ps -ef | head -10
tail -f log.txt | grep "Exception"
apt(管理软件包)
apt
(Advanced Packaging Tool)是 Linux 软件包管理工具,用于在 Ubuntu、Debian 和相关 Linux 发行版上安装、更新、删除和管理 deb 软件包。
大多数 apt
命令必须以具有 sudo
权限的用户身份运行。
apt 常用命令
列出所有软件包
apt list
这个命令输出所有包的列表,内容比较多,可以使用 grep
命令过滤输出。
apt list | grep "java"
更新软件包数据库
sudo apt-get update
apt
是基于可用软件包数据库进行操作的。
如果该数据库未更新,系统将无法知晓是否有新的软件包版本可用。因此,在安装任何 Linux 系统后,首要任务是更新 apt
数据库。更新 apt
数据库的命令是:
sudo apt update
执行更新命令时,你会看到系统从各个服务器检索软件包信息的过程。如果已切换到 root
用户,执行命令时则无需再加 sudo
。
su 切换到 root 用户
sudo su
使用该命令可以切换到系统管理员(root
)用户,执行需要管理员权限的操作。
apt install 安装软件包
sudo apt install package_name
使用该命令可以安装指定的软件包。package_name
是要安装的软件包名称。
apt remove 移除软件包
sudo apt remove package_name
该命令用于卸载指定的软件包。remove
命令会卸载软件包,但可能会保留其配置文件。
如果需要同时删除软件包及其所有配置文件,应使用以下命令:
sudo apt purge package_name
purge
命令不仅会卸载软件包,还会删除其所有配置文件,从而彻底清除该软件包的所有痕迹。
apt remove 和 apt purge 的区别
apt remove
删除包的二进制文件,它留下了残留的配置文件。apt purge
删除与包相关的所有内容,包括配置文件。- 如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使用
apt purge
。 - 通常使用
apt remove
就足够了。
总结
sudo apt install package_name
:安装软件包。sudo apt remove package_name
:卸载软件包,但保留配置文件。sudo apt purge package_name
:卸载软件包并删除所有配置文件。
通过上述命令,可以灵活地管理 Linux 系统中的软件包,确保系统环境的整洁和稳定。
nohup (后台运行指定程序)
nohup
:后台运行程序。用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
语法格式:
nohup Command [Arg …] [&]
参数说明:
Command
:要执行的命令。Arg
:一些参数,可以指定输出文件。&
:让命令在后台执行,终端退出后命令仍旧执行。
示例:
nohup java -jar blog.jar >/logs &
Linux 可以通过 > 把需要输出的内容写到指定文件中
。这样的操作称为“重定向”
。