承接上一篇,这一篇文章也是基于《Linux从入门到精通》 何明编著 中国水利水电出版社 这本书写的,在写这篇文章的时候也查阅了一些相关资料,也自己动手实践了一下,不得不说,这本书讲得实在是通俗易懂,只要愿意去学,都能看懂。
有些时候可能需要在不同的操作系统中进行文件传输,比如,需要在windows10操作系统中将D盘中的ftp文件夹中的内容传输到Linux操作系统中。我们可以使用FTP协议,在不同系统之间传输文件,可以使用ftp命令在网络上将一台计算机上的文件复制到另外一台计算机上。
1、ftp命令的前置工作
如果在Linux系统中还没有安装vsftpd,可以在root用户下使用如下命令安装:
yum install vsftpd
在使用ftp传输文件时,既可以利用正文模式也可以使用二进制模式,ftp命令的语法非常简单,语法格式如下:
ftp 主机名或IP地址
然后在windows系统中启动DOS窗口,在DOS切换到你要传输的文件夹中
(我这里使用的是D盘的ftp文件夹)
接下来需要在Linux操作系统中查看ftp服务的状态,用如下命令:
# service vsftpd status
如果是Linux7,也可以使用如下命令:
# systemctl start vsftpd
然后用如下命令启动ftp服务:
# service vsftpd start
如果是Linux7系统,则可以使用systemctl start vsftpd命令,如果要在Linux7系统启动时开启ftp服务,可以使用systemctl enable vsftpd命令。
然后再在windows系统的DOS命令界面 输入最上面的ftp命令:
ftp 主机名或IP地址
如果显示 >ftp:connect:连接超时
也许是Linux系统中的防火墙没有关闭,可以关闭防火墙再试一次
查看防火墙状态:
# service firewalld status
# seriver iptables status
这样子说明防火墙在打开状态,需要用如下命令将其关闭:
# systemctl stop firewalld
这样子防火墙就关闭啦 。
使用ftp命令,链接到Linux系统中。
输入Linux用户名和密码,就可以连接成功。
PS:如果连接太久没有操作的话,连接可能会断开需要离开ftp操作,重新连接一次
ftp> bye //离开ftp操作
连接成功后,在ftp> 下,你可以使用一些Linux的命令,如:ls,cd,pwd,lcd
lcd命令是查看或改变本地系统的当前工作目录,如果lcd后面空白则是查看,如果后面跟着绝对目录则是改变。(本地系统是指与Linux连接的系统,这里是我的原本电脑系统Windows10)
2、 利用ftp将文件从本地传送到远程系统
完成第一部分的操作后,我们就成功地将window10(物理机的系统)与Centos7(虚拟机上的系统)连接起来了。(注:Centos是Linux的发行版之一)
ftp有两种传输文件的模式,一种是用来传输纯文本的ASCII模式,另一种是传输二进制文件的bin模式。
传输正文文件(纯文本文件)从本地发送到远程计算机系统,要用下面的命令切换到ASCII模式。
ftp> ascii
类似地切换到二进制模式的命令如下:
ftp> bin
现在切换到ascii码模式,我们可以传输纯文本文件了,传输命令很简单,就是put+文本名字,如下:
ftp> put game.txt
这样,当前目录下的文本game.txt就被传输到ftp登录的那个用户的家目录下
当然,当你要传输多个文件时,可以用mput+文件1名+文件2名,如下:
ftp> mput game.txt learning.txt
这样就可以同时将两个文件传输到远程系统中了。
现在让我们到二进制模式,如果你忘了如何到二进制模式,请翻到上面再看一看二进制与ascii码之间的切换命令。
换到二进制模式后,我们现在可以传输一些其他类型的文件了,比如jpg图片。
ftp> mput *.jpg
上面的 *代表了所有的意思,即将本目录所有后缀为jpg的文件都传送到远程系统。
既然有从本地传输文件到远程系统的操作,自然也有从远程系统传输文件到本地的操作
3、利用ftp将文件从远程系统传输到本地
其实操作与上面的大差不差
命令是get+文件名
一次传输多个文件用的命令是mget+文件名+文件名
同样的,在传输的时候要注意需要的是ascii模式还是bin模式
这个命令是将远程系统登录的用户的家目录中的文件传输到本地的当前目录。如果你要更改当前目录的话,就要用lcd命令
ftp> lcd F:\ftp\ftpcat
这样的话本地的当前目录由D盘的ftp改成了D盘中ftp文件下的子文件ftpcat。
传输文件时,无论是远程到本地还是本地到远程,需要注意的是:
1、注意看是否传输成功
上面显示的就是传输成功了
下面显示的传输就有些问题
这里是用mput命令传输多个文本,虽然也显示command successful,但是下面却显示
Failed to establish connection(无法建立连接)。
故在Linux中会建立两个文本game.txt和learning.txt,但是是空文本,数据全部丢失。
我能力有限,目前还没找到原因,待找到原因后再补充吧。(看到有些博主说是因为在Linux上,由于安全限制,,可能存在某些端口没有开启,所以出现阻塞。)
2、一个小知识,使用prompt命令可以将交互提示信息开启或者关闭。因为一次传输多个文件会有提示信息,如上图 mput game.txt? 后面需要回答y(yes)。关闭交互信息可以让你清净很多。
4、使用file命令确定文件中数据的类型
在Linux或NUIX系统中查看一个文件之前,要先确定该文件中数据的类型,之后再使用适当的命令或方法打开该文件。
与微软系统不同,在Linux系统中文件的扩展名(即后缀)并不代表文件的类型,也就是说扩展名与文件的类型并没有关系。因此在打开一个文件之前就要先确定该文件的类型,确定文件类型的命令:file+文件名
5、使用cat命令浏览正文文件的内容
如果你需要在Windows操作系统中浏览Linux中的文件,这个文件是正文文件,就可以使用cat(Concatenate的缩写)命令列出这个文件的内容。cat命令将一个或多个文件的内容显示在屏幕上,该命令会不停顿地以只读方式显示整个文件的内容。如果是显示多个文件,则所有文件会连续地显示在屏幕上。
ps:不要使用cat命令浏览二进制文件,否则可能会造成终端窗口突然停止工作,如果发生了这种情况,可以关闭该终端窗口,之后再开启一个新的终端窗口。
cat命令的用法也很简单,和之前的各种命令一样:
cat [options][files] cat命令是拥有选项的,它的后面可以跟随多个文件。
如果只是
[cat@cat ~]$ cat game.txt
那么它将显示出game.txt文件中的内容(game.txt文件是个正文文件)
如果在cat命令中加入-A的选项
[cat@cat ~]$ cat -A game.txt
则在显示文件内容的同时,还会显示原来看不见的特殊字符。
(小知识:Linux系统生成的正文文件的换行字符为$,微软系统生成的为^M$。因为game.txt文件时昨天从Windows系统中传输到Linux系统来的,所以它的换行字符为^M$。)
如果想要在显示结果中将没用的空行压缩掉,可以在cat命令中加入-s选项,该选项的功能是将两个或更多的相邻空行合并成一个空行。
cat命令的另一个可能会常用到的选项是-b,该选项的功能是在显示的每一行的最前面加上行号。
同时,cat命令也可以用来创建新文件。在cat命令和文件名之间要加上“>”,并且在这个正文文件中输入了3行文字。
[cat@cat ~]$ cat > news
The newest scientific discovery shows that God exists.
he is a super programmer,
and he creates our life by writing programs with life codes (genes)!!!
在新的一行的开始处,同时按下Ctrl+D(保存文件并退出),这样就可以创建一个明为news的新文件,而文件中的内容就是刚刚输入的正文文字。
这里需要指出的是,当一个命令执行的时间太长,需要强制中断该命令的执行,可以同时按下Ctrl+C来立即终止该命令的执行。
6、使用head命令浏览文件中的内容
如果你只想查看某个文件大概有些什么却不想浏览全部内容,可以使用head命令。
head命令将显示一个文件的前10行。用户可以使用-n选项来改变显示的行数。
[cat@cat ~]$ head -n 2 game.txt
这样你就可以查看game.txt文件的前2行内容了。
同样的,你也可以用 --line+数字,-数字的方式来调整行数。
需要注意的是,head命令在计算行数时是以换行字符为标准的
7、使用tail命令浏览文件中的内容
除了显示一个文件的头几行,Linux系统也可以显示一个文件的最后几行。
显示一个文件最后几行的命令时tail,同样,该命令默认显示的是最后10行,可以通过在tail命令中使用-n和+n选项来改变显示的行数。
-n选项显示从文件末尾算起的n行
+n选项显示从文件的第n行算起到文件结尾的内容。
tail有时更有用,例如,在Linux系统中添加了一个新用户,之后想查看这个用户的相关信息,就可以通过使用tail命令浏览/etc/passwd文件来获取这些信息,因为刚刚创建的用户数据就追加到了该文件的最后面。
tail命令的另一个比较有用的选项是-f或--follow,其含义是当一个正文文件的内容发生变化时,tail命令将把这些变化的信息显示在屏幕上。用-f或--follow选项非常适合监视日志系统的(log)文件。
[root@cat ~]# tail -f /var/log/messages
这样,系统会一直显示/var/log/messages这个日志文件的变化信息。最后,按Ctrl+C键即可退出tail命令。
如果在Linux系统上安装了Oracle数据库管理系统,也可以使用同样的方法监督Oracle的报警(alert)文件。
8、使用wc命令显示文件行、单词和字符数
wc(word count的缩写)命令是用来显示一个文件中的行数、单词书和字符数。
wc -options 文件名
wc命令中使用的选项如下:
-l:仅显示行数
-w:仅显示单词书
-c:仅显示字符数
如果没有任何选项,则将会显示文件中所包含的行数、单词书和字符数
在wc命令的所有选项中,-l选项的使用最频繁,如果想知道Linux系统上一个有多少个用户,一般的Linux命令就无能为力了,因为每一个用户都在/etc/passwd文件中存有有且仅有一行记录,所以/etc/passwd文件的行数就是该系统中所有的用户数。
9、使用more命令浏览文件
如果一个文件很大,使用前面的Linux命令还是不太方便,能不能让文件中的内容在屏幕上每次只显示一页,在需要时再翻到下一页呢?那就需要使用more命令。
当进入more命令后,每次在屏幕上显示一页的文件内容,并且在屏幕的底部将会出现
"--More--(n%)"的信息,此时可以使用键盘上的如下常用键进行操作。
空格键:向下移动一个屏幕
Enter键:一次移动一行
b:向上移动一个屏幕
h:显示一个帮助菜单
/字符串:向下搜索这个字符串
n:发现这个字符串的下一次出现
q:退出more命令并返回操作系统提示符下
v:在当前行启动/usr/bin/vi(vi是Linux自带的文字编辑器)