linux系统传递命令 linux系统传输文件命令

求:linux远程服务器与本地终端文件传输命令Linux 文件命令精通指南
作者:Sheryl Calish
为刚接触 Linux 文件命令的初学者提供的速成教程
虽然 GUI 桌面(如 KDE 和 GNOME)能够帮助用户利用 Linux 特性,而无需关于命令行接口的功能知识 , 但还是经常会需要更多的功能和灵活性 。而且,基本熟悉这些命令对于在 shell 脚本中正确地使某些功能自动化仍然是必需的 。
这篇文章是关于 Linux 文件命令的一个“速成教程” , 它是为那些刚接触这个操作系统或者只是需要补充这方面知识的用户提供的 。它包含了对一些更有用的命令的一个简明的概述以及关于它们的最强大的应用的指导 。下面包含的信息 — 结合一些实验 — 将使您能够容易地掌握这些基本的命令 。(注意:当涉及到一个与 Oracle 集群文件系统 (OCFS) 结合的内核时,这些命令中的某些命令的行为可能会稍微有所不同 。在此情况下 , Oracle 提供了一个 OCFS 工具集,该工具集可以为文件命令应用提供一个更好的选择 。)
注意,这里包含的所有示例都在 SUSE Linux 8.0 Professional 上进行了测试 。虽然没有理由相信它们在其它的系统上将不能工作,但如果出现问题,您应当查看您的文档,以了解可能的变化 。
背景概念
在深入研究规范之前,让我们回顾一些基础知识 。
文件和命令
在 Linux/UNIX 操作系统中,所有事物都被当作文件来处理:硬件设备(包括键盘和终端)、目录、命令本身 , 当然还有文件 。这个奇怪的惯例实际上是 Linux/UNIX 的能力和灵活性的基础 。
大多数(几乎是全部)的命令形式如下:
command [option] [source file(s)] [target file]
获取帮助
最有用的命令之一是那些提供帮助的命令(特别是对那些学习 Linux 的人而言) 。Linux 中的两个重要的信息来源是联机参考手册,或 man 页面和 whatis 工具 。您可以用 whatis 命令来访问一个不熟悉的命令的 man 页面 。
$ whatis echo
要了解关于这个命令的更多信息,可以使用:
$ manecho
如果您不知道某个特殊任务所需的命令 , 您可以用 man -k (也称为 apropos)和一个主题来生成可能的命令 。例如:
$ man -k files
一个很有用但常常被忽视的命令可以提供关于使用 man 本身的信息:
$ man man
您可以用 SPACEBAR 来浏览任意的 man 页面;UP ARROW 将向上翻滚文件 。.要退出,则输入 q,!,或 CTRL-Z 。
用户类别
记得那句名言“所有动物一例平等但有些动物比其他动物更加平等”吗?在 Linux 世界中,根用户掌管一切 。
根用户可以以另一个用户名 su (源自 "superuser")登录 。要执行诸如添加一个新用户、打印机或文件系统之类的任务,必须作为根用户登录或者用 su 命令和根用户密码切换到超级用户 。系统文件(包括控制初始化过程的系统文件)归根用户所有 。虽然可能允许普通用户对它们进行读操作,但出于系统安全性的原因,编辑的权利将留给根用户 。
BASH shell
虽然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默认 shell 。它结合了与它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性 。
BASH 内置的命令 history 默认记录最后输入的 500 条命令 。可以通过在命令提示符下输入 history 来查看它们 。要检索某个特定的命令 , 可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在历史列表中输入它的编号,并在编号前面加上 "!",例如:
$ !49
您还可以通过一条命令在历史列表中离位置最靠前的项目的距离来执行该命令:如果在历史列表中有 53 个事件,$ !-3 将执行事件号 51 。
像 UNIX/Linux 世界的其它 shell 一样,BASH 使用了特殊的环境变量来方便系统管理 。例如:
HOME,用户主目录
PATH,Linux 用来搜索您输入的命令的可执行镜像的搜索路径
HISTSIZE,系统保存的历史事件的数量
除了这些保留的关键字之外,您还可以定义您自己的环境变量 。例如,Oracle 使用 ORACLE_HOME (还有其它一些变量),要使 Oracle 安装成功完成,必须在您的环境中设置这些变量 。
可以在提示符下临时设置变量:
$HISTSIZE=100
或者,在 /etc/profile (需要根用户权限)中进行系统范围的永久设置,或在 .profile 中进行局部永久设置 。
可以通过 echo 命令,并用一个 $ 符号来访问一个环境变量的值,进而查看该值 。
$ echo $HOME
/home/bluher
可以用 env 命令来查看当前所有的环境变量 。
正则表达式和通配符
【linux系统传递命令 linux系统传输文件命令】许多 Linux 命令使用通配符 * 和 ? 来匹配任意数量的字符或分别匹配任意的单个字符;正则模式匹配表达式利用一个句点 (.) 来匹配除“换行符”之外的任意单个字符 。这两种情况下都使用方括号 ([ ]) 来匹配除“*”号之外的字符组 。不过,* 号在各种情况下有类似但不同的意义:虽然它在 shell 中将匹配一个或更多的字符 , 但在正则表达式中,它匹配上述字符的零个或更多的实例 。一些命令(如 egrep 和 awk)使用了一组更广泛的特殊字符来进行模式匹配 。
文件处理命令
剖析一个文件列表
ls 命令用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项 。例如:
$ ls -liah *
22684 -rw-r--r--1 bluherusers952 Dec 28 18:43 .profile
19942 -rw-r--r--1 scalishusers30 Jan3 20:00 test2.out
925 -rwxr-xr-x1 scalishusers378 Sep22002 test.sh
上面的列表显示 8 列:
第 1 列指示文件的 inode,因为我们使用了 -i 选项 。剩下的列通过 -l 选项来进行正常显示 。
第 2 列显示文件类型和文件访问权限 。
第3 列显示链接数 , 包括目录 。
第 4 和第 5 列显示文件的所有者和组所有者 。这里,所有者 "bluher" 属于组 "users" 。
第 6 列显示文件大?。ǖノ晃允镜牡ノ唬?而不是默认的字节数,因为我们使用了 -h 选项 。
第 7 列显示日期(它看起来像是三列),包括月、日和年 , 以及当天的时间 。
第 8 列显示文件名 。在选项列表中使用 -a 将使列表中包含隐藏文件(如 .profile)的列表 。
处理文件
可以移动 (mv)、复制 (cp) 或删除 (rm) 文件和目录 。明智地使用 -i 选项,以获得确认通常是个不错的主意 。
$ cp -i ls.out ls2.out
cpverwrite `ls2.out'?
mv 命令允许使用 -b 选项,这将在移动文件之前作一个备份拷贝 。rm 和 cp 接受功能强大但却危险的 -r 选项,它将在一个目录和它的文件上递归执行 。
$ rm -ir Test
rm:descend into directory `Test'? y
可以用 mkdir 来创建目录,用 rmdir 来删除目录 。不过,因为不能用 rmdir 来删除包含文件的目录,所以使用 rm 加 -r 选项通常要更方便些 。
出于安全的原因 , 所有的文件都有所有权和保护 。文件访问权限(或文件模式)包含之前提到的相同的 10 个字符:
第一个字符指示文件类型 。最常见的是 - 代表文件,d 代表目录,而 l 代表链接 。
接下来的 9 个字符是三种用户类别的访问权限:文件所有者(字符 2-4),用户组 (5-7) 和其它 (8-10),其中 r 表示读权限,w 表示写权限,x 指示一个文件上的执行权限 。破折号 - 如果出现在这九个位置的任意一个,则指示这个操作对该类别的用户禁止 。
可以使用 chmod 命令通过字符符号或二进制掩码来设置访问权限 。要使用二进制掩码,必须将三个权限组的字符表示转换成二进制格式 , 然后转换成八进制格式:
用户类别: 所有者 用户组 其它
字符表示: rwx r-x r--
二进制表示: 111 101 100
八进制表示: 7 5 4
将写权限赋予用户组,您可以使用:
chmod g w test.sh or chmod 774 test.sh
用 umask 命令,在 /etc/init.dev 文件中进行系统范围内的、或在 .profile 文件中进行的本地的文件权限默认设置 。这个命令指示用 777 减去这个数字来获取默认的权限:
$ umask 022
这将为用户创建的所有新文件生成一个默认的文件权限 755 。
可以用 chown 来修改文件的所有权:
$ chown bluher ls.out
这里 , bluher 是新的文件所有者 。类似地,组成员资格将按以下方式修改:
$ chgrp devgrp ls.out
这里 , devgrp 是新的用户组 。
ls 不提供哪些文件是文本的,哪些文件是二进制的的信息 。要了解这个信息,您可以使用 file * 命令 。
重命名文件
赋予一个文件多个名字的两种流行的方法是利用链接和 alias 命令 。Alias 可以用来为一个更长的命令重新起一个更方便的名字:
$ alias ll='ls -l'
$ ll
注意单引号的使用,这使得 BASH 将该项目传递给别名,而不是自己估计它 。别名还可用作较长的路径名的缩写:
$ alias jdev9i=/jdev9i/jdev/bin/jdev
关于 alias 和它的反命令 unalias 的更多信息,请查看 BASH 的 man 页面的 "SHELL BUILTIN COMMANDS" 子部分 。在最后一个例子中,定义了一个环境变量来实现相同的结果 。
$ export JDEV_HOME=/jdev9i/jdev/bin/jdev
$ echo $JDEV_HOME
/jdev9i/jdev/bin/jdev
$ $JDEV_HOME
链接允许几个文件名引用单个源文件,格式如下:
ln [-s] fileyouwanttolinkto newname
单独的 ln 命令创建到文件的一个硬链接,而使用 -s 选项来创建一个符号链接 。简而言之,一个硬链接几乎不能和原始的文件区分开(除了这两个文件的 inode 将相同之外) 。符号链接较容易区分,因为它们出现在一个长的文件列表中 , 并用 -; 来指示源文件,l 指示文件类型 。
查看和查找文件
文件过滤器
用来读取文件内容和在文件内容上执行操作的命令有时被称为 1滤器 。sed 和 awk 命令是两个滤波器的例子,因为在以前的 OTN 文章中有它们详细的讨论,在这里将略过 。
诸如 cat、 more 和 less 之类的命令让您能够从命令行查看一个文本文件的内容,而无需调用编辑器 。Cat 是 "concatenate" 的缩写,它将默认地在标准输出(显示屏)上显示文件内容 。和 cat 一起提供的最有趣的选项之一是 -n 选项,它用编号的输出行来显示文件内容 。
$ cat -n test.out
1This is a test.
因为 cat 一次性输出文件中的所有行,所以您可能更喜欢用 more 和 less,因为它们都一次输出一屏的文件内容 。Less 是 more 的一个增强的版本,它允许用来自 vi 文本编辑器的关键命令来增强文件查看 。例如,d 向前翻滚、b 向后翻滚 N 行(如果 N 是在 d 或 b 之前指定的) 。为 N 输入的值成为随后的 d 命令的默认值 。man 页面实用工具使用 less 来显示使用说明的内容 。
重定向和管道
重定向允许将命令输出重定向到文件中,而不是标准输出 , 或者类似地,也可重定向输入 。重定向的标准符号 ; 创建一个新的文件 。;; 符号将输出添加到一个现有的文件中:
$ more test2.out
Another test.
$ cat test.out ;; test2.out
$ cat test2.out
Another test.
This is a test.
到文件的标准输入可以用符号来重定向:
$ cattest2.out
错误消息用 2; 和 2;; 来重定向和添加,格式如下:
$ command 2; name_of_error_file
要避免无意地覆盖一个现有的文件 , 使用 BASH 内置的命令集:
$ set -o noclobber
可以在命令和输出文件之间用 ;! 符号来重载这个特性 。要关闭这个特性,用o 代替 -o 。
重定向在一个命令和文件之间、或文件和文件之间工作 。重定向语句的一项必须是一个文件 。
管道使用 |符号,并且在命令之间工作 。例如,您可以用以下方式将一个命令的输出直接发送到打印机上:
$ ls -l * | lpr
可以用以下方式快速地找到历史列表中的一个命令:
$ history | grep cat
更多的滤波器
Grep、fgrep 和 egrep 都显示匹配一种模式的行 。所有这三个命令都在文件中搜索指定的模式,如果您想不起来一个所需文件的名称,这将非常有用 。基本格式是:
grep [options] PATTERN [FILE...]
$ grep -r 'Subject' nsmail
CTRL-Z 将终止上述或其它任何命令 。
grep 的最有用的选项可能是 -s 。如果您以除根用户之外的任何身份搜索系统文件,那么对于每一个您没有访问权限的文件,都将产生错误消息 。这个命令禁止那些消息 。
Fgrep(也以 grep -F 调用)只查找固定的字符串,而不是 grep 接收的正则表达式 。而 egrep 接收包含更大范围的特殊字符(如 “|” , 它指示条件 OR 运算符)的模式 。
$ egrep 'Subject|mailto' *
查找文件
find 命令的 GNU 版本非常强大、灵活并且比 UNIX 系统上存在的经典版本更具包容性 。它对于涉及到目录结构的任务非常有用,包括在文件上查找和执行命令 。find 命令的基本格式是:
$ find startdirectory options matchcriteria [actionoptions]
如果您知道文件的名称、或者甚至名称的一部分,但不知道它所处的目录 , 您可以这么做:
$ find .-name 'test*'
./test
./jdevhome/mywork/EmpWS/EmpBC4J/test
与经典的 UNIX 系统不同,在 Linux 中不需要在末尾添加 -print 操作 , 因为如果没有指定其它的操作选项,就将假定执行这个操作 。在目录起始位置上的一个点 ( . ) 将使 find 在您的工作目录中开始搜索 。两个点, ..,在父目录中开始搜索 。您可以在任意目录下开始搜索 。
注意,您可以使用通配符作为搜索准则的一部分(只要用单引号将整个项目括起来) 。
$ find .-name 'test*' -print
./test.out
./test2.out
显示拥有 .out 扩展名的一系列文件:
$ find /home -name '*.out'
不过记?。悄亲魑队没г诵姓飧雒?,否则您将可能得到许多的 "ermission denied" 错误消息 。
最强大的搜索工具之一是和 grep 一起使用的 -exec 操作:
$ find .-name '*.html' -exec grep 'mailto:foo@yahoo.com' {} \;
.,查找一个 html 文件,*.html,并在当前文件上执行 (-exec) grep 命令,{} 。当使用 -exec 操作时,需要一个分号 ;,这是用来在使用 find 命令时执行其它一些操作 。需要反斜线 \ 和引号来确保这些项目通过 BASH,以使它们由命令而不是 shell 来进行解释 。
linux之间传文件用什么工具好呢?1. 前言
linux之间传文件命令用什么命令?本文介绍一种最常用 , 也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程 。
在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说明向您展示如何使用rsync 。
本教程适用于Ubuntu系统、Linux Mint系统、Deepin深度Linux系统、Fedora系统、Debian系统、Elementary OS系统、OpenSUSE系统、CentOS系统、RHEL系统,Arch Linux等等GNU Linux发行版 。
2. `rsync`介绍
Rsync是一个快速且通用的命令行实用程序 , 它可以使Windows与Linux之间,Linux与Linux之间传文件或者Linux与MAC OS之间传文件 。或从Linux本地文件系统到远程Rsync守护进程之间同步文件和文件夹 。它只传输源和目标之间的差异,从而提供快速增量文件传输 。
Rsync可以用于镜像数据、增量备份、在Linux系统之间传文件,也可以用于Linux与Windows之间传输文件,还可以替代日常使用的scp、sftp和cp命令,他们一般也用于Linux之间传文件或者Linux与MAC OS之间传文件 。
3. 如何安装`Rsync`
rsync实用程序预装在大多数Linux发行版和macOS上 。你可以输入以下命令,检查你的系统是否已安装:
查看Rsync版本的输出结果:
如果您的系统上没有安装rsync , 您可以使用发行版的包管理器轻松地安装它 。
在Ubuntu 或者Debian体系的Linux系统上安装rsync
在CentOS 或者Fedora系统上安装rsync
4. Rsync命令使用语法
在讨论如何使用rsync命令之前,让我们先回顾一下基本语法 。
rsync实用程序表达式采用以下形式:
rsync提供了许多选项来控制其行为和功能 。最广泛使用的选项是:
-a, --archive, 归档模式, 相当于 -rlptgoD 。这个选项告诉rsync递归地同步目录、传输特殊设备和块设备、保存符号链接、修改时间、组、所有权和权限 。
-z, --compress. 这个选项将强制rsync在传送文件到目标计算机时压缩数据 。仅当到远程计算机的连接很慢时才使用此选项 。
-P, 相当于--partial --progress 。使用此选项时,rsync将在传输期间显示一个进度条,并保留部分传输的文件 。当通过缓慢或不稳定的网络连接传输大文件时,它非常有用 。
--delete. 使用此选项时,rsync将从目标位置删除无关文件 。它对镜像很有用 。
-q, --quiet 。如果希望禁用非错误消息,请使用此选项 。
-e. 此选项允许您选择不同的远程shell 。默认情况下,rsync被配置为使用ssh 。
5. 使用Rsync最基本的功能使Linux之间传输文件
要将一个文件从一个本地位置复制到另一个本地位置,可以运行以下命令:
运行该命令的用户必须具有目标位置上的读权限和目标上的写权限 。
从目标位置省略文件名将复制具有当前名称的文件 。如果您想将文件保存在另一个名称下,请在目标部件上指定新名称:
比如复制filename.zip到目标目录并重新把文件名修改为newfilename.zip
在下面的例子中 , 我们正在创建一个本地备份我们的网站文件:
如果目标目录不存在 , rsync将创建它 。
值得一提的是,rsync对后面带有斜杠/的源目录提供了不同的处理 。如果在源目录上添加一个尾随斜杠,它将只将目录的内容复制到目标目录 。当后面的斜杠被省略时,rsync将把源目录复制到目标目录中 。
6. 如何使用Rsync与远程服务器同步文件(包括上传下载)
当使用rsync进行远程传输时,必须同时安装在源机器和目标机器上 。rsync的新版本被配置为使用SSH作为默认远程shell 。
在下面的例子中,我们将一个目录从本地转移到远程机器:
如果你需要配置2台Linux之间免密码登录 , 请查看以下教程:
如果你想把数据从远程传输到本地机器,你需要使用远程位置作为一个源:
如果远程主机上的SSH监听的端口不是默认的22端口,那么可以使用-e选项指定端口:
比如远程服务器的SSH端口被修改为1234
当传输大量数据时,建议在屏幕会话中运行rsync命令或使用-P选项:
7. 使用Rsync传送或同步文件时,排除某些文件或者目录
当使用Rsync排除文件或目录时,需要使用它们到源位置的相对路径 。
有两个选项可以排除文件和目录 。第一个选项是使用--exclude参数,并在命令行中指定要排除的文件和目录 。
在下面的例子中,我们排除了位于src_directory中的123和abc目录:
第二个选项是使用--exclude-from参数 , 并指定要在文件中排除的文件和目录 。
vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目录zcwyou:
8. 总结
在本教程中,您学习了如何使用Rsync在多台Linux之间传输、复制或同步文件和目录 。在Rsync用户手册页面上有更多关于Rsync的内容 。
如果你有任何问题 , 请留下你的意见 。
xshell上用命令传文件rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具,所以要在Xshell连接属性中的设置上传协议为Zmodem和接受的文件路径
sz:将选定的文件发送到本地
rz:运行该命令会弹出一个文件选择窗口 , 从本地选择文件上传到Linux服务器
安装命令:
需要先在linux服务器上安装lrzsz工具包
从服务端(linux)发送文件到客户端(windows):
从客户端(windows)上传文件到服务端(linux):
1、如果我们处在IP为“192.168.0.1”的Linux系统下,将系统下的/home/etc.tar.gz文件拷贝到IP为“192.168.0.2”的远程Linux系统中root用户下的/tmp目录下:
命令输入完毕,会要求输入“192.168.0.2”服务器root的密码,然后开始远程拷贝数据
2、如果我们处在IP为“192.168.0.2”的Linux系统下,需要将IP为“192.168.0.1”的Linux服务器上
文件路径为“/home/etc.tar.gz”的文件拷贝到本服务器的/tmp路径下
Linux系统下 发送文件的命令是??最常用的是samba,如果安装有samba服务器,
[root@localhost ~]# /etc/init.d/smb start
启动 SMB 服务:[确定]
启动 NMB 服务:[确定]
如果停止呢?就在smb后面加stop ;重启就是restart
[root@localhost ~]# /etc/init.d/smb stop
[root@localhost ~]# /etc/init.d/smb restart
对于所有系统来说,通用的办法就是直接运行smb 和nmb;当然您要知道smb和nmb所在的目录才行;如果是自己编译的Samba ,您应该知道您把Samba放在哪里了;
[root@localhost ~]# /usr/sbin/smbd
[root@localhost ~]# /usr/sbin/nmbd
查看服务器是否运行起来了,则用下面的命令;
[root@localhost ~]# pgrep smbd
[root@localhost ~]# pgrep nmbd
如果安装有ftp服务器,可以用ftp命令
或SSH都可以
也可以用U盘等移动设备
还可以建一些SVN服务器
关掉Samba服务器,也可以用下面的办法,大多是通用的;要root权限来执行;
[root@localhost ~]# pkill smbd
[root@localhost ~]# pkill nmbd
关于linux系统传递命令和linux系统传输文件命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读