名称不存在或不是目录_大数据从入门到深入:LINUX 04 文档目录管理

51f3c3965c7324bec964765e6e15bd70.png

1 linux 目录结构

99b9c6f2aeab5e7aab53fb0da3f65b45.png

bin: 存放二进制可执行文件(ls,cat,mkdir等)

boot: 存放用于系统引导时使用的各种文件

dev: 用于存放设备文件

etc:存放系统配置文件 /etc/profile /etc/passwd /etc/shadow

home: 存放所有用户(除了root)文件的根目录

lib:存放跟文件系统中的程序运行所需要的共享库及内核模块

mnt:系统管理员安装临时文件系统的安装点

opt:额外安装的可选应用程序包所放置的位置

proc:虚拟文件系统,存放当前内存的映射

root:超级用户目录

sbin:存放系统管理命令

tmp:用于存放各种临时文件 你的电脑 --> jdk --> tmp --> 安装 --> 清空 tmp目录 定时任务 每天早上上班之前清空昨天的tmp

usr:用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录

/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据;

= windows Program Files

var:用于存放运行时需要改变数据的文件

2 建立文件和目录

2.1 建立目录:mkdir

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

命令格式:

mkdir [-参数] 目录

命令功能:

通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,同一目录下所创建的文件夹(目录)不能相同(区分大小写)。

参数:

-m:--mode=模式,设定权限<模式> (类似 chmod),数字类型;

-p:--parents 可以是个路径名, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

8048e9b70b5434aa9db5f0133f1e66c6.png

示例:

1)创建一个空目录:dir2

mkdir dir2

2)递归创建多个目录:dir3/dir31

mkdir -p dir3/dir31

3)创建权限 为777 的目录dir4

mkdir -m 777 dir4

创建的目录other能查看目录下的内容,不能增加文件和目录

mkdir -m 775 dir5

2.2 建立一个空文件:touch

命令格式:

touch 文件

命令功能:

创建一个 空文件。

示例:

创建f3文件

touch f3

36226f5612ec887559949ec579635f5f.png

3 移动、复制和删除文档3.1 移动和重命名:mv

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来移动文件或者目录。

命令格式:

mv [-参数] 源目录或文件 目标文件或目录

命令功能:

视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。

当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

9ddedbc16e791779d11b1a43a7ff8953.png

参数:

-b :若需覆盖文件,则覆盖前先行备份。

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

如果目标文件已经存在,如果当前用户是root 用户,不写 -i 也会提示,而新建的用户,则不会提示。原因在于用户家目录下的.bashrc 文件中配置了别名

2144c8c5187a9e2a955d9586c8374ed3.png

而新建的用户家目录下的.bashrc 文件没有配置别名。

如果想新建的用户也提示,则在.bashrc 文件中配置,然后用下面命令使修改生效

# 重新刷新自己的环境变量
source .bashrc

文件重命名

9151a60f78919980cdbfe85e59ff8305.png

将f2 移动到dir6目录里面

2197f10dc8ee1171aa914f2b9a85061c.png

目录dir6 重命名为dirn

d204e5fa453d925add6ba0ab1f9c3aab.png

将dir 移动到dir7目录里面

438961948c1ac5fcc64df65c291d72e8.png

-i -b

ffd72ea0fc1d92451f752ef0ccc267a5.png

root 用户不需要 mv -i 一样可以提示

de3d9a761003c9b9dd205f4ca9f851b3.png

示例:

1)文件改名

2)移动单个文件

mv f1 dir1

3)移动多个文件

c7b6fdbc0c18246ee7a7df0469cd65f6.png

4)将文件file1.txt改名为file2.txt,如果file2已经存在,则询问是否覆盖

一种:

mv -i

第二种:

用户的家目录下,.bashrc 文件中加 别名,

31a4bbeda79595191d1cb546788d16de.png

然后 用 source .bashrc 使得配置生效。

6494b61c295f72f4621d498f76aae195.png

0eceeacc94fac74ccc6cb669ba5bf72b.png

mv

5)目录的移动

mv dir dir1

6)文件被覆盖前做简单备份,前面加参数-b

mv -b

3.2 复制:cp

cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,并且.bashrc文件中已经配置了cp的别名,就会询问是否覆盖,不管你是否使用-i 参数。

命令格式:

cp [-参数] 源目录或文件 目标文件或目录

命令功能:

将源文件复制至目标文件,或将多个源文件复制至目标目录。

c51bb04e7ff8f7921904b05a46aa2654.png

参数:

-a: –archive 递归复制文件目录,并且复制的文件的属性也一致

-i: –interactive 覆盖前询问

-R:递归处理,将指定目录下的文件及子目录一并处理

71af68d8c4893e508cf40454920539f9.png

47a86c50a17a77dc509d050551cf5f8f.png

示例:

1)复制单个文件到目标目录,文件在目标文件中不存在。

2)复制单个文件到目标目录,文件在目标文件中已存在。

cp -i file1.txt dir3

3)复制单个文件到目标目录,文件属性都是一样的

cp -a

4)复制整个目录到目标目录

cp -R

3.3 删除:rm

rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

命令格式:

rm [-参数] 文件或目录

命令功能:

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

参数:

-f: --force 忽略不存在的文件,从不给出提示。

-i:--interactive 进行交互式删除

-r, -R: --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

示例:

100476abe5d68c1b2636eb0dd9e6c774.png

4 改变文档所有权、文档权限

4.1 改变文档的所有权:chown(change own)

chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

命令格式:

chown [选项]... [所有者][:[组]] 文件或目录...

命令功能:

通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。

普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。

参数:

-R 处理指定目录以及其子目录下的所有文件 

#更改所属用户
[root@localhost ~]# chown vuser1 f1
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root   root 953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   root  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root  12 11月  8 11:08 f1
[root@localhost ~]# 

#更改目录的所属组
[root@localhost ~]# chown :vuser1 dir8
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
[root@localhost ~]# 
[root@localhost ~]# echo '123' > f3
[root@localhost ~]# ll
总用量 12
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 root   root     4 11月  9 15:20 f3
[root@localhost ~]# 
[root@localhost ~]# cp f3 f4
[root@localhost ~]# ll
总用量 16
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 root   root     4 11月  9 15:20 f3
-rw-r--r--. 1 root   root     4 11月  9 15:21 f4
[root@localhost ~]# 
#修改f3 文件的所属用户和组
[root@localhost ~]# chown vuser1: f3      
[root@localhost ~]# ll
总用量 16
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:20 f3
-rw-r--r--. 1 root   root     4 11月  9 15:21 f4
#修改f4 文件的所属用户和组
[root@localhost ~]# 
[root@localhost ~]# chown vuser1:vuser1 f4
[root@localhost ~]# ll
总用量 16
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:20 f3
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:21 f4

#递归修改dir8目录下所有的所属用户和组为 vuser1
[root@localhost ~]# ll
总用量 16
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 root   vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:20 f3
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:21 f4
[root@localhost ~]# 
[root@localhost ~]# chown -R vuser1: dir8
[root@localhost ~]# ll dir8
总用量 0
-rw-r--r--. 1 vuser1 vuser1 0 11月  9 14:52 f1
[root@localhost ~]# ll 
总用量 16
-rw-------. 1 root   root   953 11月  8 10:40 anaconda-ks.cfg
drwxr-xr-x. 2 vuser1 vuser1  15 11月  9 14:52 dir8
-rw-r--r--. 1 vuser1 root    12 11月  8 11:08 f1
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:20 f3
-rw-r--r--. 1 vuser1 vuser1   4 11月  9 15:21 f4

示例:

1)改变文件拥有者

2)改变文件群组

3)改变文件拥有者和群组

4)改变指定目录以及其子目录下的所有文件的拥有者和群组

4.2 改变文件的所属组:chgrp

在Linux系统里,文件或目录的权限的掌控以拥有者及所属群组来管理。可以使用chgrp 指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。

Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。

命令格式:

chgrp [选项] [组] 文件或目录

命令功能:

chgrp命令可采用群组名称或群组识别码的方式改变文件或目录的所属群组。使用权限是超级用户。

参数:

-R 处理指定目录以及其子目录下的所有文件

示例:

1)改变文件所属群组

chgrp vuser1 f1

2)改变指定目录以及其子目录下的所有文件的群组属性

chgrp -R vuser1 dir1

4.3 改变文档权限:chmod

chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

4.3.1 符号类型改变档案权限

命令格式:

cffb19852d95498cd95ef5c6e59ebc66.png

参数:

权限范围

u :目录或者文件的当前的用户

g :目录或者文件的当前的群组

o :除了目录或者文件的当前用户或群组之外的用户或者群组

a :所有的用户及群组

符号类型的适合加减权限,不适合设定。

示例:

1)设置文件拥有者(读、写、执行权),组拥有(读、执行权),其他拥有者组拥有(读权)

chmod u=rwx,g=rx,o=r f1.txt

2)给 文件所有用户组加可执行权

71708e5fa9be7e5ce2c142f715dd40d5.png

4.3.2 数字类型改变档案权限

命令格式:

chmod [参数]三位权限数字 文件或目录

参数:

-R 处理指定目录以及其子目录下的所有文件

数字与字符对应关系如下:

r=4,w=2,x=1

若要rwx属性则4+2+1=7

若要rw-属性则4+2=6;

若要r-x属性则4+1=5。

示例:

1)设置文件拥有者(读、写、执行权),组拥有(读、执行权),其他拥有者组拥有(读权)chmod 754 f1

2)设置目录及其子目录 拥有者(读、写、执行权),组拥有(读、执行权),其他拥有者组拥有(读权)chmod -R 754 dir1

5 建立链接:ln

ln 是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的

目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放

上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

5.1 硬链接

硬链接的意思是一个档案可以有多个名称,存在同一个文件系统中。

多个名称共用一个inode号,对文件系统来说是完全平等的,如果删除了其中一个,对另外一个没有影响。

每增加一个文件名,inode节点上的链接数增加一;每删除一个对应的文件名,inode节点上的链接数减一;直到为0,系统就会回收这个inode号码,以及其所对应block区域。

不允许给目录创建硬链接。

如果文件有有多个硬链接,删除任意一个,其他硬链接都能获取到文件内容。 硬链接只有在同一个文件系统中才能创建。

命令格式:

ln 源文件 目标文件

示例:

f0f10275fdd795db0e0e41534e314a63.png

4bd3a826e8310727cc14e013c35b7462.png

f6057a3b024dc4a96edb933063b5d531.png

5.2 软链接

文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向

文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"。

这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。

这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会

因此发生变化。

而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置,可以跨越不同的文件系统。

软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式 软链接可以 跨文件系统 ,硬链接不可以 软链接可以对一个不存在的文件名进行链接 软链接可以对目录进行链接

windows 的快捷方式。

命令格式:

ln -s 源文文件或目录 目标文件或目录

示例:

[root@localhost vuser1]# ln /home/vuser1/rtest4/dir2 dir2link
ln: "/home/vuser1/rtest4/dir2": 不允许将硬链接指向目录

[root@localhost vuser1]# ln -s /home/vuser1/rtest4/dir2 dir2link

[root@localhost vuser1]# ll | grep dir2link
lrwxrwxrwx. 1 root   root   24 7月  25 16:32 dir2link ->
 /home/vuser1/rtest4/dir2

ef089e83b4a63ef2b5146fb9fa58415e.png

09e209a7419cb68a817a9747d3da7047.png

7a7aa1df8b4e04c934bb386b49eef304.png

/etc/profile 文件

4ad8a9a2f434b21c0526206d5b4da226.png

6 输入输出重定向和管道

对于任何一条linux 命令执行,它会是这样一个过程:

99c9e84632850c99fdfb5931748e3f59.png

一个命令执行了: 先有一个输入:输入可以从键盘,也可以从文件得到。 命令执行完成:成功了,会把成功结果输出到屏幕:standard output默认是屏幕 命令执行有错误:会把错误也输出到屏幕上面:standard error默认也是指的屏幕

三种输入输出的代码分别是:
1)标准输入(stdin);代码为 0 ; 2)标准输出(stdout):代码为 1 ; 3)错误输出(stderr):代码为 2 ;

be459643b6a99fa533f4d27802b2269a.png

标准重定向符号
> 输出重定向到一个文件或设备 覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序 标准错误重定向符号
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出

6.1 输出重定向

将标准输出到屏幕的信息重定向输出到指定文件内。

为何要使用命令输出重导向

• 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
• 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
• 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
• 一些执行命令,想查看错误信息时;
• 错误讯息与正确讯息需要分别输出时。

常用输出重定向
cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 1> file 把 stdout 重定向到 file 文件中;
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd 2> file 把 stderr 重定向到 file 文件中;
cmd 2>> file 把 stderr 重定向到 file 文件中(追加);
cmd >> file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中(追加);

bcb60b5384119c28353355df4236c16a.png

8d7dfa8a6730d5bebd51d4cd215cda80.png

490453cc6ada4719606879929452f8f8.png

示例:

1)将错误输出重定向 到err.log 输出

lasdf 2>err.log

2)将标准输出重定向到 out.log

ls > 1.log

3)把 stdout 和 stderr 一起重定向到 file 文件中(覆盖或追加)

4)将多个文件的内容写到一个文件里

a270d271e85b116f6285bf1105667fc4.png

6.2 输入重定向:cat

将标准从键盘输入改为从文件输入。

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。下面简单说明几种使用方式和作用
1)cat << EOF,以EOF输入字符为标准输入结束:
2)cat > filename,创建新文件,并把标准输入输出到filename文件中,以ctrl+d作为输入结束:
3)cat > filename << EOF,以EOF作为输入结束,其中EOF可以是任何字符串,和ctrl+d的作用一样:

如何进行标准的输入

3bc9ffc02547bbdc1d8e73df10bbff4e.png

示例:

1)cat << EOF

2)cat > filename

3)cat > filename << EOF

/etc/passwd --> zwm --> 标准的输入 --> find -user?

一个文件 通过命令输出 然后作为下一个命令的输入 再完成操作

6.3 管道符号:|

利用Linux所提供的管道符 “|” 将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

96e787cba88824a62badacfa7166d04a.png

command1正确输出,作为command2的输入,然后comand2的输出作为,comand3的输入,comand3输出就会直接显示在屏幕上面了。

通过管道之后:comand1,comand2的正确输出不显示在屏幕上面。

注意:

1)管道命令只处理前一个命令正确输出,不处理错误输出。

2)管道命令右边命令,必须能够接收标准输入流命令才行。

acb86421d5e27633a2a71f86d0c68c0b.png

示例:

1)在文件中查找某个匹配的字符串

d5321dce0897c7ddc79ac36ef4aeb714.png

2)在目录中查找某个文件

bbe87d53c30a20a732b8fd176d33fd3c.png

3) 管道符号| 后面如果是grep , 可支持正则表达式

4)多级管道

如果管道前面的结果你报错,查询终止,直接输出错误信息

269bda49c3e4cf4be01d13f5c2c5a92f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值