Linux 基础介绍

您所在的位置:网站首页 linux一次显示一页命令 Linux 基础介绍

Linux 基础介绍

2023-03-04 04:34| 来源: 网络整理| 查看: 265

文章目录 01 学习目标02 Linux/Unix 操作系统简介2.1 Linux 操作系统的目标2.2 Linux 操作系统的作用2.3 Unix 家族历史2.4 Linux 家族历史2.5 Linux 和Unix 的联系2.6 Linux 内核介绍2.7 Linux 发行版本2.8 Unix/Linux 开发应用领域介绍 03 Linux 目录结构3.1 Win 和Linux 文件系统区别3.2 Linux 常见目录介绍 04 Linux命令解析器4.1 概述4.2 shell 命令解释器 05 Bash 解析器常用快捷键06 Linux 系统相关快捷键07 内建命令和外部命令08 Linux命令格式09 帮助文档查看方法9.1 man9.2 内建命令(help)9.3 外部命令(--help) 10 绝对路径和相对路径11 目录相关的命令11.1 pwd11.2 cd11.3 mkdir11.4 rmdir 12 文件类型13 文件相关命令13.1 ls13.2 touch13.3 cp13.4 rm13.5 mv 14 文件内容查看命令14.1 cat14.2 more14.3 less14.4 head14.5 tail 15 du和df命令15.1 du15.2 df 16 查找相关命令16.1 find16.2 grep 17 管道18 压缩包管理18.1 tar18.2 gzip18.3 bzip218.4 zip 和 unzip 19 文件权限管理19.1 文件权限19.2 访问用户分类19.3 访问权限说明19.4 chmod19.5 chown19.6 chgrp 20 进程管理20.1 ps20.2 top20.3 kill20.4 killall 21 软件安装和卸载21.1 在线安装21.2 软件包安装 22 重定向23 其它命令23.1 tree23.2 ln 链接23.3 scp

01 学习目标 Linux 下的目录结构和常见目录的作用Linux 下的相对路径和绝对路径Linux 下常用文件和目录操作相关的命令修改用户权限、用户和用户组相关的命令find 命令相关参数进行文件查找grep 命令根据文件内容进行文件的查找熟练使用压缩工具完成文件或目录的压缩解压缩熟练掌握 Ubuntu下的软件安装和卸载 02 Linux/Unix 操作系统简介 2.1 Linux 操作系统的目标 方便性:使计算机系统易于使用有效性:以更有效的方式使用计算机系统资源扩展性:方便用户有效开发、测试和引进新功能开放性:所谓开放性,是指系统能遵循世界标准规范,特别是遵循开放系统互连OSI 国际标准。 2.2 Linux 操作系统的作用

操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。

2.3 Unix 家族历史 1965:贝尔实验室(Bell Labs)加入一项由通用电气和麻省理工学院合作的计划,该计划要建立一套多使用者、多任务、多层次的 MULTICS 操作系统。后来因为项目太为复杂失败。1969:其主要开发者 Thompson(后被称为UNIX之父)和 Ritchie 领导一组开发者,开发了一个新的多任务操作系统—UNICS,后来被改名为 Unix,最初的 Unix 是用 B 语言和汇编语言混合编写而成。1971:两人在贝尔实验室共同发明了 C 语言,并于 1973 用 C 语言重写了 Unix。1974:UNIX 第一次出现在贝尔实验室以外。此后 UNIX 被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。1980:有两个最主要的 Unix 的版本线,一个是 Berkeley 的 BSD UNIX,另一个是 AT&T 的 Unix,两者的竞争最终引发了 Unix 的战争,最终导致 Unix 出现各种各样的变种。1982:AT&T 基于版本7开发了 UNIX System Ⅲ的第一个商业版本,并不再开源。1992~2001:由于版权问题,AT&T 公司与 BSD 开发组开始了一场将近 10 年的版权官司。UNIX 由于其昂贵的费用,仅局限于大型机的应用;BSD 因为版权问题,失去了宝贵的发展时期。 2.4 Linux 家族历史 Minix(mini-UNIX)最初是由 Andrew Tanenbaum 教授,仿照 4.3BSD 的源代码,白手起家完成了 12000 行 C 语言的编写工作这个系统只是一个教学工具,没有什么实际应用价值。1990年,Linus Torvalds 决定编写一个自己的 Minix 内核,初名为 Linus’ Minix,意为 Linus 的 Minix 内核,后来改名为 Linux,此内核于 1991 年正式发布,并逐渐引起人们的注意。Linux 操作系统的诞生、发展、和成长过程依赖于五个重要支柱:unix操作系统、minix 操作系统、GNU 计划、POSIX 标准和互联网。GNU 计划:GNU 是 “GNU is Not Unix” 的递归缩写,由 Richard M.Stallman 于1984年创办,旨在开发一个免费、类 unix 的操作系统—GNU系统及其开发工具;Emacs 编辑系统、BASH shell 程序、GCC、GDB 等开发工具都是 GNU 组织的产品。1992年 Linux 与其他 GNU 软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称 Linux。POSIX 标准:POSIX 标准定义了操作系统应该为应用程序提供的接口标准,POSIX标准用来统一Unix、Linux 各分支编程接口,以提高其通用性和可移植性。 2.5 Linux 和Unix 的联系 UNIX 系统是工作站上最常用的操作系统,它是一个多用户、多任务的实时操作系统,允许多人同时访问计算机, 并同时运行多个任务。UNIX 系统具有稳定、高效、安全、方便、功能强大等诸多优点,自 20 世纪 70 年代开始便运行在许多大型和小型计算机上。UNIX 虽然是一个安全、稳定且功能强大的操作系统,但它也一直是一种大型的而且对运行平台要求很高的操作系统,只能在工作站或小型机上才能发挥全部功能,并且价格昂贵,对普通用户来说是可望而不可及的,这为后来 Linux 的崛起提供了机会,Linux 是一个类 UNIX 操作系统。Linux是免费的、不受版权制约、与 UNIX 兼容的操作系统。Linux在 x86 架构上实现了 UNIX 系统的全部特性,具有多用户多任务的能力,同时保持了高效性和稳定性。Linux 具有如下的优秀的特点: 开放性;完全免费;多用户;多任务;良好的用户界面;设备独立性;提供了丰富的网络功能;可靠的系统安全性;良好的可移植性。 2.6 Linux 内核介绍

内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。

Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环:

稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些 bug 或加入一些新的驱动程序。开发版:由于要试验各种解决方案,所以变化很快。

内核源码网址:http://www.kernel.org, 所有来自全世界的对 Linux 源码的修改最终都会汇总到这个网站,由 Linus 领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。

Linux内核代码图:

Linux内核源码获取方式:

ProtocolLocationHTTPhttps://www.kernel.org/pub/GIThttps://git.kernel.org/RSYNCrsync://rsync.kernel.org/pub/ 2.7 Linux 发行版本

Linux 发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。

这些操作系统通常由 Linux 内核、以及来自 GNU 计划的大量的函式库,和基于X Window 的图形界面,在 X Window 中用户同样可以通过使用鼠标对窗口、菜单等进行操作来完成相应的工作。

X Window 系统是一个非常出色的图形窗口系统,是类 UNIX 系统的图形用户界面的工业标准。X Window 系统最重要的特征之一就是它的结构与设备无关。

X Window 系统的主要特点有如下几点:

X Window 系统是客户机/服务器结构的。X Window 的实现是与操作系统内核分开的,其主要由 X Server 和 X Client 两部分组成。X Window 系统不是 Unix/Linux 操作系统的必须的构成部分,而只是一个可选的应用程序组件。

Best Linux distro for developers in 2018

POSITION2015201420181Linux MintLinux MintArch Linux2DebianUbuntuDebian3UbuntuDebianRaspbian4openSUSEopenSUSEGentoo5FedoraFedoraUbuntu6MageiaMageiaFedora7ManjaroArchOpenSUSE8CentOSElementaryCentOS9ArchCentOSSolus10ElementaryZorinPuppy Linux参考网址:Best Linux distro for developers in 2018

目前国内使用最多的就是 Ubuntu 与 Centos,其中 Ubuntu 使用最多,常用于一般的开发中,而 Centos 一般用于与 Orical 等数据库相关的开发中。查看 linux 操作系统版本方法(参考文章):

方法一:使用 Linux 的 etc 目录中的 os-release 文件,运行命令: cat /etc/os-release;方法二(推荐):使使用 lsb_release 命令检查 Linux 操作系统(OS):lsb_release -a;方法三:使用 Linux 的 proc 目录中可用的版本文件,运行命令:cat /proc/version检查linux版本。 2.8 Unix/Linux 开发应用领域介绍 Unix/Linux 服务器 是目前Unix/Linux应用最多的一个领域,可以提供Web、FTP、Gopher、SMTP/POP3、Proxy/Cache、DNS等服务器,支持服务器集群,支持虚拟主机、虚拟服务、VPN等。嵌入式Linux系统 嵌入式Linux是将流行的Linux操作系统进行剪裁修改,能够在嵌入式计算机系统上运行的一种操作系统。Linux嵌入式系统能够支持多种CPU和硬件平台,性能稳定,剪裁性好,开发和使用容易。其中包括Embedix、uCLinux、muLinux等。桌面应用 近年来,Linux系统特别强调在桌面应用方面的改进,并且已达到相当的水平,完全可以作为一种集办公应用、多媒体应用、网络应用等多方面功能于一体的图形界面操作系统,在办公应用方面,Unix/Linux集成了openOffice、SUN公司的StarOffice以及KOffice等工具。电子政务 随着Linux的快速发展,Linux已逐渐成为Windows系统重要的竞争力量。尤其是Linux在安全性方面的独特优势,又使得Linux在政府应用领域得到很大的发展。目前一些国家正将其电子政务系统向Linux平台迁移。中国政府也对Linux给予极大的支持。 03 Linux 目录结构 3.1 Win 和Linux 文件系统区别

在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符:

每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形(即 windows 系统是磁盘分区的),如图所示:

windows 系统中不同磁盘之间的文件、文件夹移动比较缓慢,因为文件/文件夹会从一个磁盘移动到另一个磁盘windows 系统中同一个磁盘下,文件/文件夹的移动非常快,因为不涉及到从一个磁盘到另一个磁盘,操作系统只是修改了指针的指向。

在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):

RedHat 系统:Ubuntu 系统

在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于 1994 年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系统层次结构标准。FHS 标准规定了 Linux 根目录各文件夹的名称及作用,统一了 Linux 界命名混乱的局面。

和 Windows 操作系统类似:

所有 Unix/Linux 的数据都是由文件系统按照树型目录结构管理的。Unix/Linux 操作系统同样要区分文件的类型,判断文件的存取属性和可执行属性。Windows系统中存在磁盘分区Unix/Linux也采用了树状结构的文件系统,它由目录和目录下的文件一起构成。 但Unix/Linux文件系统不使用驱动器这个概念,而是使用单一的根目录结构,所有的分区都挂载到单一的“/”目录上,其结构示意图如图所示: 无论何种版本的 Linux 发行版,桌面、应用都只是 Linux 的外衣,文件组织、目录结构才是 Linux 的内心。

Windows 和 linux 下文件分隔符的不同:Windows下是以 ’\’ 为分隔符,而linux下为 ”/“ 为分隔符。

3.2 Linux 常见目录介绍 /: 根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat等。/boot: 放置linux系统启动时用到的一些文件,如 Linux 的内核文件,/boot/vmlinuz;系统引导管理器,/boot/grub。/dev: 存放 linux 系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。/home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~ 表示当前用户的家目录,~edu 表示用户 edu 的家目录。/lib,/usr/lib,/usr/local/lib: 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。/lost+fount: 系统异常产生错误时,会将一些遗失的片段放置于此目录下。/mnt:/media: 光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。/opt: 给主机额外安装软件所摆放的目录。/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。/root: 系统管理员 root 的家目录。/sbin:/usr/sbin:/usr/local/sbin: 放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用。/tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。/srv: 服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local 存放软件升级包。/usr/share/doc 系统说明文件存放目录。/usr/share/man 程序说明文件存放目录。/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

上面的目录比较多,但以下几个目录相对于开发而言比较重要:bin目录、boot目录、dev目录、etc目录、home目录、lib目录、lib64目录、sbin目录、sys目录

04 Linux命令解析器 4.1 概述 很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。Linux 刚出世时没有什么图形界面,所有的操作全靠命令完成,就如同电视里的黑客那样,充满了神秘与晦涩。近几年来,尽管 Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux 命令行的应用还是占有非常重要的席位,而且许多Linux功能在命令行界面要比图形化界面下运行的快。可以说不会命令行,就不算会 Linux。Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。Linux 发行版本最少的命令也有 200 多个,这里只介绍比较重要和使用频率最多的命令。 4.2 shell 命令解释器

命令解析器的作用:交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能。

Linux系统中提供了好几种不同的命令解释器,如shell(/bin/sh)、bash(/bin/bash)等,一般默认使用bash作为默认的解释器。

05 Bash 解析器常用快捷键

5.1 Tab 键

补齐命令补齐路径显示当前目录下的所有目录

5.2 清屏

clear 作用为清除终端上的显示(类似于 DOS 的 cls 清屏功能),也可使用快捷键:Ctrl + L ( “L” 为字母 )。

5.3 中断进程

ctlr+c 的作用是中断终端的操作。

5.4 遍历输入的历史命令

从当前位置向上遍历:ctrl + p (↑)从当前位置向下遍历: ctrl + n(↓)

5.5 光标相关操作

光标左移: ctrl + b (←)坐标右移: ctrl + f (→)移动到头部: ctrl + a(Home)移动到尾部: ctlr + e(End)

5.6 字符删除

删除光标前边的字符:ctrl + h(Backspace)删除光标后边的字符:ctrl + d,光标后边的字符即光标覆盖的字符删除光标前所有内容:ctrl + u删除光标后所有内容:ctrl + k 06 Linux 系统相关快捷键

6.1 图形打开终端方式:(三种方式)

1)Alt + F2 打开运行输入 gnome-terminal 2) 搜索您的计算机 --> 输入终端 --> 打开 3)右击桌面打开终端

6.2 终端相关快捷键

(终端必须选中)

Ctrl + Shift + N 新建一个终端 Ctrl + Shift + T 在终端里新建一个标签 Ctrl + Shift + W 关闭标签页 Ctrl + Shift + Q 关闭窗口 Ctrl + Shift + C 复制 Ctrl + Shift + V 粘贴 Alt + [1 - 9] 标签之间切换 Ctrl + Shift + = 放大终端字体 Ctrl + - 缩小终端字体 Ctrl + 0 普通大小 F11 全屏 再次按F11退出全屏 Ctrl + D 关闭当前一个终端 Alt + F4 关闭整个终端 Ctrl + Shift + F 查找 Alt + Tab 应用程序间切换 Ctrl + Alt + Backspace 注销 Ctrl + Alt + F7 回到图形界面 Ctrl + Alt + F1到 Ctrl + Alt + F6 可以访问6个虚拟控制台

终端字体推荐使用:DejaVu Sans Mono Book

编辑–> 配置文件首选项–> 常规

07 内建命令和外部命令

7.1 内建命令

shell 内建命令是指 bash(或其它版本)工具中集成的命令。操作系统中的有的命令可能会有多个版本,这种情况下操作系统会默认采用内建命令,比如 bash中的 echo 命令与 /bin/echo 是两个不同的命令,尽管他们行为大体相仿。当在 bash 中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。所以在 bash 中键入 echo 命令实际上执行 bash 工具集中的 bash 命令也就是内建命令,而不是 /bin/echo 这个系统命令。

7.2 外部命令

外部命令是安装外部软件所带的命令

7.3 内建命令和外部命令对比

内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要 fork 出(产生出)一个子进程,而内建命令一般不用。外部命令是在 bash 之外额外安装的,通常放在 /bin,/usr/bin,/sbin,/usr/sbin…等等。可通过 “echo $PATH” 命令查看外部命令的存储路径,比如:ls、vi等。

7.4 命令类型查看方法

使用 type 命令查看,格式: type [-afptP] 名称 [名称 …] 显示命令类型的信息。

使用方法示例:

yxm@192:~$ type -a cd cd is a shell builtin # cd 是 shell 内建 yxm@192:~$ type -a echo echo is a shell builtin echo is /bin/echo # echo 是 shell 内建 # echo 是 /bin/echo yxm@192:~$ type -a ls ls is aliased to `ls --color=auto' ls is /bin/ls # ls 是 `ls --color=auto' 的别名 # ls 是 /bin/ls

如上所图 type -a echo 命令查找到两个类型,说明操作系统中的有的命令可能会有多个版本,这种情况下操作系统会默认采用内建命令。

08 Linux命令格式

command [ -options] [parameter1] … 说明:

command:命令名,相应功能的英文单词或单词的缩写[-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选parameter1 …:传给命令的参数,可以是零个一个或多个

【注意】linux 命令参数有的加一个 ‘-’,有的加两个 “–”:

加一个 ‘-’ 表示是省略模式,后面加单词简略的字母;加两个 “–” 表示全写模式,后面加单词。 09 帮助文档查看方法 9.1 man

man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏览不同的内容。

格式: man [选项] 命令名,示例如下:

deng@itcast:~$ man man

man 中各个 section 意义如下(8种中常用的也就是前三种): 1).Standard commands(标准命令) 2).System calls(系统调用,如open,write) 3).Library functions(库函数,如printf,fopen) 4).Special devices(设备文件的说明,/dev下各种设备) 5).File formats(文件格式,如passwd) 6).Games and toys(游戏和娱乐) 7).Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量) 8).Administrative Commands(管理员命令,如ifconfig)

man设置了如下的功能键:

功能键功能空格键显示手册页的下一屏Enter键一次滚动手册页的一行b回滚一屏f前滚一屏q退出man命令h列出所有功能键/word搜索word字符串

用法示例:

man -k passwd 搜索关键词 passwd man -a passwd 浏览 passwd 所有相关的页 man -f passwd 等价于 whatis man 1 printf 浏览 printf 第 1 页介绍 man 2 read 浏览 read 第 2 页介绍 man 3 printf 浏览 printf 第 3 页介绍 man 5 passwd 浏览 passwd 第 5 页介绍 man 8 chpasswd 浏览 chpasswd 第 8 页介绍

示例: 查看 ls 的用法:man 1 ls ( 1:为数字“1”,代表第 1 个 section,标准命令 ) :

实际上,我们不用指定第几个章节也用查看,如,man ls。但是有一种情况,假如,命令的名字和函数的名字刚好重名(如:printf),它既是命令,也可以是库函数,如果我们不指定章节号,man printf,它只查看命令的用法,不会查询函数的用法,因为 man 是按照手册的章节号的顺序进行搜索的。 所以,使用 man 手册时,最好指定章节号:

9.2 内建命令(help)

格式: help + 内建命令,应用示例:

9.3 外部命令(–help)

一般是 Linux 命令自带的帮助信息,并不是所有命令都自带这个选项。 如我们想查看命令 ls 的用法:ls --help

10 绝对路径和相对路径

前置信息: [[01_Liux 基础介绍-基础命令1#03 Linux 目录结构|03 Linux 目录结构]]

Unix/Linux 路径由到达定位文件的目录组成。在 Unix/Linux 系统中组成路径的目录分割符为斜杠 “/”,而DOS则用反斜杠 “\” 来分割各个目录(Windows下是以 “\” 为分隔符,而linux下为 ”/“ 为分隔符。)。Linux 所有的目录和文件名大小写敏感。

路径分为绝对路径和相对路径: 1)绝对路径

绝对路径是从目录树的树根 “/” 目录开始往下直至到达文件所经过的所有节点目录。【注意】绝对路径都是从 “/” 开始的,所以第一个字符一定是“/”。下级目录接在上级目录后面用 “/” 隔开。 /home/test /var/ftp/pub

2)相对路径

相对路径是指目标目录相对于当前目录的位置。如果不在当前目录下,则需要使用两个特殊目录 “.” 和 “…” 了。目录 “.” 指向当前目录,而目录 “…” 指向上一级目录。 11 目录相关的命令 11.1 pwd

格式:pwd [-LP] 打印当前工作目录的名字。 使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入 pwd 即可,后面不带参数。

deng@itcast:~$ pwd /home/deng 11.2 cd

在使用 Unix/Linux 的时候,经常需要更换工作目录。cd 命令可以帮助用户切换工作目录。Linux 所有的目录和文件名大小写敏感。cd 后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。

命令含义cd切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。cd ~切换到当前用户的主目录(/home/用户目录)cd .切换到当前目录cd …切换到上级目录cd -可进入上一个进入的目录

【注意】

如果路径是从根路径开始的,则路径的前面需要加上 “ / ”,如 “ /mnt ”通常进入某个目录里的文件夹,前面不用加 “ / ”。 11.3 mkdir

用法:mkdir [选项]… 目录… 通过 mkdir 命令可以创建一个新的目录(不能新建普通文件)。参数-p可递归创建目录。

参数 -p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录,即创建递归目录。

【注意】

新建目录的名称不能与当前目录中已有的目录或文件同名目录创建者必须对当前目录具有写权限。

使用示例:

mkdir test 在当前目录下创建test目录 mkdir /tmp/test 在根目录下tmp目录里创建test目录 mkdir file{1..100} 在当前目录下创建file1到file100的目录,这里会创建100个目录 xm@192:~/test$ mkdir file{1..10} yxm@192:~/test$ ls file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 ...... mkdir "file{1..100}" 在当前目录下创建file{1..100}目录,这里只创建一个目录 yxm@192:~/test$ mkdir "file{1..100}" yxm@192:~/test$ ls file{1..100} mkdir -p a/b/c 在当前目录下创建a/b/c目录树 yxm@192:~/test$ mkdir -p a/b/c yxm@192:~/test$ tree . └── a └── b └── c mkdir "a b" 创建以"a b"命名的一个目录,注意:"a b"是一个文件名 yxm@192:~$ mkdir "a b" yxm@192:~$ ls a b myshare study mkdir a\ b 创建以"a b"命名的一个目录,注意:"a b"是一个文件名 yxm@192:~$ mkdir a\ b yxm@192:~$ ls a b myshare study mkdir a b 创建目录a和目录b yxm@192:~$ mkdir a b yxm@192:~$ ls a b myshare study

【注意】mkdir创建文件夹时,如果文件名有特殊字符,可以使用转义字符,也可以在创建时给文件名加双引号或者单引号。

11.4 rmdir

用法:rmdir [选项]… 目录… 删除指定的空目录。可使用 rmdir 命令删除一个目录。【注意】必须离开目录,并且目录必须为空目录,不然提示删除失败。 使用示例:

rmdir test 删除当前目录的 test 目录,test 必须是空目录 rmdir /tmp/test 删除/tmp下的test目录 rmdir file{1..100} 删除 file1 到 file100 的目录 rmdir "file{1..100}" 删除 file{1..100} 目录 rmdir "a b" 删除 a b 这个目录 rmdir a\\ b 删除 "a b" 目录 rmdir a b c 删除目录 a 目录 b 目录 c 12 文件类型

前置信息: [[01_Liux 基础介绍-基础命令1#03 Linux 目录结构|03 Linux 目录结构]]

Unix/Linux 对数据文件(.mp3、.bmp),程序文件(.c、.h、.o),设备文件(LCD、触摸屏、鼠标),网络文件(socket)等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。

在 Unix/Linux 操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在 Unix/Linux 系统中文件可以没有扩展名。

通常,Unix/Linux 系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文件、链接文件和套接字。

1)普通文件 Linux 中最多的一种文件类型,普通文件一般包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);可执行的二进制程序文件;各种压缩文件。第一个属性为 [-]。

在 Unix/Linux 中可以通过 file 命令来查看文件的类型。如果 file 文件后面携带文件名,则查看指定文件的类型,如果携带通配符 “*”,则可以查看当前目录下的所有文件的类型。

# 普通文件 deng@itcast:~/test$ ls -l /etc/passwd -rw-r--r-- 1 root root 2372 3月 21 22:48 /etc/passwd

2)目录文件 Unix/Linux 系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。第一个属性为 [d]。

目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。

# 目录文件 deng@itcast:~/test$ ls -ld /etc drwxr-xr-x 134 root root 12288 5月 28 11:28 /etc

3)设备文件 Unix/Linux 系统把每个设备都映射成一个文件,这就是设备文件。它是用于向 I/O 设备提供连接的一种文件,分为字符设备和块设备文件。块设备文件第一个属性为 [b];字符设备第一个属性为 [c]。

字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种 I/O 设备对应一个设备文件,存放在 /dev 目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。

deng@itcast:~/share$ echo "hello world" > /dev/pts/22 hello world # 字符设备 deng@itcast:~/test$ ls -l /dev/input/mouse0 crw-rw---- 1 root input 13, 32 5月 26 17:01 /dev/input/mouse0 # 块设备 deng@itcast:~/test$ ls -l /dev/sda1 brw-rw---- 1 root disk 8, 1 5月 26 17:01 /dev/sda1

4)管道文件 管道文件也是 Unix/Linux 中较特殊的文件类型,这类文件多用于进程间的通信。第一个属性为 [p]。

# 管道文件 deng@itcast:~/test$ mkfifo fifo deng@itcast:~/test$ ls -l fifo prw-rw-r-- 1 deng deng 0 5月 28 11:59 fifo

5)链接文件 似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。第一个属性为 [l]。

# 符号链接 deng@itcast:~/test$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 11月 17 2017 /bin/sh -> dash deng@itcast:~/test$

6)套接字文件 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run 目录中看到这种文件类型。

deng@itcast:~/tmp/test$ ls -l /run/systemd/notify srwxrwxrwx 1 root root 0 8月 8 11:00 /run/systemd/notify 13 文件相关命令 13.1 ls

ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于 DOS下的 dir 命令。

Linux 文件或者目录名称最长可以有 256 个字符,“.” 代表当前目录,“…” 代表上一级目录,以 “.” 开头的文件为隐藏文件,需要用 -a 参数才能显示。

用法:ls [选项]… [文件]…,常用参数:

参数含义-a显示指定目录下所有子目录与文件,包括隐藏文件-l以列表方式显示文件的详细信息-h配合 -l 以人性化的方式显示文件大小

使用示例:

ls -al 显示所有文件包括隐藏文件列表 ls -lt 显示按日期时间排序后的文件列表 等价于 ls -l -t ls -lh 显示计算大小为KB为单位的文件列表 ls -dl 显示文件夹详细列表

图中列出的信息含义如下图所示:

通配符 与 DOS 下的文件操作类似,在 Unix/Linux 系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。

通配符含义*文件代表文件名中所有字符ls te* :查找以 te 开头的文件ls *html : 查找结尾为 html 的文件?代表文件名中任意一个字符ls ?.c : 只找第一个字符任意,后缀为.c的文件ls a.? :只找只有3个字符,前2字符为a.,最后一个字符任意的文件[][”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。[abc] :匹配a、b、c中的任意一个[a-f]:匹配从a到f范围内的的任意一个字符ls [a-f]* : 找到从a到f范围内的的任意一个字符开头的文件ls a-f:查找文件名为 a-f 的文件,当 “-”处于方括号之外失去通配符的作用\如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。ls \*a : 查找文件名为 \*a 的文件 13.2 touch

用法:touch [选项]… 文件… 1)如果文件不存在, 创建新文件(只能是普通文件,不能是文件夹) 2)如果文件存在, 更新文件时间

示例:

touch file 创建file空文件,如果file存在则更新file的存取和修改时间 touch a.txt b.txt 同时创建多个文件 yxm@192:~/test$ touch a.txt b.txt yxm@192:~/test$ ls a.txt b.txt touch file{2,3,4} 同时创建file2,file3,file4三个空文件 yxm@192:~/test$ touch file{2,3,4} yxm@192:~/test$ ls file2 file3 file4 touch "file{2,3,4}" 创建file{2,3,4}一个空文件 yxm@192:~/test$ touch "file{2,3,4}" yxm@192:~/test$ ls file{2,3,4}

【注意】touch 创建文件时,如果文件名有特殊字符,可以使用转义字符,也可以在创建时给文件名加双引号或者单引号。

13.3 cp

cp 命令的功能是将给出的文件或目录复制到另一个文件或目录中。常用选项说明:

选项含义-a该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。-f删除已经存在的目标文件而不提示-i交互式复制,在覆盖目标文件之前将给出提示要求用户确认-r若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。-v显示拷贝进度

示例:

cp file dirs/ 把 file 文件复制到dirs目录下 cp file1 file2 dirs/ 把 file1 file2 文件拷贝到dirs目录下 cp -i file1 file2 把文件 file1 拷贝到 file2 中,并且提示 cp -t dirs file1 把文件 file1 拷贝到 dirs 目录下 cp -r dir1/ dir2/ 把 dir1 目录复制到 dir2 目录下 cp -R dir1 dir2 把 dir1 目录拷贝到 dir2 目录下 cp -a file dirs/ 把 file 文件复制到 dirs 目录下,保留文件的原来属性 cp -rf dir1/ dir2/ 强制复制文件夹,不提示 cp -rvf dir1/ dir2/ 把dir1目录复制到dir2目录下,并且显示复制过程 13.4 rm

rm 命令用于删除文件或目录。常用参数及含义如下表所示:

参数含义-i以进行交互式方式执行-f强制删除,忽略不存在的文件,无需提示-r递归地删除目录下的内容,删除文件夹时必须加此参数【注意】使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在 rm 后使用 -i 参数以逐个确认要删除的文件。

示例:

rm a 删除文件 a rm a b c 删除文件 a b c rm -i a 删除文件 a,在删除之前用户需确认是否删除该文件 rm -f a 删除文件 a,强制删除该文件,不需要用户确认是否删除 rm -v a 删除文件 a,删除之后会显式结果 rm -r dirs 递归删除目录 dirs rm -rf dirs 强制递归删除目录 dirs rm file* 删除所有file打头的文件 rm -i file* 删除所有 file 打头的文件,提示是否确定删除 rm -f file* 删除所有 file 打头的文件,不提示,强行删除 rm -f [ab].txt 等价于 rm -f a.txt b.txt rm -f [^ab].txt 删除除 a.txt b.txt 以外的所有 ?.txt rm -f ?.txt ? 代表一个字符 rm -f ???.txt 13.5 mv

mv 命令来移动文件或目录,也可以给文件或目录重命名。常用选项说明:

选项含义-f禁止交互式操作,如有覆盖也不会给出提示-i确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件-v显示移动进度

示例:

mv file file2 把 file 文件重命名为 file2 mv file dirs/ 把 file 文件移动到 dirs 目录下 mv file1 file2 dirs/ 把 file1、file2 文件剪切到 dirs 目录下 mv dir1 dir2 dir3/ 把 dir1、dir2 目录剪切到 dir3 目录下 mv -i file1 dir1/ 把 file1 文件剪切到 dir1 目录下,如果存在覆盖就提示用户 mv -f file1 dir1/ 把 file1 文件剪切到 dir1 目录下,如果存在覆盖也不提示用户 mv -u dir1/* dir2/ 把 dir1 目录下所有文件移动到 dir2 目录下,并且根据文件时间来决定要不要移动 14 文件内容查看命令 14.1 cat

cat 将文件内容一次性输出到终端。 缺点:终端显示的内容有限,如果文件太长无法全部显示。

示例:

cat /etc/passwd 查看/etc/passwd内容 cat -n /etc/passwd 查看/etc/passwd内容,对输出的所有行编号 cat -b /etc/passwd 查看/etc/passwd内容并且给非空行编号 cat -A /etc/passwd 等价于 -vET

14.2 more

more 命令将文件内容分页显示到终端,但是只能一直向下浏览,不能回退。相关参数说明:

命令作用回车显示下一行空格显示下一页q(ctrl + c)退出h获取帮助

示例:

14.3 less

less 命令将文件内容分页显示到终端,可以自由上下浏览。相关参数说明:

命令作用回车(ctrl + n)显示下一行ctrl + p显示上一行空格(PageDown)显示下一页PageUp显示上一页q退出h获取帮助 14.4 head

head 命令从文件头部开始查看前 n 行的内容;如果没有指定行数,默认显示前10行内容。 命令格式:head –n [行数] 文件名

示例:

head /etc/passwd 查看 /etc/passwd 前 10 行内容 head -c 30 /etc/passwd 查看 /etc/passwd 前 30 个字符 head -30 /etc/passwd 查看 /etc/passwd 前 30 行 head -n 30 /etc/passwd 查看 /etc/passwd 前 30 行内容 head -q /etc/passwd 查看 /etc/passwd 的内容,但是不打印头信息 head -v /etc/passwd 查看 /etc/passwd 的内容,但是打印头信息 14.5 tail

tail 命令从文件尾部向上查看最后 n 行的内容;如果没有指定行数,默认显示最后 10 行内容。 命令格式:tail –n [行数] 文件名

示例:

tail /etc/passwd 查看 /etc/passwd 后 10 行内容 tail -n 30 /etc/passwd 查看 /etc/passwd 后 30 行内容 tail -c 30 /etc/passwd 查看 /etc/passwd 后 30 个字符 tail -f /etc/passwd 实时查看 /etc/passwd 文件内容 tail -q /etc/passwd 查看 /etc/passwd 的内容,但是不打印头信息 tail -v /etc/passwd 查看 /etc/passwd 的内容,但是打印头信息 15 du和df命令 15.1 du

du 命令用于查看某个目录大小。 du 命令的使用格式:du [选项] 目录或文件名

选项含义-a递归显示指定目录中各文件和子目录中文件占用的数据块-s显示指定文件或目录占用的数据块-b以字节为单位显示磁盘占用情况-h以K,M,G为单位,提高信息的可读性

示例:

15.2 df

df 命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。

选项含义-a显示所有文件系统的磁盘使用情况-m以1024字节为单位显示-h以K,M,G为单位,提高信息的可读性

示例:

16 查找相关命令 16.1 find

find 命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

1、按文件名查询:使用参数 -name 命令:find + 路径 + -name +“文件名”

find /home -name “a.txt”

2、按文件大小查询:使用参数 -size 命令:find + 路径 + -size + 范围

范围:大于:+表示,如:+100k;小于:-表示,如:-100k;等于:不需要添加符号,如:100k大小: M 必须大写(10M);k 必须小写(20k) 例子: 查询目录为家目录 find ~/ -size 100k 等于 100k 的文件 find ~/ -size +100k 大于100k的文件 find ~/ -size +50k -size -100k 大于50k, 小于100k的文件

3、按文件类型查询:使用参数 -typ 命令:find + 路径 + -type + 类型

类型:普通文件类型用 f 表示而不是 -;d -> 目录;l -> 符号链接;b -> 块设备文件;c -> 字符设备文件;s -> socket文件,网络套接字;p -> 管道 find /home -type f 查找指定目录下的普通文件

示例:

find /etc -name grub.conf 查找 /etc 目录下的 grub.conf 文件 find / -name "*.conf" 查找 / 下所有 .conf 文件 find / -iname grub.conf 查找 / 目录下的 grub.conf 文件,忽略大小写 find / -maxdepth 2 -name grub.conf 可以使用 -maxdepath 参数来控制查找的层次,就是说只查当前目录和子目录,最多查 2 级目录 find / -mindepth 2 -name grub.conf 最少查二级目录 find /etc -type d 查找 /etc/ 下所有的目录 find /etc -type f 查找 /etc/ 下的所有普通文件 find /etc -type l -name *.conf 查找 /etc/ 下软链接文件是 .conf 结尾的文件 find /etc -type s 查找 /etc/ 下所有socket文件 find /etc -type c 查找 /etc/ 下的所有字符设备文件 find /etc -type p 查找 /etc/ 下所有管道文件 find /etc -user root 查找 /etc/ 所属用户是root的文件 find /etc -group root 查找 /etc/ 所属用户组是root的文件 find /etc -uid 500 查找 /etc/ 下 uid 是 500 的文件,和 -user 类似 find /etc -gid 500 查找 /etc/ 下 gid 是 500 的文件,和 -group 类似 find /etc -nouser 查找没有所属用户的文件 find /etc -nogroup 查找没有所属用户组的文件 find /etc -perm 777 -type d 查找 /etc/ 下权限为 777 的目录 find . -perm 111 查找权限是111的文件 find . -size +10M 查找当前目录下大于 10M 的文件,单位可以有 K,M,G,b 等 find / -size -2M 查找根目录下少于 2M 的文件 find / -mtime 1 查找根目录下 1 天以前修改的所有文件 find / -mtime +2 查找根目录下 2 天以前修改的所有文件 find / -mtime -3 查找根目录下最近 3 天内修改的所有文件 find / -atime 1 查找根目录下 1 天以前访问或读过的所有文件 find / -atime -1 查找根目录下最近 1 天内读过或访问的文件 find / -ctime -3 查找根目录下最近 3 天内状态发生改变的文件 find / -cmin -3 查找根目录下最近 3 分钟内状态发生改变的文件 find / -empty 查找根目录下所有空白文件或者空目录 find / -false 查找根目录下总是错误的文件

高级用法

find / -false -exec ls -l {} \; 查找根目录下总是错误的文件并且用ls -l查看 find . -name "*.conf" -exec rm -rf {} \; find . -name "*.conf" | xargs rm -rf 删除当前目录下所有以 .conf 结尾的文件 deng@itcast:~$ find cmd/ -name "txt" -ok rm -rf {} \; 删除之前做确认 ? y 16.2 grep

Linux 系统中 grep 命令是一种强大的文本搜索工具,grep 允许对文本文件进行模式查找。如果找到匹配模式, grep 打印包含模式的所有行。

grep 一般格式为:grep [-选项] ‘搜索内容串’ 文件名

在 grep 命令中输入字符串参数时,最好引号或双引号括起来,例如:grep ‘a ’1.txt;当然如果搜索内容串中没有特殊字符可以不用引号括起来。

常用选项说明:

选项含义-v显示不包含匹配文本的所有行(相当于求反)-n显示匹配行及行号-i忽略大小写-r搜索目录

示例:

grep -r "hello,world" /home/itcast 查找 /home/itcast 下包含“hello,world“字符串的文件 grep -a hello /bin/ls 将二进制文件以文本文件的方式搜索 hello grep -i hello /etc/passwd 在 /etc/passwd 文件里找 hello 并且忽略大小写查找 grep -n hello /etc/passwd 搜索 hello 结果并显示在文件里出现的行号 grep -w hello /etc/passwd 搜索完全匹配 hello 单词的行 grep -v hello /etc/passwd 显示出在 /etc/passwd 文件里没有 hello 的行 grep -r hello /etc/ 在 /etc/ 目录里所有文件里找 hello 并显示结果 grep -i hello /etc/passwd --color=auto 在/etc/passwd 文件中找 hello 并且忽略大小写,然后高亮显示匹配的关键字 17 管道

管道(|):一个命令的输出可以通过管道做为另一个命令的输入。

管道我们可以理解为现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。

18 压缩包管理 18.1 tar

计算机中的数据经常需要备份,tar 是 Unix/Linux 中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar 使用格式: tar [选项] 打包文件名 文件,常用参数:

参数含义-c生成档案文件,创建打包文件-v列出归档解档的详细过程,显示进度-f指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后-t列出档案中包含的文件-x解开档案文件【注意】 除了 f 需要放在参数的最后,其它参数的顺序任意。tar 命令很特殊,其选项前面可以使用 “-”,也可以不使用。

常用示例(工作中几乎就是使用以下三种):

tar -cvf 创建归档文件tar -xvf 解除归档文件(还原)tar -tvf 查看归档文件内容 18.2 gzip

tar 与 gzip 命令结合使用实现文件打包、压缩:tar 只负责打包文件,但不压缩,用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxxx.tar.gz。

gzip 使用格式如下:gzip [选项] 被压缩文件,常用选项:

选项含义-d解压-r压缩所有子目录【注意】一次性压缩多个文件:gzip后面不能跟目录

tar 和 gzip 两步可以实现打包压缩功能,但是这两步骤可以合并到一步,如下: tar 这个命令并没有压缩的功能,它只是一个打包的命令,但是在 tar 命令中增加一个选项(-z)可以调用 gzip 实现了一个压缩的功能,实行一个先打包后压缩的过程。

压缩用法: tar cvzf 压缩包包名 文件1 文件2 …

参数含义-z指定压缩包的格式为:file.tar.gz示例:tar zcvf test.tar.gz 1.c 2.c 3.c 4.c 把 1.c 2.c 3.c 4.c 压缩成 test.tar.gz

解压用法: tar zxvf 压缩包包名

参数含义-z指定压缩包的格式为:file.tar.gz

解压到指定目录:-C (大写字母“C”) 例子:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下:

【注意1】上图中tar -xvf 的写法是正确,是万能解压的方式,详细可以看后面。 【注意2】如上所述,tar 压缩打包格式为:tar cvzf 压缩包包名 文件1 文件2 …

压缩打包时,如果文件前面携带路径,解压缩时也将解压缩到前面携带的路径中;压缩打包时,如果文件前面没有携带路径,解压缩时将解压缩到当前文件夹。 # 示例1,推荐方法 yxm@192:~/myshare/tar_test$ ls 1.c 2.c yxm@192:~/myshare/tar_test$ tar cvzf test.tar.gz ./* # 携带 ./ 路径 ./1.c ./2.c yxm@192:~/myshare/tar_test$ ls 1.c 2.c test.tar.gz yxm@192:~/myshare/tar_test$ mkdir untar_test yxm@192:~/myshare/tar_test$ cd untar_test/ yxm@192:~/myshare/tar_test/untar_test$ mv ../test.tar.gz ./ yxm@192:~/myshare/tar_test/untar_test$ tar zxvf test.tar.gz ./1.c # 解压缩到 ./ 路径 ./2.c # 解压缩到 ./ 路径 yxm@192:~/myshare/tar_test/untar_test$ ls 1.c 2.c 3.c test.tar.gz # 示例2 yxm@192:~/myshare/tar_test$ ls 1.c 2.c yxm@192:~/myshare/tar_test$ cd .. yxm@192:~/myshare$ tar cvzf test.tar.gz tar_test/* # 携带路径 tar_test/ tar_test/2.c tar_test/1.c yxm@192:~/myshare$ ls tar_test test.tar.gz yxm@192:~/myshare$ mkdir tar_test/untar_test yxm@192:~/myshare$ mv test.tar.gz ./tar_test/untar_test/ yxm@192:~/myshare$ cd ./tar_test/untar_test/ yxm@192:~/myshare/tar_test/untar_test$ tar zxvf test.tar.gz tar_test/ tar_test/2.c # 创建tar_test,并解压缩到 tar_test 路径 tar_test/1.c # 创建tar_test,并解压缩到 tar_test 路径 yxm@192:~/myshare/tar_test/untar_test$ ls tar_test test.tar.gz yxm@192:~/myshare/tar_test/untar_test$ cd tar_test/ yxm@192:~/myshare/tar_test/untar_test/tar_test$ ls 1.c 2.c 18.3 bzip2 tar 与 bzip2 命令结合使用实现文件打包、压缩(用法和 gzip 一样)。tar 只负责打包文件,但不压缩,用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxxx.tar.bz2。在 tar 命令中增加一个选项(-j)可以调用 bzip2 实现了一个压缩的功能,实行一个先打包后压缩的过程。压缩用法:tar jcvf (tar -cjvf) 压缩包包名 文件… 示例:tar jcvf bk.tar.bz2 *.c解压用法:tar jxvf (tar -xjvf)压缩包包名 示例:tar jxvf bk.tar.bz2tar -xvf 万能解压,可以解压gzip,也可以解压 bzip2 # 生成一个bz2压缩包 deng@itcast:~/share$ tar -cjvf test.tar.bz2 test # 解压bz2压缩包 deng@itcast:~/share$ tar -xjvf share.tar.bz2 18.4 zip 和 unzip

通过 zip 压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。

压缩文件:zip -r 目标文件(没有扩展名) 源文件解压文件:unzip -d 解压后目录文件 压缩文件 19 文件权限管理 19.1 文件权限

文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。在 Unix/Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

Unix/Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux 系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。

19.2 访问用户分类

通过设定权限可以从以下三种访问方式限制访问权限:

1)只允许用户自己访问(所有者) 所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。

2)允许一个预先指定的用户组中的用户访问(用户组) 用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。

3)允许系统中的任何用户访问(其他用户) 用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类

这有点类似于 QQ 空间的访问权限:

这个 QQ 空间是属于我的,我相当于管理者(也就是“所有者”),我想怎么访问就怎么访问。同时,我可以设置允许 QQ 好友访问,而这些 QQ 好友则类似于“用户组”。当然,我可以允许所有人访问,这里的所有人则类似于(不完全等价)“其他用户”。 19.3 访问权限说明

用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:

读权限(r):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。写权限(w):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。可执行权限(x):对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限,即只有目录有可执行权限才能够进入该目录。

【注意】通常,Unix/Linux 系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。

19.4 chmod

chmod 命令用于修改文件权限。修改文件权限有两种使用格式:字母法与数字法。

字母法: chmod u/g/o/a +/-/= rwx 文件

[ u/g/o/a ]含义uuser 表示该文件的所有者ggroup 表示与该文件的所有者属于同一组( group )者,即用户组oother 表示其他以外的人aall 表示这三者皆是 [ ±= ]含义+增加权限-撤销权限=设定权限 rwx含义rread 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。wwrite 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。xexcute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

示例: chmod o+w file 给文件 file 的其它用户增加写权限:

chmod u-r file 给文件 file 的拥有者减去读的权限:

chmod g=x file 设置文件 file 的所属组权限为可执行,同时去除读、写权限:

数字法:“rwx” 这些权限也可以用数字来代替

r读取权限,数字代号为 “4”w写入权限,数字代号为 “2”x执行权限,数字代号为 “1”-不具任何权限,数字t代号为 “0”

示例: 如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename(不可以执行) 就等同于:chmod 751 filename

文件所有者:读、写、执行权限同组用户:读、执行的权限其它用户:执行的权限

chmod 777 file:所有用户拥有读、写、执行权限

【注意】如果想递归所有目录加上相同权限,需要加上参数“ -R ”。例如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限。

【注意】chmod 0777与 chmod 777 效果相同,0 表示八进制,有的平台不加 0 会报错,因为会当做十进制,所以最好在使用的时候加上0。

19.5 chown

Linux 是多用户操作系统,用户与用户的权限不同,所以不同用户可以操作不同的文件(目录),所以有时候想要操作某个文件,除了要修改文件的读写可执行权限外,还需要获得文件的所有者权限。

chown 命令用于修改文件所有者。 格式:chown 用户名 文件或目录名 参数:-R 递归目录下所有文件

示例:

# 将文件所属者修改为root用户 deng@itcast:~/share/test: sudo chown root txt deng@itcast:~/share/test ls -l txt -rw-rw-r-- 1 root deng 0 10月 10 11:12 txt # 将文件所属者改为deng 所属组改为root deng@itcast:~/share/test sudo chown deng:root txt deng@itcast:~/share/test ls -l txt -rw-rw-r-- 1 deng root 0 10月 10 11:12 txt # 单独只修改文件所属组 > deng@itcast:~/share/test sudo chown :root txt > deng@itcast:~/share/test ls -l txt -rw-rw-r-- 1 deng root 0 10月 10 11:12 txt 19.6 chgrp

chgrp 命令用于修改文件所属组。(本小节了解即可) 格式:chgrp 用户组名 文件或目录名

示例:

# 单独修改文件所属组 deng@itcast:~/share/test sudo chgrp deng txt deng@itcast:~/share/test ls -l txt -rw-rw-r-- 1 deng deng 0 10月 10 11:12 txt 20 进程管理 20.1 ps

ps 命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下:

选项含义-a显示终端上的所有进程,包括其他用户的进程-u显示进程的详细状态-x显示没有控制终端的进程-w显示加宽,以便显示更多的信息-r只显示正在运行的进程列出与作业控制相关的信息

常用选项组合:

ps aux:显示当前用户下所有进程ps -ef:效果与ps aux差不多, ps aux最初用到 Unix Style 中,而 ps -ef 被用在 System V Style 中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。ps ajx :以比较完整的格式显示所有的进程ps -a 20.2 top

top 命令用来动态显示运行中的进程。top 命令能够在指定的时间间隔更新显示信息。 可以在使用 top 命令时加上 -d 来指定显示信息更新的时间间隔。

在top命令执行后,可以按下以下按键得到对显示的结果进行排序:

按键含义M根据内存使用量来排序P根据CPU占有率来排序T根据进程运行时间的长短来排序U可以根据后面输入的用户名来筛选进程K可以根据后面输入的PID来杀死进程。q退出h获得帮助 20.3 kill

命令功能:发送指定的信号到相应进程,常用于用于删除执行中的程序或工作。 使用格式:kill [-signal] pid 其中,[[四、Linux下进程间通讯之信号机制|信号值(signal)]]从 0 到 15,其中 9 为绝对终止,可以处理一般信号无法终止的进程。

kill 9133 :9133 为应用程序所对应的进程号

查看信号编号: kill -l(字母)

有些进程不能直接杀死,这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束([[四、Linux下进程间通讯之信号机制|9号信号为 SIGKILL]])。 杀死进程: kill -SIGKILL/(-9) 89899【进程标识号】

【注意】

前台程序:ctlr+c可以中断中断前台进程,但是无法中断后台进程;后台程序:可以通过kill命令杀死后台进程( Linux 下后台运行程序,查看和关闭后台运行程序 )。 #TODO 20.4 killall

Linux 中每个进程号是唯一的,但是可能存在进程名相同的进程,如下所示:

killall 命令可以通过进程名字杀死所有进程名相同的进程。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNJvJyac-1677561875568)(01_学习记录/02_专业领域/asstes/assets/1527498996963.png)]

21 软件安装和卸载 21.1 在线安装

如果是在 ubuntu 平台,软件的安装可以通过互联网在线安装,更加方便快捷:

命令含义sudo apt-get update获得最新的软件包的列表sudo apt-get install xxx从源中安装 xxx 软件sudo apt-get remove xxx删除 xxx 软件sudo apt-get clean清理安装包 21.2 软件包安装

在 Ubuntu下安装文件为 deb 格式

软件安装:sudo dpkg -i xxx.deb软件卸载:sudo dpkg -r 软件名

示例:

# tree 软件安装 deng@itcast:~$ sudo dpkg -i tree_1.6.0-1_amd64.deb # tree 软件卸载 deng@itcast:~$ sudo dpkg -r tree 22 重定向

重定向:Linux Shell重定向参考文章

标准输入 代码 0 默认设备为键盘标准输出 代码 1 默认设备为屏幕错误输出 代码 2 默认设备为屏幕

示例:

ls /etc/passwd > output.txt 标准正确输出重定向到 output.txt ls /etc/shadow >> output.txt 标准正确输出追加重定向到 output.txt ls dddddd 2> error.txt 标准错误输出重定向到 error.txt ls ddddd 2>> error.txt 标准错误输出重定向到 error.txt,追加的方式 ls dddddd 2> /dev/null 标准错误输出重定向到黑洞 ls ddddd /etc/passwd &> /dev/null 标准正确输出标准错误输出全都重定向到黑洞 ls ddddd /etc/passwd &>> txt 标准正确输出标准错误输出以追加的方式全都重定向到txt cat


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3