Linux系列教程(四)——Linux文件和目录处理命令
这个系列教程的前面我们讲解了如何安装Linux系统,以及学习Linux系统的一些方法。那么从这篇博客开始,我们就正式进入Linux命令的学习。学习命令,首先要跟大家纠正的一点就是,我们不需要记住每一条命令的详细语法格式,学完之后我们只需要知道某个命令能干什么。这样我们在实际应用中,遇到需要实现某个功能,我们脑海只要能想起来适用于某个命令就行,至于详细格式我们可以通过查资料。当我们使用的多了,会不知不觉的记住这些命令,这才是正确的学习方法。Linux命令有很多,如果初学者就想全部记住这些命令的详细格式,会对我们产生很大的学习挫败性,还没记完这些命令,或许你已经丧失了学习Linux的热情了。所以接下来的几篇博客,我会详细讲解Linux常用命令的语法格式以及用法,大家记住大概的用法就行了,到时候不会可以回过头来查询。
本篇博客我们学习Linux最常用的文件处理命令。
1、Linux命令的普遍语法格式
命令格式: 命令 【-选项】【参数】
例子: ls -la /etc
说明: ①、个别命令使用不遵循此格式,【】这种符号表示可以省略
②、当有多个选项时,可以写在一起
③、简化选项(一般用一个-)与完整选项(一般用两个--)
比如 ls -a 等于 ls --all
上面的便是Linux系统中的一般命令格式,基本上所有命令都是遵循这种语法格式(个别命令除外)。
2、目录处理命令
一、显示目录文件命令:ls
①、命令名称:ls
②、英文原意:list
③、命令所在路径:/bin/ls
④、执行权限:所有用户
⑤、功能描述:显示目录文件
⑥、语法: ls 选项【-ald】【文件或目录】
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 仅显示目录名,而不显示目录下的内容列表
-h 人性化显示(hommization)
-i 查看任意一个文件的i节点(类似于身份证唯一信息)
-t 用文件和目录的更改时间排序;可以用第一个显示的文件判断最近修改的文件
注意:. 开头的文件除非是目录,否则就是隐藏文件
上面我们分别列出了ls的各种命令组合显示效果。我们以 -rw-------. 1 root root 1.3k Mar 11 08:05 anaconda-ks.cfg 为例解析每个字段:
①、-rw------- 第一位表示文件类型,- 表示是二进制文件,d 表示目录, l 表示软连接文件。后面的每三个为一组:
rw- --- ---
u g o
u(user)所有者 g(group)所属组 o(other) 其他人
r 读 w写 x执行 -无权限
②、1 引用计数,表示文件被引用过多少次
③、root 这第一个root表示所有者,一般创建一个文件,所有者默认是创建者。
④、root 这第二个root表示所属组。
⑤、1.3K 表示文件字节大小,不带单位表示字节
⑥、ar 11 08:05 表示文件的最后修改时间。注意:Linux没有明确的创建时间,只有最后一次访问时间、文件的状态修改时间、文件的数据修改时间
⑦、anaconda-ks.cfg 表示文件名
二、创建目录命令:mkdir
①、命令名称:mkdir
②、英文原意:make directories
③、命令所在路径:/bin/mkdir
④、执行权限:所有用户
⑤、功能描述:创建新目录
⑥、语法: mkdir 【-p】【目录名】
-p 递归创建
例子:创建单个目录:mkdir /tmp/vae.txt
创建多个目录:mkdir /tmp/a.txt /tmp/b.txt
注意:1、创建的目录已经存在, 那么 Linux 会提示我们 Linux 无法创建它。
2、不带任何参数运行 mkdir 命令会在当前目录下创建目录。
3、不带上-p,如果新建的文件上级目录不存在则不会执行成功这种说法是错误的。加或者不加上 -p 前面的目录没有得都会依次创建。
4、创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。
三、切换目录命令:cd
①、命令名称:cd
②、英文原意:change directory
③、命令所在路径:shell 内置命令
④、执行权限:所有用户
⑤、功能描述:切换目录
⑥、语法: cd【目录名】
例子:切换到指定目录:cd /tmp/vae
回到上一级目录:cd ..
还是在当前目录:cd .
返回上两级目录:cd ../..
返回进入此目录之前所在的目录:cd -
四、shell内置命令和外部命令的区别
大家可以看到前面的三个命令,ls命令和mkdir命令都有命令的所在路径,而cd命令我们说是shell内置命令。这两者便是Linux内置命令和外部命令。
内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。
外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等。
用type命令可以分辨内部命令与外部命令:
内部命令和外部命令最大的区别之处就是性能。内部命令由于构建在shell中而不必创建多余的进程,要比外部命令执行快得多。因此和执行更大的脚本道理一样,执行包含很多外部命令的脚本会损害脚本的性能。
五、显示当前目录命令:pwd
①、命令名称:pwd
②、英文原意:print working directory
③、命令所在路径:/bin/pwd
④、执行权限:所有用户
⑤、功能描述:显示当前目录
⑥、语法: pwd
例子:显示当前目录:pwd
六、删除空目录命令:rmdir
①、命令名称:rmdir
②、英文原意:remove empty directories
③、命令所在路径:/bin/rmdir
④、执行权限:所有用户
⑤、功能描述:删除空目录(如果目录下存在文件则不能删除)
⑥、语法: rmdir 【空目录名】
例子:删除指定空目录:rmdir /tmp/a
注意:由于此命令只能删除空目录,在实际操作中应用的不多,后面我们讲解 rm 命令可以替代。
七、复制文件或目录命令:cp
①、命令名称:cp
②、英文原意:copy
③、命令所在路径:/bin/cp
④、执行权限:所有用户
⑤、功能描述:复制文件或目录
⑥、语法: cp -rp 【原文件或目录】【目标目录】
-r 复制目录
-p 保留文件属性
例子:比如我们将 root 目录下的install.log 文件复制到 tmp 目录下
可以用于复制后文件改名,比如我们将 root 目录下的 install.log 文件复制到 tmp的copyinstall.log 文件
还可同时复制多个文件,注意复制目录的时候要加 -r选项。加-p属性之后会将原文件的一些属性比如修改时间等也原封不动的复制过去。如果不加-p属性,那么复制后的文件修改时间为当前系统时间。
八、剪切文件或目录命令:mv
①、命令名称:mv
②、英文原意:move
③、命令所在路径:/bin/mv
④、执行权限:所有用户
⑤、功能描述:剪切文件、改名
⑥、语法: mv【原文件或目录】【目标目录】
例子:在 tmp 目录下创建目录 tmp1 ,然后在 tmp1 目录下创建目录 tmp1_1,然后 命令 mv /tmp/tmp1/tmp1_1 /tmp 将 tmp1目录下的 tmp1_1 剪切到 tmp 目录下。
九、删除文件或目录命令:rm
①、命令名称:rm
②、英文原意:remove
③、命令所在路径:/bin/rm
④、执行权限:所有用户
⑤、功能描述:剪切文件、改名
⑥、语法: rm -rf 【文件或目录】
-r 删除目录
-f 强制执行
例子:在 tmp 目录下有两个目录 tmp1 和 tmp1_1,rm -r tmp1_1 是删除这个目录,但是需要输入 y 来确认
rm -rf tmp1 是强制删除 tmp1 目录,不需要输入 y 来确认,这种做法很简单,但是容易误删文件,没有反悔的机会
rm -rf tmp1 tmp2 同时删除两个文件
3、文件处理命令
一、创建空文件命令:touch
①、命令名称:touch
②、英文原意:
③、命令所在路径:/bin/touch
④、执行权限:所有用户
⑤、功能描述:创建空文件
⑥、语法: touch 【文件名】
例子:在 tmp 目录下创建 tmp.log 文件
注意:创建文件时,文件名不要有空格,不然就是创建了 两个文件
touch progrom files 这是创建了两个文件,progrom 和 files
如果我们想创建一个文件名为 progrom files ,应该用引号括起来(尽量避免文件名包含空格)
touch "progrom files"
二、显示文件内容命令(适合内容较少的文件):cat
①、命令名称:cat
②、英文原意:
③、命令所在路径:/bin/cat
④、执行权限:所有用户
⑤、功能描述:显示文件内容(只能显示内容较少的文件)
⑥、语法: cat【文件名】
-n 显示文件行号
例子:通过不加参数-n和加参数-n,显示/etc/issue的内容
注意:此命令只能显示文件内容比较少的文件,如果文件内容很多,用cat命令是不合适的,视觉效果是屏幕不断滚动更新。
三、反向显示文件内容命令(适合内容较少的文件):tac
①、命令名称:tac
②、英文原意:
③、命令所在路径:/bin/tac
④、执行权限:所有用户
⑤、功能描述:显示文件内容(只能显示内容较少的文件)
⑥、语法: tac【文件名】
例子:显示/etc/issue的内容
四、分页显示文件内容命令(不能向前翻页):more
①、命令名称:more
②、英文原意:
③、命令所在路径:/bin/more
④、执行权限:所有用户
⑤、功能描述:分页显示文件内容
⑥、语法: more【文件名】
(空格)或f 翻页(一页一页的往后显示)
(Enter) 换行(一行一行的往后显示)
q 或 Q 退出
例子:查看etc目录下的 services 文件信息:more /etc/services
五、分页显示文件内容命令(可以前后翻页):less
①、命令名称:less
②、英文原意:
③、命令所在路径:/usr/bin/less
④、执行权限:所有用户
⑤、功能描述:分页显示文件内容
⑥、语法: less【文件名】
(空格)或f 或PgDn 翻页(一页一页的往后显示)
PgUp向前翻页
(Enter) 换行或向下的箭头(一行一行的往后显示)
向上的箭头(一行一行的往前显示)
q 或 Q 退出
输入/想搜索的字符,然后回车键
例子:查看etc目录下的 services 文件信息:less/etc/services。这个比较简单,我们就不截图演示了,主要是最后提到的搜索功能,我们在进入命令之后,输入
/想搜索的字符,然后回车键,如下:
回车之后,如下显示:
六、显示文件内容命令(指定行数):head
①、命令名称:head
②、英文原意:
③、命令所在路径:/usr/bin/head
④、执行权限:所有用户
⑤、功能描述:显示文件的前面几行
⑥、语法: head【文件名】
-n 指定显示的行数
不加 -n 默认显示前 20 行数据
例子:显示 etc目录下的 services 文件前面 20 行 head -n 20 /etc/services
七、反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示):tail
①、命令名称:tail
②、英文原意:
③、命令所在路径:/usr/bin/tail
④、执行权限:所有用户
⑤、功能描述:显示文件的后面几行
⑥、语法: tail【文件名】
-n 指定显示的行数
-f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)
例子:显示 etc目录下的 services 文件后面 20 行 tail -n 20 -f /etc/services
注意:如果我们想结束加上 -f显示的tail命令,通过 Ctrl+C。
4、总结
本篇博客我们主要讲解了Linux系统中的文件和目录处理命令,显示目录文件信息 ls 这是我们最常用的,然后创建目录命令 mkdir,切换目录命令 cd,显示当前目录 pwd,删除空目录命令 rmdir,这个命令用的不多,如果我们想删除目录可以用 rm 命令,注意 rm 如果加上 -f 参数,那将没有提示,直接将文件从系统中删除,需要特别注意,以免删除系统文件。然后我们接着介绍了复制文件或目录命令 cp,剪切文件或目录命令 mv,注意mv命令在剪切后可以直接更改文件或目录名称。
接着我们介绍了几个文件处理命令,创建空文件 touch,显示文件内容的命令有很多,我们也不需要记住那么多,首先less命令能显现文件内容比较多的文件,而且能前后翻页显示。再就是如果我们需要动态监视文件内容的变化,比如某个日志文件,我们可以通过 tail 加上-f参数动态显示文件末尾的内容。
Linux系列教程(四)——Linux文件和目录处理命令的更多相关文章
- Linux中一个快速查找文件和目录的命令
功能介绍: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,值得注意的是:版本不同,会有所不 ...
- Linux系列教程(四)——Linux常用命令之文件和目录处理命令
这个系列教程的前面我们讲解了如何安装Linux系统,以及学习Linux系统的一些方法.那么从这篇博客开始,我们就正式进入Linux命令的学习.学习命令,首先要跟大家纠正的一点就是,我们不需要记住每一条 ...
- Linux系列教程(六)——Linux文件搜索命令
前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s 链接名 表示创建软链接,不加-s表示创建硬链接:还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令 ...
- Linux系列教程(六)——Linux常用命令之文件搜索命令
前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s 链接名 表示创建软链接,不加-s表示创建硬链接:还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令 ...
- Linux常用命令之文件和目录处理命令
目录 1.Linux命令的普遍语法格式 2.目录处理命令 一.显示目录文件命令:ls 二.创建目录命令:mkdir 三.切换目录命令:cd 四.shell内置命令和外部命令的区别 五.显示当前目录命令 ...
- Linux系列教程(五)——Linux链接命令和权限管理命令
前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...
- Linux系列教程(七)——Linux帮助和用户管理命令
上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...
- Linux系列教程(七)——Linux常用命令之帮助和用户管理命令
上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...
- Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令
前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...
随机推荐
- 201521123020《java程序设计》 第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1. ...
- Day-16: 图形界面
Python支持多种图形界面,有:第三方库有Tk.wxWidgets.Qt.GTK等. Python自带的库是支持Tk的Tkinter,无需安装任何安装包,就可以直接使用. 在Python中使用函数调 ...
- Ansible系列(五):playbook应用和roles自动化批量安装示例
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- Android 之http编程
HTTP-GET和HTTP-POST定义: 都是使用HTTP的标准协议动词,用于编码和传送变量名/变量值对参数,并且使用相关的请求语义. 每个HTTP-GET和HTTP-POST都由一系列HTTP请求 ...
- mysql 实验论证 innodb表级锁与行级锁
innodb 的行锁是在有索引的情况下,没有索引的表是锁定全表的. 表锁演示(无索引) Session1: mysql> set autocommit=0; mysql> select * ...
- 多年iOS开发经验总结
总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; ...
- 【京东详情页】——原生js爬坑之放大镜
一.引言 在商城的详情页中,放大镜的功能是很常见的.这里京东详情页就要做一个仿放大镜的效果,预览如下: 二.实现原理 实际上,放大镜的实现是单纯用几个div,鼠标移入其中一个小图div,触发事件显示另 ...
- JAVA 并发(待补全!)
从性能上看 如果没有任务会阻塞 那么在单处理器的机器人使用并发就没有任何意义 (需要上下文切换 时间反而长) 进程是运行在他自己地址空间的自包容的程序 协作多线程与抢占式多线程 想要定义任务需要实现R ...
- Android Framework 初探
最近工作任务不忙,学习一下Android Framework方面的知识. 一.介绍,是什么 Android的Framework是直接应用之下的一层,叫做应用程序框架层.这一层是核心应用程序所使用的AP ...
- 反射结合xml简单的模拟spring创建bean
框架最底层其实就是通过反射实现的,就像spring,当你配置各种各样的bean时都是以配置文件的形式配置的,你需要用到哪些bean就配哪些,spring容器就会根据你的需求去动态加载,这儿写一个简单的 ...