3.11 文件上传下载
1、sftp是一个交互式文件传输程式
它类似于ftp传输协议,属于ssh, 但它进行加密传输,相对FTP来讲有更高的安全性。
sftp用法
如果有服务器的端口不是默认的22,请在sftp后面加-P 端口号 即可。
将223.6.6.6服务器文件下载到223.5.5.5的home目录;
sftp> get /var/www/renwole.txt /home/
将223.5.5.5服务器文件上传到223.6.6.6服务器的mnt目录;
sftp> put /home/renwole.txt /mnt/
你如果不知道远程主机的目录是什么样, ls命令可以列出223.6.6.6服务器的当前目录列表。例如:
改变路径可以用cd ,改变本机路径可以用 cd.. 例如;
sftp> cd
如果想退出,例如:
# exit //退出机器,返回你原始机器界面。
2、scp具有和ssh一样的验证机制,从而可以实现2台机器安全的远程拷贝文件
scp可以概括为:scp -P 端口 文件路径 用户名@主机地址:远程目录
如果想拷贝本地文件到另外一台ssh终端,可以使用以下命令;
如果你反过来操作,把远程主机的文件拷贝到当前系统,操作命令以下;
# scp root@223.6.6.6:/renwole123/mariadb.tar.gz /renwole
如果你想拷贝文件夹以及文件夹内的所有文件,就加参数 -r 如果你的端口号不是22,那么需要在scp后加 个 -P (区分大小写)端口号。建议加-C选项,因为这样可以启用SSH的压缩功能;传输速度更快,例如
# scp -P 6632 -C /renwole/mariadb root@223.6.6.6:/renwole123/
3、rz命令与sz命令
(1)rz命令
rz命令(Receive ZMODEM),使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器,注 意不能上传文件夹。
当我们使用虚拟终端软件,如Xshell、SecureCRT或PuTTY来连接远程服务器后,使用rz命令可以上传本 地文件到远程服务器。输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个 文件,上传到服务器的路径为当前执行rz命令的目录。
此外,可以在虚拟终端软件设置上传时默认加载本地路径和下载的路径。如SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。
命令格式:
rz [选项] [filelist]
选项说明:
-+, --append:将文件内容追加到已存在的同名文件
-a,--ascii:以文本方式传输
-b, --binary:以二进制方式传输,推荐使用
--delay-startup N:等待N秒
-e, --escape:对所有控制字符转义,建议使用
-E, --rename:已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect:对ZMODEM协议有效,如果目标文件已存在则跳过
- q, --quiet:安静执行,不输出提示信息
-v, --verbose:输出传输过程中的提示信息
-y, --overwrite:存在同名文件则替换
-X, --xmodem:使用XMODEM协议
--ymodem:使用YMODEM协议
-Z, --zmodem:使用ZMODEM协议
--version:显示版本信息
--h, --help:显示帮助信息
(2)sz命令
sz命令(Send ZMODEM)通过ZMODEM协议,可将多个文件从远程服务器下载到本地。注意不能下载 文件夹,如果下载文件夹,请先打包再下载。
命令选项基本与rz相同,请参考上文rz的命令选项或者sz的manual,或者运行命令sz -h查看。
常用示例:下载多个文件
sz file1 file2 file3
sz和rz命令在实际应用开发中非常实用,有时候我们会经常跑脚本统计数据,需要上传和下载一些大数 据量的数据,这时候这两个命令就非常有用了
有的机器可能不能使用 rz/sz 命令,这个时候我们就需要安装 lrzsz
执行以下命令:
yum install lrzsz -y
3.12 数据流重定向
1.重定向操作符——“>”、“>>”、“<”、“<<”
在Linux系统中
默认的输入设备(标准输入)是键盘
默认的输出设备(标准输出)是屏幕
利用重定向操作符可以重新定义命令涉及的默认的输入和输出设备对象,即重定向操作符可以将命令输
和输出数据流从默认设备重定向到其他位置。
重定向操作符本身不是一条命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号,
“>”、“>>”称为输出重定向操作符,
“<”、“<<”称为输入重定向操作符。
2、标准输出(standard output,简称stdout)指的是命令执行所回传正确的信息,而标准错误输出 (standard error output,简称stderr)可理解为命令执行失败后,所回传的错误信息。
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要数据流重定向将这两条 数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传送 所用的特殊字符如下所示:
标准输出(stdout):代码为1,使用>或>>;
标准错误输出(stderr):代码为2,使用2>或2>>。
3、 标准输入、标准输出、标准错误:
第四章 在shell中获取帮助
4.1 什么是shell
shell:壳,命令解释器,负责解析用户输入的命令
type 查看命令是file、alias还是builtin
内置命令 (shell内置)。
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件。
区别:shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多。
type -t 仅列出命令执行时的依据
type -a 列出当前命令可以如何执行
那命令怎么知道是那个路径下的命令呢?系统为了让用户在命令行快速方便地执行命令,用一种机制来 实现,这种机制就叫做环境变量。
4.2 shell中的变量
变量简单说就是让某一个特定字符串代表不固定的内容。
变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
环境变量也可称为全局变量,可以在创建它们的Shell 及其派生出来的任意子进程 Shell 中使用,环境变 量又可分为自定义环境变量和 bash 内置的环境变量。
普通变量也可称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在 开发脚本程序时创建。
1、环境变量 环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell 命令的正确 执行,Shell 通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是 系统全局变量,可用于所有子进程中,这包括编辑器、Shell 脚本和各类应用。
环境变量可以在命令行中设置和创建,但用户退出o命令时这些变量值就会丢失,因此,如果希望永久保 存环境变量,可在用户家目录下的 .bash_profile 或 .bashrc (非用户登录模式特有,例如远程 SSH)文件中,或者全局配置 /etc/bashrc (非用户登录模式特有,例如远程 SSH)或 /etc/profile 文件中定义,在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化。
设置变量(用“=”连接;等号两边不能有空格符;变量名的规则:只能使用数字、字母和下划线,且不能 用数字开头;)
按照系统规范,所有环境变量的名字均采用大写形式,在将环境变量应用于用户进程程序之前,都应该 用 expirt 命令导出定义,例如:正确的环境变量定义方法为 exprot OLDGIRL=1
(1)设置环境变量 如果想要设置环境变量,就要在给变量赋值之后或在设置变量时使用 export 命令,另外,除了 export 命令。带 -x 选项的 declare 内置命令也可以完成同样的功能(注意:此处不要再前面加 $)
(2)设置环境变量(永久生效)
用户的环境变量配置:
全局的环境变量配置
若要在登陆后初始化或显示加载内容,则把脚本文件放在 /etc/profile.d/ 下即可(无需加载执行权 限)
生产场景下(在Java环境中),自定义环境变量的示例。
显示与取消环境变量
(1)通过 echo 或 printf 打印环境变量
(2)用 env 或 set 显示默认的环境变量
(3)用 unset 消除本地变量和环境变量
环境变量初始化与对应文件的生效顺序
在登录Linux系统并启动一个 bash shell 时,默认情况下 bash 会在若干个文件中查找环境变量的设置, 这些文件可统称为系统环境文件,bash 检查的环境变量文件的情况取决于系统运行 Shell 的方式,系统 运行 Shell 的方式有 3 种。
(1)通过系统用户登录后默认运行的 Shell
(2)非登录交互式运行 Shell(运行bash命令)
(3)执行脚本运行非交互式 Shell
2、普通变量
定义本地变量
变量的赋值,一般有五种写法:
变量名一般是由字母、数字、下划线组成的,可以以字母或下划线开
4.3 命令别名
别名是命令的快捷方式。为那些需要经常执行,并需要很长时间输入的长命令创建快捷方式很有用。语 法是:
alias 别名=’原命令 -选项/参数’
查看设置的别名:alias
删除别名:unalias 别名
别名永久化(强烈推荐):
4.4 快捷键使用 1、history查阅命令历史记录 查询执行过的历史命令: 利用向上或向下光标键来进行查询。 第二种办法是执行“history [n]” 命令来查询。
4.4 快捷键使用
1、history查阅命令历史记录
查询执行过的历史命令: 利用向上或向下光标键来进行查询。
第二种办法是执行“history [n]” 命令来查询。
注意:如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录 下的用户主目录下的“.bash_history”文件,该文件记录了用户所使用的命令和历史信息。
2、断开长命令行
对于符号比较多的长命令,尽管系统在到达行尾时会自动将长命令行换到下一行,但也可以使用反斜杠“\”再 加回车,将一个较长的命令分成多行表达,增强命令的可读性,换行后系统自动显示提示符“>”,表示正在输入 一个长命令,此时可继续在新行上输入命令的后续部分。
3、在一行输入多个命令 若要在一行上输入和执行多条较短的命令,可使用分号来分隔命令。
4、快捷方式
xshell中无法使用alt+.的处理方法:
打开会话属性
默认快捷键 alt + p
进入 终端 -> 键盘
找到 元键仿真
勾选 将 左ALT 用作 Meta 键
保存设置
结果
1. 命令行的 alt 快捷键 可以通过 左alt 触发
2. xshell 的 alt 快捷键, 可以通过 右alt 触发
3. alt 不再冲突
==生产环境中,history命令记录操作时间、操作用户、操作IP==
(1)/etc/profile文件中加入以下内容
(2)执行:source /etc/profile
【效果】
4.5 Linux 通配符
通配符是一种特殊语句,主要有星号(*)、问号(?)等表示,用来模糊搜索文件,当查找目录或文件时, 可以使用通配符来代替一个或多个真正字符。
作用范围:目录和文件名
常见通配符:常用通配符包括 "*"、"?" 、"[ ]"、 "[^ ]" 、"[! ]"和"{}",具体含义见下表
通配符具体含义及用法表
4.6 引号使用
4.7 命令帮助
1.查看命令的类型: type
Linux中对应的命令的类型分为内部命令和外部命令,外部命令对应的是path环境变量下可以找到的与 命令名称一致的文件的名称,其中每一个外部命令对应的是一个可执行的程序。内部命令是外部命令中 含有的命令的,比如bash中存在内部的命令cd ,内部命令的对应的信息展示固定。
#help可以列出系统所有内部命令
内部命令一般可以使用 help 命令,查看帮助
2.命令帮助
1)help内部命令帮助,查看bash内部命令帮助
用法:1.help内部命令
# help cd
用法2:命令 ——help
即命令的“——help”选项,适用于大多数外部命令
2)man用来提供在线帮助,使用权限是所有用户。在Linux系统中存储着一部联机使用的手册,以 供用户在终端上查找。使用man命令可以调阅其中的帮助信息,非常方便实用。
1)用法:man命令
man[-acdfhkktwW] [-m system] [-p string] [-C config_file] [-Mpath] [-P pager] [-S section_list][section] name...
(2)示例:
# man ls
(3)参数
-C config_file:指定设定文件man.conf,缺省值是/etc/man.conf。
在man命令帮助信息的界面中,所包含的常用操作按键及其用途如表2-2所示。
表2-2 man命令中常用按键以及作用
一般来讲,使用man命令查看到的帮助内容信息都会很长很多,如果读者不了解帮助文档信息的目录结 构和操作方法,乍一看到这么多信息可能会感到相当困惑。man命令的帮助信息的结构如表2-3所示。
表2-3 man命令中帮助信息的结构以及意义
3)pinfo
使用pinfo命令可以查看info文件。pinfo命令将搜索当前目 录、/usr/share/info、/usr/info、/usr/local/share/info、/usr/local/info及/opt/info等目录。
info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一 个小章节。
命令语法:
pinfo[选项][info|manua]
pinfo命令选项含义
第五章 用户和组管理
5.1 Linux中的用户和组的分类
1.Linux下的用户可以分为三类:
超级用户——用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下 才用超级用户登录,以避免系统出现安全问题。
系统用户(伪用户)——是Linux系统正常工作所必需的内建的用户。
主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户。
系统用户不能用来登录。
普通用户——是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。 2.Linux中的组有以下三种:
基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基 本组,基本组只容纳一个用户。当把其他用户加入到该组中,则基本组就变成了附加组。
附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。
系统组:一般加入一些系统用户。
3.Linux中用户和用户组的配置文件
每个用户都有一个UID数值:
超级用户的UID——0
系统用户的UID——1~999
普通用户的UID——≥1000
在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。
1)用户账号文件——/etc/passwd
passwd 是一个文本文件,用于定义系统的用户账号,由于所有用户都对passwd有读权限,所以该文件 中只定义用户账号,而不保存口令。
passwd文件中:
每行定义一个用户账号
每行由7个字段组成,字段之间用“:”分隔,其格式如下:
账号名称:密码:UID:GID:个人资料:主目录:Shell
字段说明:
账号名称:用户登录Linux系统时使用的名称。
密码:以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密码占位符“x” 或“*”。若为“x”,说明密码经过了shadow的保护
UID:用户的标识,是一个数值,用它来区分不同的用户
GID:用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。
个人资料:可以记录用户的完整姓名、地址、办公室电话、家庭电话等个人信息。
主目录:类似Windows 的个人目录,通常是/home/username,这里username是用户名,用户执行 “cd~”命令时当前目录会切换到个人主目录。
Shell:定义用户登录后激活的Shell,默认是Bash Shell
2)用户密码文件——/etc/shadow
每行定义了一个用户信息,行中各字段用“:”隔开,其格式如下:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
为提高安全性,用户真实的密码采用MD5加密算法加密后,保存在配置文件中。
只有root用户可以读取。
/etc/shadow文件中的每行9个字段的含义分别为
Linux 查看用户上次修改密码的日期
3)用户组账号文件——/etc/group 系统中的每一个文件都有一个用户和一个组的属主。
使用“ls –l”命令可以看到每一个文件的属主和组。
系统中的每个组,在/etc/group文件中有一行记录
任何用户均可以读取用户组账户信息配置文件。
用户组的真实密码保存在/etc/gshadow配置文件中。
group文件字段说明:
5.2 用户登录Linux系统的过程
Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有:
/etc/passwd、 /etc/shadow、/etc/group
Linux用户登入系统过程实质是系统读取、核对这几个文件的过程,其过程如下:
出现登录系统的画面提示输入账号,输入账号与密码;
Linux先寻找/etc/passwd里面是否有该账号名,若没有则退出登录,若有则将该账号对应的UID(User ID)与 GID(Group ID)、用户主目录、shell设定一并读出;
Linux 进入/etc/shadow 里面找出登录账号与UID相对应的记录,然后核对一下刚刚输入的密码与此文件 的密码是否符合;以上核定没有问题,用户正式进入系统。