1. 输入输出重定向
其中计算机的结构中一个重要的环节就是I/O设备,而I/O设备就是输入输出设备,通俗的说键盘,显示器,终端等。而I/O设备中有三种不同的运行状态,就是标准输入,标准输出以及错误输出。 "<"为输入重定向,是把后面的内容输出给前面的命令执行,比如:ls < /etc 把/etc下的内容输出给ls命令执行;">" 为输出重定向,把前面的内容输出作为后面选项的输入:cat file > mail -s "e-mail" username 。其中标准输入的为STDIN -0为默认接受键盘的输入, 标准输出的为STDOUT -1 为默认输出到终端,标准错误为STDERR -2 ,默认把错误信息输出到终端。其中 -0 -1 -2 可以在输入和输出符号前面进行, “比如 XXX(错误信息) > filename 这样会直接把错误信息直接在终端上输出出来,但是 2> 这样,在输出重定向符号的前面加上标准错误的符号就可以把错误的信息提示重定向到指定的文件夹里。”还有一种就是把正确的信息和错误的信息一起输出到指定的文件夹里:“比如使用ls /boot /ddd(不存在的目录) > /testdir/a.可以使用 &>成功的把两个信息重定向到一个文件或目录里,也可以使用1>2&这样的格式,但是这个需要注意的是这个格式是相对来说比较老的,其必须在命令的最后,并且1 2 和前面的文件正确还是错误文件的位置必须一一对应”。 (2),在使用输入和输出重定向的时候如果输入的信息时,如果重定向的文件是存在的并且里面是有内容的,这样的话将会导致文件内容会被后来的重定向输出覆盖,为了防止输入的内容被覆盖,可以使用 set -C ,这样的话可以防止文件的内容被覆盖,set +C是允许文件被覆盖,这个命令最大的作用就是以后在编写脚本的时候防止被覆盖,这个命令是一次性的,并且是只对当前用户有效。
">>" 这个符号位追加重定向,使用输出重定向时会覆盖file的内容,但是使用追加重定向仅仅是向文件里注入信息,并不会覆盖或清空文件里面原本的信息内容。对于多条命令重定向是把多条命令使用括号括起来,中间用分号隔开:(pwd;ls)>/testdir/test.log 类似于这样可以在/testdir/test.log文本中查看当前目录的路径还有目录信息。
下面是一些额外的小知识:
2.硬链接的本质就是对同一个文件进行赋予多个文件名字,其链接数就等于文件名字的数量,每个目录引用相同的inode号,硬链接不能跨越分区或者驱动;软链接 ln -s 原始文件的绝对路径或相对路径(是相当于软链接文件的文件相对路径),也就相当与快捷方式,可以跨分区。硬链接是一个文件,软链接是两个文件。
rm删的是名字,不是文件的内容
Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。