零基础Linux_2(基本指令_上)目录/文件的显示跳转创建删除

目录

[1. 目录内容的显示](#1. 目录内容的显示)

ls(显示非隐藏文件)

pwd(显示用户当前所在的目录)

[ls -l(列出文件的详细信息)](#ls -l(列出文件的详细信息))

[ls -a(显示隐藏文件)](#ls -a(显示隐藏文件))

[2. 目录的跳转操作](#2. 目录的跳转操作)

[cd ..(回到上级路径)](#cd ..(回到上级路径))

[cd 绝对路径名(进入这个路径)](#cd 绝对路径名(进入这个路径))

[cd 绝对相对名(进入这个路径)](#cd 绝对相对名(进入这个路径))

[cd ~(跳转到当前用户的家目录)](#cd ~(跳转到当前用户的家目录))

[cd -(跳转至上一次所处的路径)](#cd -(跳转至上一次所处的路径))

[cd /(跳到根目录)](#cd /(跳到根目录))

[3. 基本创建操作](#3. 基本创建操作)

[touch 新文件名(创建新文件)](#touch 新文件名(创建新文件))

[mkdir 新目录名(创建新目录)](#mkdir 新目录名(创建新目录))

[4. 基本删除操作](#4. 基本删除操作)

[rmdir 非空目录名(删除非空目录)](#rmdir 非空目录名(删除非空目录))

[rm 文件名(删除文件)](#rm 文件名(删除文件))

[rm -r 目录名/文件名(删除目录/文件)](#rm -r 目录名/文件名(删除目录/文件))

[rm -rf 文件名/目录名(强制删除文件/目录)](#rm -rf 文件名/目录名(强制删除文件/目录))

[5. man手册](#5. man手册)

[6. 笔试选择题](#6. 笔试选择题)

答案及解析

本篇完。


这里默认前一篇的Linux环境都安装好了,这里是在Xshell进行演示。

在此时前面的学习我们可以先用root用户,在学习权限的时候在换到普通用户,

可以和我一样一直输入cd ..回车,退到最外层目录, (到最外层目录输入ls可以显示你的目录,有一个目录是家目录,家目录名字可能是home也可能是root,为了方便我们没有的home的,mkdir home 建立一个home目录,(有了就不用建立的了)

然后cd home 进入home 目录,再mkdir linux_2 建立一个linux_2目录,

(home里面应该是放用户名文件夹的,但现在先这样用了)

1. 目录内容的显示

语法 : ls [ 选项 ][ 目录或文件 ]
功能
对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件名以及其他信息。
常用选项:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如: ls --d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls --ai 指定文件
-k 以 k 字节的形式表示文件的大小。 ls --alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID , GID )
-F 在每个文件名后附上一个字符以说明该文件的类型, "*" 表示可执行的普通文件; "/" 表示目录; "@" 表示符号链接;"|" 表示 FIFOs ; "=" 表示套接字 (sockets) 。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在 l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。 ( 递归 )
-1 一行只输出一个文件。

ls(显示非隐藏文件)

直接输入ls是默认列出当前路径下的非隐藏文件,输入个ls 看看:

什么都没有,因为当前目录确实什么文件都没有,如果我们想看 ls 的效果,我们用 touch (touch 命令我们后面再说)先创建一个文件:输入touch mytest.c,**注意事项:**在输入指令的时候一定要把空格带好,之后再输入 ls,就可以显示刚才创建的 mytest.c 文件了:

当然,我们也可以用 ls 直接查看到一些目录文件。我们现在还没有目录,我们先用 mkdir 创建出一个目录出来:(这个目录就相当于 Windows 下的一个文件夹,我们先可以这么理解。mkdir 下面再说,这里先测 ls )输入mkdir code,再输入ls:

显示当前目录下,我们当前目录是谁呢?如何知道?输入 pwd 显示当前路径:

pwd( 显示用户当前所在的目录**)**

(讲 ls 补充了这么多指令,就是为了做一个 ls 的演示,相当于是一个 "起手式" 。只是为了能快速操作起来,后面还要对刚才提前用到的指令详细介绍一下。)

下面再介绍几个ls的选项,然后最上面列出来的一个个试用就行了。

ls -l(列出文件的详细信息)

下面我们要来认识一下 "命令的选项"

指令是可以带很多选项的,比如默认情况下输入 ls 是只显示文件的,

但是输入 ls 带上 -l ,就可以显示出更多的文件属性。

ls -l可以简写成ll

分别输入ls -l和ll:

文件的详细信息对应什么后面会讲。

ls -a(显示隐藏文件)

**思考:**如果我们在 Windows 下创建了一个空文件(0kb)在磁盘中占据空间吗?

要占用,文件 = 文件内容 + 文件属性,文件有属性数据,属性数据是数据吗?当然是!

我们曾经或者将来的所有文件操作,无非两类:

① 对文件的内容操作 ② 对文件的属性操作

所以 ls -l 显示文件的更多属性,这里面的这些属性都代表了文件的某一种属性。

ls -a : 显示 Linux 系统中的隐藏文件

列出目录下的所有文件,包括以**.** 开头的隐藏文件。以点开头的文件我们称之为隐藏文件。

Windows下其实也有隐藏文件,感兴趣可以自己搜搜看。

既然有隐藏文件,那我们是不是也可以创建出隐藏文件呢?当然可以,

在前面用touch创建文件的方法中,在文件名最前面加一个点就是创建隐藏文件,

输入touch .mytest2.c,再输入ls看看:

现在是看不到隐藏文件的,输入ls -a

我们还可以复合使用,输入ls -a,回车后输入ls -a -l

发现多了一个点和两个点的两个文件?

其实,任意目录下都会存在两个隐藏文件:

. (当前路径)

.. (上级路径)

.. (上级路径)认为还是有点用吧,. (当前路径)有什么用?这是用其它操作让它找到你的路径的,后面用了就懂了。

ls 的其他常用选项,这里就不再逐个演示了。

我们对于 ls 用的最多的选项就是 ls -a -l ,其他的选项目前为止只需要有个印象即可。

**对于指令:**必须记住,但不是现在。忘掉很正常,不需要专门下来背指令。我们也不用特意去记,多用,不懂就查就行,用多了自然就熟了。

2. 目录的跳转操作

语法 :cd 目录名
功能 :改变工作目录。将当前工作目录改变到指定的目录下。
举例
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~ :进入用户家目
cd - :返回最近访问目录

如果我们想回到上级路径,该如何操作?

这里我们要使用一个叫 cd 的指令

前面我们的内容有点多了,输入clear清下屏幕:

你前面的操作还是在的,鼠标滑轮上划看看:

cd ..(回到上级路径)

我们输入pwd显示当前路径然后输入cd ..再输入pwd

思考:/home/linux_2是什么呢?

这是 Linux 路径,和 Windows 下的路径一样,

在桌面Xshell 7的图标右键然后进入属性就能看到Xshell 7在你电脑的路径了,

Windows的图形画界面就和这种路径有关。

而这个**\** 就是传说中的路径分隔符!Windows 的路径分隔符是 \ ,而 Linux 的路径分隔符是**/**

当我们在前面基础在输入cd ..回到 / 时,就不能再进行回退了(再次输入cd ..也没用):

这和 Window 下一样,一直返回返回到头,图标变灰:

不能回退时剩下的这个 / 我们不称之为路径分隔符,我们称之为根目录

而回到路径的方式,我们可以直接 cd + 路径:

cd 绝对路径名(进入这个路径)

在前面基础输入cd /home/linux_2,在输入pwd显示当前路径:

前面提到了根目录,什么是根目录?

**思考:**Linux 入口目录时 / 根目录,请问根目录可以再放一个目录吗?

Linux 目录结构的本质:

Linux 的目录结构本质是一个多叉树。所以我们把 / 称为根目录,是路径的起始。

在数据结构的角度去理解:

① 既然是一颗多叉树,每一个子节点既可以是一个目录(再放目录或普通文件,递归式的定义),也可以是一个普通文件。

② 这颗多叉树的叶子节点一定是一个普通文件或者是空目录。

我们一般 "定位" ,是通过路径定位的方式找到文件的。

为什么我们都是通过路径方式定位文件的呢?

如果我们想找到我们曾经写的 test.c 文件,我们可以从 / 到 home 到 linux_2再到 test.c。

任何一结点,可以有多个子节点。但是任何一个子节点,都只有一个父节点。

所以 test.c 只有一个父节点,即 linux_2...... linux_2也只有一个父节点,即 home......

所以当我们定位路径时,反向回推时,这条路径时具有惟一性的。

因为常规的路径定位是具有惟一性的。

cd 绝对相对名(进入这个路径)

绝对路径与相对路径:

/home/linux_2/test.c : Linux 下的 "绝对路径" (惟一性且永远有效)。

相对路径:相对于我当前所处的路径。

相对路径往往相对于当前位置,容易失效。而绝对路径是永远有效的!

如果是日常使用,我们推荐相对路径 ------ 因为简单。

如果是进行添加配置文件之类的,推荐绝对路径 ------ 因为不会出错。

cd 命令后面可以跟上任何以绝对路径或相对路径构建的路径。

所以在前面在根目录下进入linux_2也可以这样进入:(后9行)pwd只是为了显示,可以不显示

cd ~(跳转到当前用户的家目录)

~: 表示home

默认一个用户在登录时,都是处于该用户的家目录中的。

一个普通用户的家目录一般都是在 home 路径下有一个以你名字命名的文件夹。

如果是 root 用户,它会在根目录下的 root 目录下。

(关于 root 和普通用户的差别,我们在后面的权限章节会详细讲解)

cd -(跳转至上一次所处的路径)

cd /(跳到根目录)

一起演示:

3. 基本创建操作

touch 指令
语法 :touch [ 选项 ]... 文件 ...
功能 : touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项
-a 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间。
-c 或 --no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。
-m 或 --time=mtime 或 --time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间

touch 新文件名(创建新文件)

touch:创建文件

touch 命令参数可更改文档或目录的日期时间,

包括存取时间和更改时间,或者新建一个不存在的文件。

本章我们只讲 touch 普通用法,我们不去讲它的常用选项。

本章只需掌握 touch 的最普通的用法,即用 touch 来创建普通文件。

(对于 touch 修改文件时间等用法我们放到讲开发工具 makefile 的时候再讲)

前面讲目录结构的本质时把一开始建的mytest.c讲成test.c了,现在再来建立一个test.c:

mkdir 新目录 名(创建新 目录 )

mkdir 指令:
语法 : mkdir [ 选项 ] dirname...
功能 :在当前目录下创建一个名为 "dirname" 的目录
常用选项
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录 ;
举例
mkdir --p test/test1 : 递归建立多个目录(test1在test里面)

演示建立一个目录和递归建立多个目录:

4. 基本删除操作

rmdir 指令 && rm 指令:
rmdir 是一个与 mkdir 相对应的命令。 mkdir 是建立目录,而 rmdir 是删除命令。
语法 : rmdir [-p][dirName]
适用对象 :具有当前目录操作权限的所有使用者
功能 :删除空目录
常用选项
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm 命令可以同时删除文件或目录
语法 : rm [-f-i-r-v][dirName/dir]
适用对象 :所有使用者
功能 :删除文件或目录
常用选项
-f 即使文件属性为只读 ( 即写保护 ) ,亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件

rmdir 非空目录名( 删除非空目录)

注意,rmdir 只能删除空目录:

在前面的基础上进入到code2目录

rm 文件名(删除文件)

因为文件里面不可能还有一个文件,所以不存在删除空文件的说法。

rm删除普通文件:发现他还询问我们是否确定删除,输入y代表确定,n代表不确定:

rm -r 目录名/文件名(删除目录/文件)

rm -r 虽然可以删除文件,但是删除文件用rm就可以了,rm -r 一般用来删除非空文件

像删除一个目录我们可以通过 " -r 递归式删除 "

不同于rmdir只能删除空目录,rm -r除了可以删除空目录,还可以删除非空目录:

(如果删除的是空目录它就不会问你是否要进入这个目录了)

如果我们想删除一个非空目录:(基于上面code2里面还是有code3的)

这里把code2和code3一起删掉,然后新创建空目录code2,再把code2删掉:

rm -rf 文件名/目录名(强制删除文件/目录)

rm 还有一个选项, -r 表示递归,还可以带一个 f (force,即强迫) :

有时候我想删一个文件,系统会提示你 "你确认吗?"

我们带一个 -f, 意思就是说 ------ "我非常确认!你不要给我提示了!"

在上面的基础上,我们新创建一个test2.c文件和code2目录,

在code2目录里建立一个code3空目录,然后把这三强制删除:

(前面不用强制删除是以后为了在公司等重要场所一个机会,两次都错就说不了自己误删了吧)

**注意事项:**不要在 root 下输入:rm -rf /

否则你的系统有可能会挂掉,即便没有挂,它它会从根目录开始递归把能删的都删了。

(如果你想试,且你现在也没啥文件,可以试试,就算挂掉了,去云服务器后台重启就行)

5. man手册

在写 C/C++ 的时候记不得某个函数,我们可以去查cpulspuls文档。

Linux 的命令有很多参数,我们不可能全记住,但是我们可以通过查看联机手册获取帮助。

对于没有 man 手册的问题:root 下输入 yum install -y man-pages

访问Linux联机手册 的命令是
man 语法 : man [ 选项 ] 命令
常用选项
-k 根据关键字搜索联机帮助 num 只在第 num 章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,查到就停止,用a 选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,man 手册分为 8 章(最常用的是前3章)
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式, 比如 passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的, 由各个游戏自己定义
7 是附件还有一些变量, 比如向 environ 这种全局变量在这里就有说明
8 是系统管理用的命令, 这些命令只能由 root 使用, 如 ifconfifig

举个简单的例子,我们想搜一下 printf ,但是又不想脱离 Linux 去搜,

这时我们可以去问系统的那个男人 ------ man,用man查一下man:(按q退出)

用man查一下rm:

用man查一下printf:

我们发现,printf 在这里竟然是一个命令?!是的,你没有看错。(其实也是个命令,后期讲)

man 不仅可以用来查命令,还可以用来查C语言函数。

因为 Linux 这款操作系统本身是由C语言写的,所以它的 man 手册默认是带C语言的标准手册的。

所以如果想查C语言的直接 man 就可以了,想查其他语言你也可以选择安装对应的语言手册。

但是我们一般不用在上面安装,直接百度搜对应语言的在线手册看会更好,看的也舒服。

用man查一下C语言的scanf函数:

实际上,man 手册更多的是用来查指令和系统调用接口的。

所以,如果我们想查某个不懂的命令我们只需要 man 一下,问问那个男人就可以了。


前面说到:man 常用选项
-k 根据关键字搜索联机帮助 num 只在第 num 章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,查到就停止,用a 选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,man 手册分为 8 章(最常用的是前3章)
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式, 比如 passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的, 由各个游戏自己定义
7 是附件还有一些变量, 比如向 environ 这种全局变量在这里就有说明
8 是系统管理用的命令, 这些命令只能由 root 使用, 如 ifconfifig

现在再给大家看一个查询的案例:

前面直接man printf,printf是C语言的函数,也是linux的命令,所以默认从1开始查,查到1就停止了,scanf不是命令,查到3停止,然后显示出来,现在man 3 printf:

6. 笔试选择题

这里先放一些笔试题,有点超纲,旨在让自己去找一些学习技巧和拓展学习。

1. 以下哪个命令输出Linux内核的版本信息( )

A.uname -r

B.vmstat

C.sar

D.stat

2. linux 2.6.* 内核默认支持的文件系统有哪些( )[多选]

A.ext3

B.ext2

C.ext4

D.xfs

E.ufs

3. linux查看cpu占用的命令是什么( )

A.top

B.netstat

C.free

D.df

4. 在Linux系统中, 为找到文件try_grep含有以a字母为行开头的内容, 可以使用命令( )

A.grep -E #$ try_grep

B.grep -E #a try_grep

C.grep -E ^$ try_grep

D.grep -E ^a try_grep

5. 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是( )

A.-m

B.-d

C.-f

D.-p

6. 批量删除当前目录下后缀名为.c的文件。如a.c、b.c。( )[不定项选择题]

A.rm *.c

B.find . -name "*.c" -maxdepth 1 | xargs rm

C.find . -name "*.c" | xargs rm

D.以上都不正确

7. Linux 有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令( )

A.cat

B.more

C.less

D.menu

答案及解析

  1. A

uname -r 查看linux内核版本信息

vmstat 报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

sar 主要帮助我们掌握系统资源的使用情况,特别是内存和CPU的使用情况

stat 用于显示文件的状态信息
2. ABCD

A 全称Linux extended file system, extfs,即Linux扩展文件系统,ext2为第二代

D XFS一种高性能的日志文件系统,2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS 特别擅长处理大文件,同时提供平滑的数据传输

E UFS是UNIX文件系统的简称,它来源于4.3Tahoe发行版中提供的BSD Fat Fast File System(FFS)系统,属于FFS的演化版本
3. A

A top 查看cpu资源使用状态

B netstat 查看网络连接状态

C free 查看内存资源状态

D df 查看磁盘分区资源状态
4. D

grep选项中,-E选项可以用来扩展选项为正则表达式;

表示匹配文件末尾,字符需要在之前表示以字符结尾 a$表示以a结尾

^表示匹配文件起始,字符需要在^之后表示以字符起始 ^a表示以a起始
5. D

A -m 在创建目录的同时设置权限

B -d 没有这个选项

C -f 没有这个选项

D -p 在创建多层级目录的时候若上级目录不存在则创建
6. AB

A rm *.c *通配符,表示匹配任意字符任意次

B find . -name "*.c" -maxdepth 1 | xargs rm

find . -name "*.c" -maxdepth 1 找到当前目录下.*结尾的文件,目录深度为1

xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,用于很多不支持|管道来传递参数的命令

相当于将前边命令的执行结果,也就是查找到的文件名,传递给后边的rm指令进行删除

C find . -name "*.c" | xargs rm 没有进行深度控制,删除的不仅是当前目录下的文件,会将子目录下的文件也删除
7. C

A cat 打印文件内容到终端显示

B more 分页显示文件内容,但是通常向上翻页不好使

C less 分页显示文件内容,可以灵活上下移动光标和翻页

D menu 没有这个指令(至少centos7上默认没有这个命令)

本篇完。

下一篇:零基础Linux_3(基本指令_下)目录/文件的复制移动查看打包+其它指令。

相关推荐
深圳安锐科技有限公司5 分钟前
首次接触结构安全自动化监测系统,价格高吗?后期维护?
运维·自动化
冬天vs不冷13 分钟前
Linux用户与权限管理详解
linux·运维·chrome
凯子坚持 c1 小时前
深入Linux权限体系:守护系统安全的第一道防线
linux·运维·系统安全
✿ ༺ ོIT技术༻1 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++
摸鱼也很难4 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops4 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys5 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛5 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程6 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo7 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器