SSH终端常用命令
| Ctrl+a | 光标移动到行首 |
|---|---|
| Ctrl+e | 光标移动到行尾 |
| Ctrl+c | 终止当前程序 |
| Ctrl+d | 删除光标前的字符,或者推出当前中断 |
| Ctrl+l | 清屏 |
| Ctrl+u | 剪切光标之前的字符 |
| Ctrl+k | 剪切光标之后的字符 |
| Ctrl+y | 复制u/k操作中的内容 |
| Ctrl+r | 查找最近用过的命令 |
| Ctrl+shift+c | 复制 |
| Ctrl+shift+v | 粘贴 |
| tab | 补全命令或路径 |
| 键盘↑和↓键 | 切换使用过的命令 |
Linux系统的文件目录结构
bin: 全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。
dev: 该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符) 。
etc: 该目录主要存储一些配置文件。
home: 表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。
proc: process,表示进程,该目录中存储的是Linux运行时候的进程。
root: 该目录是root用户自己的家目录。
sbin: 全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。
tmp: 表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
usr: 存放的是用户自己安装的软件。类似于windows下的program files。
var: 存放的程序/系统的日志文件的目录。
Mnt: 当外接设备需要挂载的时候,就需要挂载到mnt目录下。
Linux的文件管理
1、pwd命令
用法:#pwd (print working directory,打印查看当前工作目录)
2、ls命令
用法1:#ls
含义:列出当前工作目录下的所有文件/文件夹的名称
用法2:#ls 路径
含义:列出指定路径下的所有文件/文件夹的名称
关于路径(重要):
路径可以分为两种:相对路径、绝对路径。
相对路径: 相对首先得有一个参照物(一般就是当前的工作路径);
相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。
绝对路径: 绝对路径不需要参照物,直接从根“/”开始寻找对应路径
~/:表示主目录,也就是当前登录用户的用户目录。
./:当前目录
../:上一级用户
用法3:#ls 选项 路径
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
选项解释:
-l :表示list ,表示以详细列表的形式进行展示
-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
-h:以可读性较高的形式显示文件大小
选项可以一起用,与顺序无关。
3、mkdir命令
指令:mkdir(make directory,创建目录)
语法1:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
语法2:#mkdir -p 路径
含义:一次性创建多层目录,添加-p参数,否则会报错
4、touch命令
指令:touch
作用:创建文件
语法: #touch 文件路径 【路径可以是直接的文件名也可以是路径】
5、cp命令
指令:cp(copy,复制)
作用:复制文件/文件夹到指定的位置
语法: #cp 被复制的文档路径 文档被复制到的路径
注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略。
6、mv命令
指令:mv(move,移动,剪切)
作用:移动文档到新的位置
语法: #mv 需要移动的文档路径 需要保存的位置路径
7、rm命令
指令:rm (remove,移除、删除)
作用:移除/删除文档
语法:#rm 选项 需要移除的文档路径
选项:
- -f:force,强制删除,不提示是否删除
- -r:表示递归
8、zip/unzip命令
作用:以zip格式将文件打包压缩或解压zip
zip是Windows和Linux默认都支持的格式,兼容性好
9、tar命令
作用:以gzip打包压缩或解压文件
参数含义:
-x 解包
-v 显示详细信息
-f 指定文件名
-z 解压缩
说明:gzip格式是Linux中常用的压缩格式,在网上下载的程序包一般都是这个格式,一般名字为XXX.tar.gz
10、wget命令
作用:下载远程文件到Linux主机
命令格式: wget [参数] [URL地址]
Linux文件权限设置
总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner(所有者)、group(所属组)、others(其他),且3种身份各有read(读)、write(写)、execute(执行)等权限。
Linux的权限查看
权限设置
语法:#chmod 选项 权限模式 文档
注意事项:
常用选项:
-R:递归设置权限 (当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
注意点:如果想要给文档设置权限,操作者要么是root 用户,要么就是文档的所有者。
字母形式
给谁设置:
u:表示所有者身份owner(user)
g:表示给所有者同组用户设置(group)
o:表示others,给其他用户设置权限
a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限分配方式:
+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】
例如:
①#chmod u+x,g+rx,o+r frp_0.33.0_linux_amd64.tar.gz
②#chmod u=rwx,g=rx,o=r frp_0.33.0_linux_amd64.tar.gz
数字形式
经常会在一些技术性的网页上看到类似于 #chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)。
| 读:r | 4 |
|---|---|
| 写:w | 2 |
| 执行:x | 1 |
| 没有任何权限 | 0 |
例如:需要给frp_0.33.0_linux_amd64.tar.gz设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
全部权限(u ):读+ 写+ 执行=4+2+1=7
读和执行(g ):读+ 执行=4+1=5
读权限(o ):读=4
由上得知权限为:754
修改所有者和所属组
属主:所属的用户(文件的主人)
属组:所属的用户组
前面的那个root就是属主
后面的那个root就是属组
这两项信息在文档创建的时候会使用创建者的信息(用户名、用户所属的主组名称)
如果有时候去删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改。
chown(重点)
作用:更改文档的所有者
语法:#chown -R username 文档路径
案例:将刚才root用户创建的oo目录,所有者更改为test
#chown test oo/
chgrp
作用:更改文档的所属组
语法:#chgrp -R groupname 文档的路径
案例:将root用户创建的oo目录,所有者更改为test,并且将所属组也改为test
#chgrp test oo/
思考,如何通过一个命令实现既可以更改所有者,也可以修改所属组呢?
答:可以实现的,通过chown命令
语法:#chown -R username:groupname 文档路径
vim编辑器
vim的三种模式
Vim中存在三种模式:命令模式、编辑模式、末行模式。
命令模式: 在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
编辑模式: 在该模式下可以对文件的内容进行编辑;
末行模式: 可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
Vim的打开文件的方式(4种,要求掌握的就前三种):
#vim 文件路径 作用:打开指定的文件
#vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
#vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
#vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
注意:先复制出一个/etc/passwd文件,复制当前家目录下(千万不要在etc下直接修改!!!)
后续一切vim命令都是基于/root/passwd文件进行操作。
命令模式
注意:该模式是打开文件的第一个看到的模式(打开文件即可进入)
退出方式:输入:q 按下回车即可
光标移动
①光标移动到行首
按键:shift + 6 或 ^(T字母上面的6,不要按小键盘的6)
②光标移动到行尾
按键:shift + 4 或 $(R字母的左上角的4,不是小键盘的4)
③光标移动到首行
按键:gg
④光标移动到末行
按键:G
⑤翻屏
向上翻屏:按键ctrl + b (before) 或 PgUp
向下翻屏:按键ctrl + f (after) 或 PgDn
复制操作
①复制光标所在行
按键:yy
粘贴:在想要粘贴的地方按下p键
②以光标所在行为准(包含当前行),向下复制指定的行数
按键:数字+yy
③可视化复制
按键:ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓← →方向键来选中需要复制的区块,按下y键进行复制,最后按下p键粘贴
剪切/删除
①剪切/ 删除光标所在行
按键:dd (删除之后下一行上移)
注意:dd严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果。
②剪切/ 删除光标所在行为准(包含当前行),向下删除/ 剪切指定的行
按键:数字+dd (删除之后下一行上移)
③剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移
按键:D (删除之后当前行会变成空白行)
④可视化删除
按键:ctrl + v(可视块)或V(可视行)或v(可视),上下左右移动,按下D表示删除选中行,d表示删选中块
撤销/恢复
撤销:u
恢复:ctrl + r 恢复(取消)之前的撤销操作
扩展1:光标的快速移动
①快速将光标移动到指定的行
按键:数字 + G
②以当前光标为准向上/ 向下移动n 行
按键:数字 + ↑ ,数字 + ↓
③以当前光标为准向左/向右移动n字符
按键:数字 + ←,数字 + →
④末行模式下的快速移动方式:移动到指定的行
按键:输入英文“:”,其后输入行数数字,按下回车
编辑模式
在命令模式下按【i】键可以进入编辑模式。
重点看前2个进入方式:i(insert)、a(after)。
退出方式:按下esc键 回到命令模式
末行模式
进入方式:由命令模式进入,按下“:”或者“/(表示查找)”即可进入
退出方式:
a. 按下esc
b. 连按2次esc键
c. 删除末行全部输入字符
①保存操作(write)
输入:“:w” 保存文件
输入:“:w 路径” 另存为
②退出(quit)
输入:“:q” 退出文件
③保存并退出
输入:“:wq” 保存并且退出
④强制 (!)
输入:“:q!” 表示强制退出,刚才做的修改操作不做保存
⑤调用外部命令
输入:“:!外部命令”
例如:当外部命令执行结束之后按下任意键回到vim编辑器打开的内容
⑥搜索/查找
输入:“/关键词”
例如:我想在passwd文件中搜索“sbin”关键词
在搜索结果中切换上/ 下一个结果:N/n (next )
如果需要取消高亮,则需要输入:“:nohl”【no highlight】
⑦替换
:s/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
:s/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
:%s/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内容
:%s/搜索的关键词/新的内容/g 替换整个文档的符合条件的内容
%表示整个文件
g表示全局(global)
⑧显示行号(临时)
输入:“ :set nu”[number]
如果想取消显示,则输入:“:set nonu”
⑨扩展2:使用vim同时打开多个文件,在末行模式下进行切换文件
查看当前已经打开的文件名称:“:files ”
在%a的位置有2种显示可能
%a:a=active,表示当前正在打开的文件;
#:表示上一个打开的文件
切换文件的方式:
a. 如果需要指定切换文件的名称,则可以输入:“:open 已经打开的文件名”
b. 可以通过其他命令来切换上一个文件/ 下一个文件
输入:“:bn”切换到下一个文件(back next)
输入:“:bp”切换到上一个文件(back prev)
vim异常退出
什么是异常退出:在编辑文件之后并没有正常的去wq(保存退出),而是遇到突然关闭终端或者断电的情况,则会显示下面的效果,这个情况称之为异常退出:
解决办法:将交换文件(在编程过程中产生的临时文件)删除掉即可
#rm -f .文件名.swp
交换文件的文件名: .文件名.swp 和原来的文件在同一个目录,且为隐藏文件
vim退出方式
回顾:之前vim中退出编辑的文件可以使用“:q”或者“:wq”。
①“:x”在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
②如果文件没有被修改,但是使用wq进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用x进行退出的话,则文件修改时间不会被更新的;主要是会混淆用户对文件的修改时间的认定。
因此建议以后使用“:x”来进行对文件的保存退出。
但是:小写的x,不要使用大写X,大写X表示对文件进行加密操作。
常用命令
1、passwd命令
作用:修改用户密码
语法:passwd [用户名]
注意:
1.管理员root可以改所有人的密码,密码没有长度要求;
2.普通用户可以改自己密码,密码最小8位;
3.敲密码的时候不会显示任何字符,输入完成后直接回车。
2、man命令
作用:manual,手册(包含了Linux中全部命令手册)查询命令的用法
语法:#man 命令
案例:通过man命令查询ls指令的用法
#man ls
按空格键翻页查看,上下键滚动查看,退出按下q键。
3、history命令
语法:#history
作用1:查看历史指令
作用2:执行历史指令
语法:![number数字] 直接执行执行过的命令
4、clear命令
作用:清除终端中已经存在的命令和结果(信息)。
效果和快捷键Ctrl + L是一样的。
语法:clear
需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
5、reboot命令
作用:重新启动计算机
语法1 :#reboot 重启
语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
6、ps -ef命令
作用:主要是查看服务器的进程信息
指令:ps
选项含义:
-e:等价于“-A”,表示列出全部的进程
-f:显示全部的列(显示全字段)
列的含义:
UID:该进程执行的用户id;
PID:进程id;
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
C:Cpu的占用率,其形式是百分数;
STIME:进行的启动时间;
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间;
CMD:该进程的名称或者对应的路径;
#ps -ef|grep [进程名称]
7、kill命令
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
语法: #kill [进程PID] (PID可以用上面的ps -ef命令查看)
与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall
语法: #killall [进程名称]
8、df命令
作用:查看磁盘的空间
语法:#df -h -h表示以可读性较高的形式展示大小
9、su命令
作用:切换用户
语法:su [用户]
10、管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。“ | ”符号前面的内容输出作为“ | ”后面的内容的输入,然后输出结果。
10、ping命令
作用:测试网络的连通性
语法:ping [选项] [IP地址或者域名]
11、ifconfig命令
作用:查看网卡信息
语法:#ifconfig
12、netstat命令
作用:显示网络相关信息
语法:netstat [选项]
选项
-tlun 查看本机监听的端口
-an 查看本机所有的网络连接
-rn 查看本机路由表
13、shutdown命令
作用:关机或重启
语法:shutdown [选项] 时间
选项
-c 取消前一个关机命令
-h 关机
-r 重启
RPM包
命名规则
RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。
RPM 二进制包命名的一般格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
例如,RPM 包的名称是httpd-2.2.15-15.el6.centos.1.i686.rpm,其中:
-
httped:软件包名。这里需要注意,httped 是包名,而 httpd-2.2.15-15.el6.centos.1.i686.rpm 通常称为包全名,包名和包全名是不同的,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。
-
2.2.15:包的版本号,版本号的格式通常为
主版本号.次版本号.修正号。 -
15:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
-
el*:软件发行商,el6 表示此包是由 Red Hat 公司发布,适合在 RHEL 6.x (Red Hat Enterprise Unux) 和 CentOS 6.x 上使用。
-
centos:表示此包适用于 CentOS 系统。
-
i686:表示此包使用的硬件平台,目前的 RPM 包支持的平台如表 1 所示:
平台名称 适用平台信息 i386 386 以上的计算机都可以安装 i586 686 以上的计算机都可以安装 i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多 x86_64 64 位 CPU 可以安装 noarch 没有硬件限制 -
rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装。此外,还有以 src.rpm 作为扩展名的 RPM 包,这表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装。
RPM包默认安装路径
通常情况下,RPM 包采用系统默认的安装路径,所有安装文件会按照类别分散安装到表 1 所示的目录中。
| 安装路径 | 含 义 |
|---|---|
| /etc/ | 配置文件安装目录 |
| /usr/bin/ | 可执行的命令安装目录 |
| /usr/lib/ | 程序所使用的函数库保存位置 |
| /usr/share/doc/ | 基本的软件使用手册保存位置 |
| /usr/share/man/ | 帮助文件保存位置 |
RPM 包的默认安装路径是可以通过命令查询的。
除此之外,RPM 包也支持手动指定安装路径,但此方式并不推荐。因为一旦手动指定安装路径,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需要进行手工配置才能被系统识别),得不偿失。
与 RPM 包不同,源码包的安装通常采用手动指定安装路径(习惯安装到 /usr/local/ 中)的方式。既然安装路径不同,同一 apache 程序的源码包和 RPM 包就可以安装到一台 Linux 服务器上(但同一时间只能开启一个,因为它们需要占用同一个 80 端口)。
实际情况中,一台服务器几乎不会同时包含两个 apache 程序,管理员不好管理,还会占用过多的服务器磁盘空间
RPM 包的安装
安装 RPM 的命令格式为:
[root@localhost ~]# rpm -ivh 包全名
注意一定是包全名。涉及到包全名的命令,一定要注意路径,可能软件包在光盘中,因此需提前做好设备的挂载工作。
此命令中各选项参数的含义为:
- -i:安装(install);
- -v:显示更详细的信息(verbose);
- -h:打印 #,显示安装进度(hash);
如果还有其他安装要求(比如强制安装某软件而不管它是否有依赖性),可以通过以下选项进行调整:
- -nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
- -replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报"某个文件已经存在"的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
- -replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
- -force:强制安装。不管是否已经安装,都重新安装。也就是 -replacefiles 和 -replacepkgs 的综合。
- -test:测试安装。不会实际安装,只是检测一下依赖性。
- -prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。