Linux常用命令之文件和目录处理命令

Linux命令的普遍语法格式

命令格式: 命令 【-选项】【参数】
例子:   ls -la /etc
说明:    ①、个别命令使用不遵循此格式,【】这种符号表示可以省略
     ②、当有多个选项时,可以写在一起
     ③、简化选项(一般用一个-)与完整选项(一般用两个--)
       比如 ls  -a 等于 ls  --all

上面的便是Linux系统中的一般命令格式,基本上所有命令都是遵循这种语法格式(个别命令除外)。

目录处理命令

显示目录文件命令: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 表示文件字节大小,不带单位表示字节

⑥、Mar 11 08:05 表示文件的最后修改时间。注意:Linux没有明确的创建时间,只有最后一次访问时间、文件的状态修改时间、文件的数据修改时间

⑦、anaconda-ks.cfg 表示文件名 

创建目录命令:mkdir

语法: mkdir 【-p】【目录名】

  • -p 递归创建

例子:创建单个目录:mkdir /tmp/vae.txt

  创建多个目录:mkdir /tmp/a.txt  /tmp/b.txt

注意:

  • 创建的目录已经存在, 那么 Linux 会提示我们 Linux 无法创建它。
  • 不带任何参数运行 mkdir 命令会在当前目录下创建目录。
  • 不带上-p,如果新建的文件上级目录不存在则不会执行成功这种说法是错误的。加或者不加上 -p 前面的目录没有的都会依次创建。
  • 创建目录的首要条件是, 在想要创建目录的目标路径下你必须具有访问权限。

切换目录命令:cd

语法: 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

例子:显示当前目录:pwd

删除空目录命令:rmdir

功能描述:删除空目录(如果目录下存在文件则不能删除)

语法: rmdir 【空目录名】

例子:删除指定空目录:rmdir /tmp/a

注意:由于此命令只能删除空目录,在实际操作中应用的不多,后面我们讲解 rm 命令可以替代。

复制文件或目录命令:cp

功能描述:复制文件或目录

语法: cp -rp 【原文件或目录】【目标目录】

  •  -r    复制目录
  •  -p    保留文件属性

例子:比如我们将 root 目录下的install.log 文件复制到 tmp 目录下

可以用于复制后文件改名,比如我们将 root 目录下的 install.log 文件复制到 tmp的copyinstall.log 文件

还可同时复制多个文件,注意复制目录的时候要加 -r选项。加-p属性之后会将原文件的一些属性比如修改时间等也原封不动的复制过去。如果不加-p属性,那么复制后的文件修改时间为当前系统时间。

剪切文件或目录命令:mv

功能描述:剪切文件、改名

语法: mv【原文件或目录】【目标目录】

例子:在 tmp 目录下创建目录 tmp1 ,然后在 tmp1 目录下创建目录 tmp1_1,然后 命令 mv /tmp/tmp1/tmp1_1 /tmp 将 tmp1目录下的 tmp1_1 剪切到 tmp 目录下。

删除文件或目录命令:rm

语法: rm -rf 【文件或目录】

  • -r    删除目录
  • -f    强制执行

例子:在 tmp 目录下有两个目录 tmp1 和 tmp1_1,rm -r tmp1_1 是删除这个目录,但是需要输入 y 来确认

rm -rf tmp1 是强制删除 tmp1 目录,不需要输入 y 来确认,这种做法很简单,但是容易误删文件,没有反悔的机会

rm -rf tmp1 tmp2 同时删除两个文件

文件处理命令

创建空文件命令:touch

语法: touch 【文件名】

例子:在 tmp 目录下创建 tmp.log 文件

注意:创建文件时,文件名不要有空格,不然就是创建了两个文件

touch progrom files   这是创建了两个文件,progrom 和 files

如果我们想创建一个文件名为 progrom files ,应该用引号括起来(尽量避免文件名包含空格)

touch "progrom files"

显示文件内容命令(适合内容较少的文件):cat

语法: cat【文件名】

  • -n  显示文件行号

例子:通过不加参数-n和加参数-n,显示/etc/issue的内容

注意:此命令只能显示文件内容比较少的文件,如果文件内容很多,用cat命令是不合适的,视觉效果是屏幕不断滚动更新。

反向显示文件内容命令(适合内容较少的文件):tac

语法: tac【文件名】

例子:显示/etc/issue的内容

分页显示文件内容命令(不能向前翻页):more

语法: more【文件名】

  • (空格)或f 翻页(一页一页的往后显示)
  • (Enter) 换行(一行一行的往后显示)
  • q 或 Q 退出

例子:查看etc目录下的 services 文件信息:more /etc/services

分页显示文件内容命令(可以前后翻页):less

语法: less【文件名】

  • (空格)或f 或PgDn 翻页(一页一页的往后显示)
  • PgUp向前翻页
  • (Enter) 换行或向下的箭头(一行一行的往后显示)
  • 向上的箭头(一行一行的往前显示)
  •  q 或 Q 退出
  • 输入/想搜索的字符,然后回车键

例子:查看etc目录下的 services 文件信息:less/etc/services。这个比较简单,我们就不截图演示了,主要是最后提到的搜索功能,我们在进入命令之后,输入/想搜索的字符,然后回车键,如下:

回车之后,如下显示:

显示文件内容命令(指定行数):head

语法: head【文件名】

  • -n   指定显示的行数
  • 不加 -n 默认显示前 20 行数据

例子:显示 etc目录下的 services 文件前面 20 行   head -n 20 /etc/services

反向文件内容命令(文件即时更新后也能动态显示,多用于日志文件显示):tail

语法: tail【文件名】

  • -n   指定显示的行数
  • -f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)

例子:显示 etc目录下的 services 文件后面 20 行   tail  -n 20 -f /etc/services

注意:如果我们想结束加上 -f显示的tail命令,通过 Ctrl+C。

 

 

posted @   残城碎梦  阅读(275)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示