linx的链接、一级目录、重定向、cp与mv


1.硬链接和软连接
符号链接又叫软链接

和原文件不是一个文件 例如Windows的快捷方式,如果原始文件被删除,所有
指向它的符号链接也就都被破坏了。
软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。符号链接可以跨越文件系统,也可以为目录建立。
格式:ln -s  源文件  目标文件


硬链接

只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。
当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在件结构中的位置。
创格式: ln 原文件 目标文件

 linx的链接、一级目录、重定向、cp与mv_第1张图片


创建文件file1并为其创建软链接soft_file1、和硬链接hard_file1

[root@localhost home]# touch file1
[root@localhost home]# ln -s file soft_file1
[root@localhost home]# ln file hard_file1
[root@localhost home]# ls -li
total 5
27446429 drwxr-xr-x.  2 root  root     6 Jul 14 10:46 data
27446447 -rw-r--r--.  2 root  root     0 Jul 14 18:15 file1
27446447 -rw-r--r--.  2 root  root     0 Jul 14 18:15 hard_file1
18732229 drwx------. 15 rhcsa rhcsa 4096 Jul 12 17:45 rhcsa
27446463 lrwxrwxrwx.  1 root  root     5 Jul 14 18:19 soft_file1 -> file1
 1875985 drwxr-xr-x.  2 root  root     6 Jul 14 10:46 sub_data
删除file1再查看各文件里面得内容

[root@localhost home]# echo "123456" > file1
[root@localhost home]# echo "999999" >> hard_file1
[root@localhost home]# cat file1
123456
[root@localhost home]# cat soft_file1
123456
[root@localhost home]# cat hard_file1
123456
999999
 
[root@localhost home]# rm file1
rm: remove regular file 'file1'? y
[root@localhost home]# cat file1
cat: file1: No such file or directory
[root@localhost home]# cat soft_file1
cat: soft_file1: No such file or directory
[root@localhost home]# cat hard_file1
999999
 

2.一级目录
/bin/   存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/  系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/   设备文件保存位置
/etc/   配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中
/home/  普通用户的主目录(也称为家目录)
/lib/   系统调用的函数库保存位置
/lib64   存放64位的文件
/media/    挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/    挂载目录。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/opt/    第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录
/proc/   虚拟文件系统。该目录中的数据存在内存中。主要保存系统的内核、进程、外部设备状态和网络状态等
/root/   root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/   保存与系统环境设置相关的命令,只有 root可以使用这些命令进行系统环境设置,也有些命令可允许普通用户查看
/srv/    服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/sys/    虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息
/tmp/    临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入
/tmp   这个目录是存放一些临时文件的地方。
/usr   全称为 Unix Software Resource,此目录用于存储系统软件资源
/var   用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等
3.I/O流、重定向
字段    描述    文件描述符
stdin    标准输入流    0
stdout    标准输出流    1
stderr    标准错误输出流    2
重定向操作符

重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。重定向操作符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。
输出重定向操作符: >(覆盖) 、 >>(追加)
输入重定向操作符: < 、 <<(结束)
将标准输出和标准错误输出重定向到同一个文件中 

[root@localhost ~]# date &> file
[root@localhost ~]# cat file
Thu Jul 14 19:54:09 CST 2022
[root@localhost ~]# data &> file
[root@localhost ~]# cat file
bash: data: command not found...
 
 
[root@localhost ~]# date >& file
[root@localhost ~]# cat file
Thu Jul 14 19:55:16 CST 2022
[root@localhost ~]# data >& file
[root@localhost ~]# cat file
bash: data: command not found...
 
[root@localhost ~]# date 1> file 2>file
[root@localhost ~]# cat file
Thu Jul 14 19:56:19 CST 2022
[root@localhost ~]# data 1> file 2>file
[root@localhost ~]# cat file
bash: data: command not found...

将1重定向到2

[root@localhost ~]# date 2> file 1>&2
[root@localhost ~]# cat file
Thu Jul 14 20:00:36 CST 2022
[root@localhost ~]# data 2> file 1>&2
[root@localhost ~]# cat file
bash: data: command not found...
 
[root@localhost ~]# date 1>& file 
[root@localhost ~]# cat file
Thu Jul 14 20:02:16 CST 2022
[root@localhost ~]# data 1>& file 
[root@localhost ~]# cat file
bash: data: command not found...
 
将2重定向到1

[root@localhost ~]# data 1>file 2>&1
[root@localhost ~]# cat file
bash: data: command not found...
[root@localhost ~]# date 1>file 2>&1
[root@localhost ~]# cat file
Thu Jul 14 20:04:19 CST 2022
 
将文件重定向到0

[root@localhost ~]# ecoh "hello world" >data
[root@localhost ~]# sort hello world
 
[root@localhost ~]# cat < > 123
> 456
> 789
> hello world!
> EOF
 
[root@localhost ~]# cat > data < > 111
> 222
> 777
> EOF
[root@localhost ~]# cat data
111
222
777

4.文件和目录的创建与删除
目录:

创建目录(make directory)

语法为: mkdir [-p] [/路径/] 目录名
-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v 显示创建目录的详细过程
统计目录及文件的空间占用情况——du命令

功能:查看某个目录中的各级子目录所占用的磁盘空间数。
命令格式: du [选项] [目录名]
-a  统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
-s  只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。
-h  以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。

[root@localhost data]# mkdir -p /home/data/cont1
[root@localhost cont1]# pwd
/home/data/cont1
[root@localhost cont1]# echo "hello world!">>cont1
[root@localhost cont1]# du -h cont1
4.0K    cont1
[root@localhost cont1]# mkdir -p cont2/cont3
[root@localhost data]# ls -R 
.:
cont1
 
./cont1:
cont2
 
./cont1/cont2:
cont3
 
 

删除目录文件

语法格式: rm -r [-f] 目录文件名

[root@localhost data]# rm -r cont1/cont2/cont3
rm: remove directory 'cont1/cont2/cont3'? y
只删除了cont3
 
[root@localhost data]# rm -r cont1
rm: descend into directory 'cont1'? y
rm: descend into directory 'cont1/cont2'? y
rm: remove directory 'cont1/cont2/cont3'? y
rm: remove directory 'cont1/cont2'? y
rm: remove directory 'cont1'? y
删除了cont1、2、3
文件

创建普通文件: touch [OPTION]... FILE...

touch的两种用法:

如果文件已存在,将更新文件的三个时间, stat 可以查看文件的详细信息
如果文件不存在,则表示创建文件
创建多个普通文件:

方法1: touch  文件名1 文件名2 文件名3
方法2: touch  {文件名1,文件名2,文件名3}

删除普通文件: rm [-f] 文件名

[root@localhost data]# touch file11 file22 file33
 
[root@localhost data]# ls -l
total 0
-rw-r--r--. 1 root root 0 Jul 14 21:35 file11
-rw-r--r--. 1 root root 0 Jul 14 21:35 file22
-rw-r--r--. 1 root root 0 Jul 14 21:35 file33
 
[root@localhost data]# stat file33
  File: file33
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 27446851    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2022-07-14 21:25:35.549327296 +0800
Modify: 2022-07-14 21:25:35.549327296 +0800
Change: 2022-07-14 21:25:35.549327296 +0800
 Birth: 2022-07-14 21:25:35.549327296 +0800
 
[root@localhost data]# touch file33
[root@localhost data]# stat file33
  File: file33
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 27446851    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2022-07-14 21:32:28.028280247 +0800
Modify: 2022-07-14 21:32:28.028280247 +0800
Change: 2022-07-14 21:32:28.028280247 +0800
 Birth: 2022-07-14 21:25:35.549327296 +0800

[root@localhost data]# rm file11
rm: remove regular file 'file11'? y
[root@localhost data]# rm file22
rm: remove regular empty file 'file22'? y
[root@localhost data]# rm file33
rm: remove regular empty file 'file33'? y
[root@localhost data]# ls -l
total 0
5.复制、移动
1、复制文件或目录

格式: cp [选项] 源文件 目标文件

-a  通常在拷贝目录时使用,保留其所有内容。它保留链接、文件属性,并递归地拷贝目录
-d  拷贝时保留链接
-f   强制复制文件或目录,无论目标目录或文件存在与否
-i   在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝
-p  -preserve,保留其属性,除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中
-r/g   递归复制,将指定目录下所有文件与子文件一同复制
复制文件到当前目录重命名。./表示当前目录 

[root@localhost data]# cp file11 ./file11-1
[root@localhost data]# ls -l
total 16
-rw-r--r--. 1 root root 13 Jul 14 21:51 file11
-rw-r--r--. 1 root root 13 Jul 14 21:56 file11-1
复制文件到目录且不改变文件属性

[root@localhost data]# cp -p file22 /home/data/cont2/
复制到指定目录cont1

[root@localhost data]# cp file11 /home/data/cont1/
 
[root@localhost data]# ls -la cont1
total 4
-rw-r--r--. 1 root root  13 Jul 14 22:04 file11
 将目录cont3和其下的文件的复制到cont4,若只移动目录就去掉cont3后面的/*

[root@localhost data]# cp -r /home/data/cont3/* /home/data/cont4/
cp: overwrite '/home/data/cont4/cont3'? y
[root@localhost data]# ls -l cont4
total 4
-rw-r--r--. 1 root root 45 Jul 14 22:32 cont3
drwxr-xr-x. 2 root root  6 Jul 14 22:32 count3.3
drwxr-xr-x. 2 root root  6 Jul 14 22:22 count4.4
 当前目录下的复制粘贴重命名

[root@localhost data]# echo "hello world!" >>file11
[root@localhost data]# cp file11 file22
[root@localhost data]# cat file44
hello world!


移动文件或目录

格式: mv [选项] 源文件名称 目标文件名称
mv命令用于剪切或重命名文件,

因为它会把文件删除掉,只保留剪切后的文件。如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作。
[root@localhost cont4]# mv /home/data/cont3 /home/data/cont5
[root@localhost cont4]# ls -l cont5
[root@localhost data]# ls -l cont5
total 0
drwxr-xr-x. 3 root root 35 Jul 14 22:27 cont3

你可能感兴趣的:(服务器)