您正在查看: linux 分类下的文章

I/O 重定向

文件描述符
默认情况下始终有3个"文件"处于打开状态, stdin (键盘), stdout (屏幕), and stderr (错误消息输出到屏幕上)。 这3个文件和其他打开的文件都可以被重定向。 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中每个打开的文件都会被分配一个文件描述符。stdin, stdout, 和stderr的文件描述符分别是0, 1, 和 2。 对于正在打开的额外文件, 保留了描述符3到9。 在某些时候将这些格外的文件描述符分配给stdin, stdout, 或者是stderr作为临时的副本链接是非常有用的。在经过复杂的重定向和刷新之后需要把它们恢复成正常的样子。

COMMAND_OUTPUT >

重定向stdout到一个文件.

如果没有这个文件就创建, 否则就覆盖.

> filename

> 会把文件"filename"截断为0长度.

如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同)

COMMAND_OUTPUT >>

重定向stdout到一个文件.

如果文件不存在, 那么就创建它, 如果存在, 那么就追加到文件后边.

1>filename

重定向stdout到文件"filename".

1>>filename

重定向并追加stdout到文件"filename".

2>filename

重定向stderr到文件"filename".

2>>filename

重定向并追加stderr到文件"filename".

&>filename

将stdout和stderr都重定向到文件"filename".

2>&1

重定向stderr到stdout.

得到的错误消息与stdout一样, 发送到一个地方

i>&j

重定向文件描述符i 到 j.

指向i文件的所有输出都发送到j中去.

>&j

默认的, 重定向文件描述符1(stdout)到 j.

所有传递到stdout的输出都送到j中去.

**

从文件中接受输入.

与">"是成对命令, 并且通常都是结合使用.

关闭文件描述符
n<&- 关闭输入文件描述符n.

linux远程下载文件 的两种方法之 ftp命令和scp命令

ftp命令:

服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载。

 1. 连接ftp服务器
  格式:ftp [hostname| ip-address]
  a)在linux命令行下输入:ftp 192.168.26.66
  b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可。

 2. 下载文件

  下载文件通常用get和mget这两条命令。
  a) get
  格式:get [remote-file] [local-file]
  将文件从远端主机中传送至本地主机中.
  如要获取服务器上e:\rose\1.bmp,则
  ftp> get /rose/1.bmp 1.bmp (回车)

  b) mget      
  格式:mget [remote-files]
  从远端主机接收一批文件至本地主机.
  如要获取服务器上e:\rose\下的所有文件,则
  ftp> cd /rose
  ftp> mget . (回车)

  注意:文件都下载到了linux主机的当前目录下。比如,在 /root/yint下运行的ftp命令,则文件都下载到了/root/yint 下。

 3.上传文件

  a) put
  格式:put local-file [remote-file]
  将本地一个文件传送至远端主机中.
  如要把本地的1.bmp传送到远端主机e:\rose,并改名为333.bmp
  ftp> put 1.bmp /rose/333.bmp (回车)

  b) mput
  格式:mput local-files
  将本地主机中一批文件传送至远端主机.
  如要把本地当前目录下所有bmp文件上传到服务器e:\rose 下
  ftp> cd /rose (回车)
  ftp> mput *.bmp (回车)
  注意:上传文件都来自于主机的当前目录下。比如,在 /root/test下运行的ftp命令,则只有在/root/test下的文件linux才会 上传到服务器e:\rose 下。

 4. 断开连接
  bye:中断与服务器的连接。
  ftp> bye (回车)

SCP命令:

scp是安全的文件拷贝,基于ssh的登录

假定你想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器192.168.0.2上的/home/tmp。而且你在远程服务器 上的帐号名为root。可以用这个命令:
scp /home/a.tar.tz root@192.168.0.2:/home/tmp/

如果把文件从远程机器拷贝到本机当前目录用这个命令:
scp root@192.168.0.2:/home/a.tar.tz

拷贝远程机器的整个目录下的文件
scp -r root@192.168.0.2:/home/* ./

Linux 查看目录下文件的目录和文件的个数的方法

查找一个目录下有多少个目录的方法:

 find ./ -type f | wc -l 

  

查找一个目录下有多少个文件的方法:

 find ./ -type d | wc -l