Linux命令入门教程(三):文件基础篇

2023-11-04

3.1 文件基础介绍

Linux系统的一个重要思想:一切皆文件

在Linux中,一个普通文件如.txt文本是一个文件,一个压缩包是一个文件,一个设备也是一个文件。

Linux中文件的后缀名并不重要,你可以创建一个无后缀名的文件,或给它一个不相符的后缀名,但是并不影响其正常工作。

3.2 文件操作命令

3.2.1 创建空文件touch

touch - change file timestamps,修改文件的时间戳,当文件不存在时,系统为创建此文件,为了方便,通常也用来创建一个文件。

语法:

$ touch [OPTION] FILE

常用用法:

命令

说明

touch test_file.txt

创建test_file.txt文件

touch 1.txt 2.txt

创建2个文件

3.2.2 文件查看cat/less/more/tail

cat/less/more/head/tail等命令都是用来查看文件内容的。

命令

说明

cat aaa.txt

显示aaa.txt文件内容

less aaa.txt

动态浏览文件,可向前向后随意翻阅。

more aaa.txt

动态浏览文件,显示当前位置百分比,只能向后滚动

head aaa.txt

显示文件开头若干行,默认10行,可通过参数指定要显示的行数,例如显示20行:head -n 20 aaa.txt

tail aaa.txt

显示文件末尾若干行,默认10行,可通过参数指定要显示的行数,例如显示20行:tail -n 20 aaa.txt

3.3 复制/移动/删除

复制/移动/删除是几个较常用的命令,操作对象为目录或文件。

3.3.1 复制cp

cp - copy files and directories,复制文件或目录。

语法:

$ cp [OPTION] SOURCE DEST

SOURCE: 源文件或目录;

DEST: 目标文件或目录;

[OPTION]: 常用选项有-arf

-r: 在复制目录时,将复制该目录下所有的子目录和文件;

-f: 强行复制,直接覆盖已存在的同名文件,不给出提示;

-i: 与-f相反,覆盖同名文件时给出提示,回复y/n确认是否覆盖;

-a: 通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。

常用用法:

命令

说明

cp aaa.txt test_dir/

将文件aaa.txt复制到test_dir目录下

cp -r dir0/ test_dir/

将目录dir0复制到test_dir目录下,复制目录要用-r选项

cp -rf dir0/* test_dir/

将dir0下的所有文件复制到test_dir目录下,强制覆盖

cp -ri dir0/ test_dir/

将目录dir0复制到test_dir目录下,覆盖前提示。

cp aaa.txt new.txt

将文件aaa.txt复制为一个新文件new.txt(不存在,新创建)

cp dir0/ new_dir -r

将目录dir0复制为一个新目录new_dir(不存在,新创建)

注:若目标目录不存在,相当于将源目录复制一份并命名为目标目录;若目标目录存在,相当于将源目录复制到目标目录下。

3.3.2 移动mv

mv - move (rename) files,将文件/目录移动到某位置,或将文件/目录重命名。

语法:

$ mv [OPTION] SOURCE DEST

SOURCE: 源文件或目录;

DEST: 目标文件或目录;

[OPTION]: 该命令选项不常用,多直接不带选项使用。

常用用法:

命令

说明

mv aaa.txt dir0/

将文件aaa.txt移动到dir0目录下

mv aaa.txt new_aaa.txt

将文件aaa.txt重命名为new_aaa.txt

mv dir0/ test_dir/

将目录dir0移动test_dir目录下

mv dir0/ new_dir

将目录dir0重命名为new_dir(目录不存在)

注:若目标目录不存在,相当于将源目录重命名为目标目录;若目标目录存在,相当于将源目录移到目标目录下。

3.3.3 删除rm

rm - remove files or directories,删除文件或目录。

语法:

$ rm [OPTION] [FILE]

FILE: 要删除的文件或目录

OPTION: 常用的选项有:-rf

-f: 强制删除,不询问;

-r: 用于删除目录,递归删除子目录及文件。

常用用法:

命令

说明

rm aaa.txt

删除文件aaa.txt

rm -r dir0/

删除目录dir0

rm -rf dir0/*

强制目录dir0下的所有文件,dir0将变为一个空目录

注:rm -rf 删除系统相关文件是个危险操作,请在确保安全的情况下使用

温馨提示:文件编辑请看vi/vim编辑器章节(鉴于命令的复杂度,故将此章节延后)。

3.4 文件压缩与归档

首先,要弄清两个概念:打包(归档)和压缩。

打包是指将一大堆文件或目录什么的变成一个总的文件,

压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

3.4.1 gzip压缩

gzip是压缩命令。

gzip - compress or expand files,压缩和解压文件,文件经压缩后会变成后缀为”.gz”的文件。

语法:

$ gzip [OPTION] FILE

FILE: 要压缩的文件;

OPTION: 常用的选项有:-dvl

-d: 解压;

-v: 显示指令执行过程

-l: 列出压缩文件的相关信息

常用用法:

命令

说明

gzip aaa.txt

压缩aaa.txt文件,压缩后为aaa.txt.gz

gzip -dv aaa.txt.gz

解压aaa.txt.gz,解压出来恢复为aaa.txt

gzip -l aaa.txt.gz

列出aaa.txt.gz压缩文件的压缩信息

注:gzip是linux中的一种压缩方式,主要压缩方式有以下:

gzip:压缩速度快,应用广泛的压缩方式;

bzip: 压缩形成的文件小,但是可用性不如gzip;

xz: 是新的压缩方式,可以自动提供较佳的压缩率;

3.4.2 tar归档压缩

tar - an archiving utility,一个归档/备份工具。

tar本身是打包/备份/归档的命令,但它可以调用压缩命令,可以实现将一堆文件打包后再进行压缩。tar可以调用gzip方法。

语法:

归档备份:

$ tar [OPTION] ARCHIVE FILE

还原:

$ tar [OPTION] ARCHIVE [OPTION] PATH

ARCHIVE: 归档文件

FILE: 要归档的文件

PATH: 指定还原的路径

OPTION: 常用的选项有:-cvfzxC

-c: 创建新的备份文件;

-x: 从备份文件中还原文件,解压;

-v: 显示命令执行过程;

-f: 指定备份文件;

-C: 指定目标文件;

-z: 通过gzip指令处理备份文件;

-j: 通过bzip2指令处理备份文件;

tar归档备份文件(.tar格式文件):

命令

说明

tar -cvf dir0.tar ./dir0

将dir0目录归档备份为新的文件dir0.tar

tar -xvf dir0.tar

将dir0.tar解包还原到当前目录

tar -xvf dir0.tar -C test_dir/

将dir0.tar解包还原到指定目录test_dir中

与gzip结合先打包归档再压缩(.tar.gz格式文件):

命令

说明

tar -zcvf dir0.tar.gz dir0/

将dir0目录归档并压缩为新的文件dir0.tar.gz

tar -zxvf dir0.tar.gz

将dir0.tar.gz解压解包还原到当前目录

tar -zxvf dir0.tar.gz -C /home/zengzr/

将dir0.tar.gz解压解包还原到/home/zengzr/

与bzip2先打包归档再压缩(.tar.bz2格式文件):

命令

说明

tar -jcvf dir0.tar.bz2 dir0/

将dir0目录归档并压缩为新的文件dir0.tar.bz2

tar -jxvf dir0.tar.bz2

将dir0.tar.gz解压解包还原到当前目录

tar -jxvf dir0.tar.bz2 -C test_dir/

将dir0.tar解压解包还原到目录test_dir中

注:

当tar命令不加选项-z或-j时,归档备份是不会压缩的,因此产生的备份文件较大;

当加上选项-z或-j时,会先归档再压缩成gzip或bzip格式,因此产生的备份文件较小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux命令入门教程(三):文件基础篇 的相关文章

  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • 如何在linux中使用iptables将http和https流量转发到透明代理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • 如何将命令输出作为多个参数传递给另一个命令

    我想将命令的每个输出作为多个参数传递给第二个命令 例如 grep pattern input returns file1 file2 file3 我想复制这些输出 例如 cp file1 file1 bac cp file2 file2 b
  • grep 彩色线条

    我编写了一个简单的 PHP shell 脚本 它解析文件并输出某些元素 它产生大量的输出 采用不同的 bash 颜色 绿色表示正常 黄色表示警告 红色表示错误等 在开发过程中我想过滤掉一些行 例如 所有包含红色文本的行 我可以使用grep
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 每个虚拟主机的错误日志?

    在一台运行 Apache 和 PHP 5 的 Linux 服务器上 我们有多个带有单独日志文件的虚拟主机 我们似乎无法分离 phperror log虚拟主机之间 覆盖此设置
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul

随机推荐