目录
三.Ubuntu Linux 16.04 LIS 字符界面使用
一.虚拟机
1.1虚拟机的介绍
虚拟机(Virtual Machine)是指可以像真实机器一样运行程序的计算机软件,通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
使用虚拟机可以在一台机器上面同时运行两个或更多Windows、Linux、UNIX操作系统,甚至可以在一台机器上安装多个Linux发行版本,使我们可以在同一台机器的Windows和Linux系统之间自由转换,就如同两台计算机在同时工作。在使用上,这台虚拟机和真正的物理机没有区别,都需要分区、格式化、安装操作系统、安装应用程序和软件,而不影响真实硬盘的数据,总之,一切操作都跟一台真正的计算机一样。
1.2网络类型的特点
选择网络连接 | 意义 |
桥接网络 | 此时虚拟机相当于网络上的一台独立计算机,与主机一样,拥有一个独立的IP地址,主机和虚拟机之间,虚拟机和主机之间可以相互访问 |
使用NAT网络 | 此时虚拟机能够访问主机,并通过主机单向访问网络上的其他主机(包括Internet网络),而其他主机不能访问此虚拟机 |
使用主机网络 | 内网模式,虚拟机与外网完全断开,只实现虚拟机与虚拟机之间的内部网络模式连接。默认情况下,虚拟机与虚拟机之间可以互相访问,虚拟机和主机之间不能访问 |
不适用网络连接 | 虚拟机中没有网卡,相当于“单机”使用 |
1.3VMware
VMware是一款功能强大的软件,特点如下。
(1)可模拟真实操作系统,做各种操作系统实验(如搭建域服务器、搭建Web服务器、搭建FTP服务器、搭建DHCP服务器、搭建DNS服务器等)。
(2)虚拟机的快照功能可以与Ghost工具备份功能相媲美,并且可以快捷创建还原点,也可以快速恢复还原点。
(3)可桥接到真实计算机上上网,更好地保障了安全性。
(4)在只有一台计算机的情况下,需要几台计算机共同搭建复杂应用环境时,在虚拟机下即可实现。
(5)可以在虚拟机中测试病毒及木马工具。
(6)真实的工具可在虚拟机中正常使用。
(7)可以快速克隆操作系统副本。
二.Ubuntu Linux系统介绍
2.1什么是Linux
Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议,支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux有许多不同的版本,所有的版本都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型计算机和超级计算机等。
2.2Linux系统的特点和组成
2.2.1Linux特点
1.完全免费
Linux是一款免费的操作系统、用户可以通过网络或者其他途径免费获得,并可以任意修改其源代码。
2.完全兼容POSIX 1.0标准
POSIX即可移植操作系统接口。POSIX是基于Unix的,这一标准意在期望获得源代码级的软件可移植性。为一个POSIX兼容的操作系统编写的程序,可以在任何其他的POSIX操作系统上编译执行。
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序,在Windows下常见的程序都可以在Linux上正常运行,为用户从Windows转到Linux奠定了基础。
3.多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在计算机最主要的一个特点,Linux可以使多个程序同时独立的运行。
4.良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似于Windows图形界面的X-Window系统,用户可以使用相应鼠标来对其进行操作。
5.支持多种平台
Linux可以运行在多台硬件平台上。
6.安全性及可靠性好
Linux中大量网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的防火墙、路由器、工作站、服务器等。为提高安全性,它还提供了大量的网络管理软件、网络分析软件和网络安全软件等。
7.具有优秀的开发工具
嵌入式Linux为开发者提供了一套完整的工具链,能够很方便地实现从操作系统到应用软件各个级别得调试。
8.有很好的网络支持和文件系统支持
2.2.2Linux系统的组成
Linux系统一般有4个主要部分:内核、Shell、文件系统和应用程序。内核、Shell和文件系统一起组成了基本的操作系统结构,它使得用户可以运行程序、管理文件并使用系统。
2.2.3Ubuntu Linux的特点
1.Ubuntu所有系统相关的任务均需使用sudo指令是它的一大特色,这种方式比传统的以系统管理员账号进行管理工作的方式更为安全,此为Linux、UNIX系统的基本思想之一。
2.Ubuntu也相当注重系统的易用性,标准安装完成后就可以立即投入使用。
3.为Unity7新增了一套用户桌面,用户可将传统屏幕左边的launcher放到屏幕下边,并添加了更加生动的应用图标。
4.Ubuntu与Debian使用相同的deb软件包格式,可以安装绝大部分为Debian编译的软件包,虽然不能保证完全兼容,但大多数情况下是通用的。
5.优化升级Dash,用户操作更加便利。
6.新增微信网页版应用,用户在Ubuntu Linux下可以应用微信。
三.Ubuntu Linux 16.04 LIS 字符界面使用
3.1字符界面
3.1.1进入字符界面
在Ubuntu16.04操作系统中,在桌面上单击右键,选择打开终端方式,
3.1.2Shell功能
打开一个终端窗口时,首先看到的是Shell提示符。Ubuntu 16.04系统的标准提示符包括用户登录名、机器名、当前所在的工作目录和提示符号。
以普通用户test登录名为test-virtual-machine的主机,当前的工作目录是~,表示/home/test目录,提示符号为$.
由普通用户切换到超级用户需要超级用户的密码,由超级用户切换普通用户不需要密码。超级用户的用户名为root,提示符号为#,在普通用户下执行su命令,并输入超级用户的密码即可转到超级用户。
pwd -->表示查看当前所在的路径
通过输入命令pwd发现当前目录是在/home/test(test用户的家目录或者叫做主目录)下,所以su命令可以切换用户但不能切换用户的主目录,从下图就能发现。
要想切换到root用户的同时切换到root用户的家目录,,可以使用如下命令
su -
切换到root用户下,提示符发生了变化,用户名发生了变化。
由root用户到test用户的退出命令为:exit
普通用户和超级用户除了登录的用户名和提示符不同 以外,它们的权限也是不同的,超级用户对文件和目录具有全权,而普通用户的权限是有限的。
1.date显示日期和时间
终端显示提示符后,用户就可以输入命令请示系统执行。
扩展date指令用法:
常用语法1:date (显示日期和时间)
常用语法2:date +%F (显示年月日)
等价于:date "+%Y-%m-%d"
常用语法3:date "+%F %T" (显示年月日时分秒)
等价于:date "+%Y-%m-%d %H:%M:%S"
前面三种都是当前时间
常用语法4:获取之前或者之后的某个时间
date -d "-1 day" "+%Y-%m-%d %H:%M:%S" 往前推一天
符号可选值: + 之后
- 之前
单位:day 天 mouth 月 year 年
data -d "-1 day" "+%Y-%m-%d %H:%M:%S" 表示从现在开始往前推一天。
%F 表示完整的年月日
%T 表示完整的时分秒
%Y 表示四位年份
%m 表示两位月份(带前导零)
%d 表示日期(带前导零)
%H 表示小时(带前导零)
%M 表示分钟(带前导零)
%S 表示秒数(带前导零)
2.who查看系统用户
who命令用于询问当前有哪些用户登录在系统中
3.whoami查看当前登录用户的信息
whoami用于查看目前登录用户的注册信息。
4.Tab命令补齐
命令补齐是指当输入的字符足以确定目录中一个唯一的文件时,只须按Tab键就可以自动补全该文件名剩下的部分
5.alias别名
用户给命令取得别名
例如:在windows下有cls命令,在Linux下面没有这个命令,有些小伙伴不习惯用clear来给linux清屏,现在可以通过别名机制来解决这个问题。
命令:
alias cls = 'clear'
这样就可以用"cls"命令来表示"clear"的功能了。
但是上述的起别名是临时的,一旦关机,就不再起作用
永久更改别名的方式:首先进入工作目录/home/test,nano编辑.bashrc文件(bashrc是隐藏文件,因此文件名为.bashrc),在文件中加入要定义的永久别名。
可能用到的命令:
cd /home/test 切换到/home/test目录下
ls -la /home/test 用于查看/home/test的所有文件,包括隐藏文件
找到了隐藏文件.bashrc
打开文件.bashrc
vi .bashrc回车之后在文件里面输入要更改的别名,即可。修改完之后,init 6一下,重启
6.history显示历史命令列出
语法1:history
history [n]
n参数用于表示显示仅有最后n行历史命令会被列出
3.2在字符界面下安装软件
3.2.1APT管理软件
APT即高级包管理工具。使用APT时,要确保系统连上网络。
1.软件的更新、升级
在安装命令前,要进行软件的升级,确保安装的软件是最高版本的,使用的命令如下:
sudo apt-get update
2.软件的安装
sudo apt-get install 软件包名
3.软件的移除
sudo apt-get remove 软件包名
4.搜索软件包
sudo apt-cache search 软件包名
5.显示该软件包的依赖信息
这里有一篇博客,可以查看ls源码
查看ls源码_Domay-Lin的博客-CSDN博客_ls命令源码
3.3字符界面下的关机和重启
3.3.1Ubuntu的运行级别
Ubuntu 16.04系统默认的开机运行级别是5,是图形界面,可以用runlevel命令查看当前的默认运行级别
3.3.2从图形界面转入命令界面
如果要每次开机直接进入命令行模式,使用文本编辑命令hano或者vi,修改/etc/default/grub文件。将GRUB_CMDLINE_LINUX_DEFAULT一行中的“quiet splash",修改为”quiet splash txt",后保存修改并退出。
修改/etc/default/grub文件后,使用update-grub命令,基于这些更改重新生成/boot下的GRUB2配置文件。重启即可进入命令行模式。
3.3.3从命令行转入到图形界面
把上述过程反着设置即可。
3.3.4关机和重启
在Linux系统下,常用的关机/重启命令有shutdown、halt、reboot、poweroff,他们都可以达到关机或者重启的目的,但每个命令的内部工作是不同的。
1.shutdown安全的关机命令
使用直接断掉电源的方式来关闭Linux是很危险的,因为在后台运行着许多进程,有很多客户端正登录到服务器上,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。而系统使用shutdown命令关机,系统管理员会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录。这种关机方式也是我们使用系统右上角的那个电源管理项的shutdown,是最安全的一种关机方式。
shutdown [-参数]
-H | 等价于halt |
-P | 等价于poweroff |
-h | 关闭计算机,等价于halt或者poweroff |
-k | 仅发送警告信息,注销登录用户,并没有关机(仅root用户可用) |
-c | 取消正在执行的关机,这个选项没有时间参数sudo shutdown -c |
-t | 过几分钟关机,默认为1min |
-h | 默认1分钟10s后关机 sudo shutdown -h |
-H | 默认1分钟10s后关机 sudo shutdown -H |
-h 关机时间 | 指定关机时间 sudo shutdown -h 16:00 |
显示关机提示信息 | 系统10min后关机,并且有自定义的提示信息"I am down",所有登录到服务器的客户端都可以收到关机和提示信息 sudo shutdown -h +10 I am down |
立即重新启动 | sudo shutdown -r now |
立即关机 | sudo shutdown -h now |
取消正在执行的关机 | shutdown -c |
2.halt立即关机命令
命令:halt
使用halt命令就是调用shutdown -h 命令。执行halt命令时,将杀死应用进程,执行sync系统,文件系统写操作完成后就会停止内核。
halt的参数,不建议读者使用,所以这里不在列出来。
3.reboot重新启动机器命令
命令:reboot
参数不需要掌握。
4.poweroff关闭系统后关闭电源命令
命令:poweroff
5.init
语法1:init 0 代表关机
语法2:init 3 代表切换到不带桌面的模式
语法3:init 5 代表切换到图形界面
语法4:init 6 代表重启
在这里,笔者建议关机命令用shutdown,init 0比较好 ,重启命令用init 6和reboot 不带参数的好。
3.4Putty远程登录
1.在服务器端中安装openssh-server
(1).更新
sudo apt-get update
(2).安装openssh-server
sudo apt-get install openssh-server
2.测试ssh-server是否启动
netatat -tl
3.在客户端配置Putty
安装完putty后,点击putty,输入服务器ip地址
ifconfig --该命令可以查看ip地址
在这里需要注意一点就是:要查看办公机与Linux的IP是否在同一个网段,如果在,直接在Putty上面连接,如果不在,则需要更新Linux的IP。(1)更改LinuxIP地址(2)修改网络适配器改成桥接模式
四. Ubuntu文件管理
4.1文件系统概述
文件系统时操作系统最重要的组成部分之一,操作系统之所以能够找到磁盘上面的文件,是因为有磁盘上的文件名与存储位置的记录。文件系统是解决如何在存储设备上存储数据的一套方法,包括存储布局、文件命令、空间管理、安全控制等,用于对磁盘进行存储管理即输入输出。Linux操作系统支持很多现代的流行文件系统,其中,Ext2,Ext3和Ext4最普遍。目前的大部分Linux文件系统都默认采用Ext4文件系统。
4.1.1文件系统
1.Ext2
第二代扩展文件系统,是Linux内核所用的文件系统。Ext2的经典实现为Linux内核中的Ext2fs文件系统驱动,最大可支持2TB的文件系统,到Linux核心2.6版时,扩展到可支持32TB
2.Ext3
第三代扩展文件系统,是一个日志文件系统,常用于Linux操作系统。
特点:
(1).高可用性
(2).数据的完整性
(3).文件系统的速度
(4).数据转换
(5).多种日志模式
3.Ext4
第四代扩展文件系统,是Linux系统下的日志文件系统,是Ext3文件系统的后继版本。
特点:
(1)更大的文件系统和更大的文件
Ext3文件系统最多只能支持32TB的文件系统和2TB文件,根据使用的具体架构和系统设置,实际容量上限可能比这个数字还要低,即只能容纳2TB的文件系统和16GB文件。而Ext4文件系统容量达到了1EB,文件容量则达到了16TB。
(2)更多的子目录数量
(3)更多的块和i-节点数量
(4)多块分配
(5)持久性预分配
(6)延迟分配
(7)盘区结构
(8)新的i-节点结构
(9)日志校验功能
(10)支持快速fsck
4.1.2文件系统概念
在Linux系统中有一个重要的概念:一切都是文件,实现了设备的无关性。在Unix系统中,把一切资源都看作文件,包括硬件设备,这样用户就可以用读写文件的方式实现对硬件的访问,Unix权限模型也是围绕文件的概念来建立的。所以对设备也就可以同样处理了。
1.从物理磁盘到文件系统
存储容量=磁头数X磁道数X每道扇区数X每扇区字节数
要点:
(1)磁盘有数个盘片,每个盘片两个面,每个面一个磁头
(2)盘片被划分为多个扇形区域即扇区
(3)同一盘片不同半径的同心圆为磁道
(4)不同盘片相同半径构成的圆柱面即柱面
(5)公式:存储容量=磁头数X磁道数X每道扇区数X每扇区字节数
(6)信息记录可表示为:XX磁道(柱面),XX磁头,XX扇区
将磁盘分成三块:超级块、i-点表、数据区
2.存储介质
用以存储数据的物理设备成为存储介质,如硬盘,Flash盘,光盘等
3.磁盘分区
对于容量较大的存储介质来说(通常指硬盘),在使用时需要合理的规划分区,因为牵涉到磁盘分区。
4.格式化
创建新的文件系统是一个过程,通过被称为初始化或者格式化,这个过程是针对存储介质进行的。先进行磁盘的分区,再进行文件系统的创建或者格式化。
5.挂载
在使用磁盘分区前,需要挂载该分区,这相当于激活一个文件系统。
Windows将磁盘分为若干逻辑分区,如C盘,D盘,在各个分区中挂载文件系统。这个过程是使用其内部机制完成的,用户无法深知其过程。
Linux系统中,没有磁盘的逻辑分区(即没有C盘,D盘),任何一个种类的文件系统被创建后都需要挂载到某个特点的目录才能使用。Linux使用mount和unmount命令来对文件系统进行挂载和卸载,挂载文件系统时需要明确挂载点。
补充:
Windows下常见的三种文件系统格式:FAT、FAT32、NTFs
df -T -l 用于显示磁盘的文件系统与使用情况
首先需要添加一块硬盘,这里我添加了5G的硬盘,具体操作如下:
这样我们就成功的添加了一块5G硬盘,
下面进行分区
1)sudo fdisk -l 用于显示当前系统中所有的硬盘使用情况
2)sudo fdisk /dev/sdb
输入n,
选择主分区p
继续输入n
选择交换分区e
输入命令n
这里是逻辑分区 ,默认从5开始编号
输入命令:w 保存
重启,就能生效
输入命令: df -T -l
磁盘分区之后,开始挂载,只有挂载了才能够使用
5)挂载
首先在/mnt目录下创建一个目录名叫做aa,将/dev/sdb1挂载到/mnt/aa上面,在挂载之前需要指定文件系统这里指定的是ext4
6)查看是否挂载成功
使用命令:df -T -l
也可以使用命令:mount
在磁盘分区这里需要知道,分区分为三种:主分区、交换分区、逻辑分区
交换分区包含逻辑分区,从上面的实验就能看出来,先划分交换分区,才会有逻辑分区
主分区和交换分区在1~4之间
逻辑分区从5开始
4.1.3文件与目录定义
Linux操作系统中,以文件来表示所有的逻辑实体与非逻辑实体。逻辑实体指文件与目录;非逻辑实体泛指硬盘、终端机、打印机等。一般而言,Linux文件名由字母、标点符号、数字等组成,中间不能有空格、路径名称符号“/“或者”#、*、%、&、{}、[]“等与Shell有关的特殊字符。
Linux文件系统中,结构上以根文件系统最为重要。根文件系统是指开机时将root partition挂载在根目录(/),若无法挂载根目录,开机时就无法进入到Linux系统中。
下面介绍根目录下的各个目录:
(1) /etc
本目录存放着许多系统所需的重要配置与管理文件,如/etc/hostname存放配置主机名字的文件,/etc/network/interfaces存放配置修改网络接口的IP地址、子网掩码、网关的文件,/etc/resolv.conf存放指定DNS服务器的文件。
(2) /dev
/dev目录中存放了device file(装置文件),使用者可以经由核心存取系统中的硬设备,当使用装置文件时内核会辨识出输入输出请求,并传递到相应装置的驱动程序以便完成特定的动作。
该目录包含了所有在Linux系统中使用的外部设备,每个设备在/dev目录下均有一个相应的项目。注意Linux与Windows/DOS不同,不是存放外部设备的驱动程序,而是访问这些外部设备的端口。如:/dev/cdrom存放光驱中的文件,/dev/u下存放的U盘中的文件,/dev/sd1下一般存放的是第一块硬盘第一分区中文件。
(3) /boot
该目录下存放与系统激活相关的文件,是系统启动时用到的程序。
(4) /home
登录用户的主目录就放在此目录下,以用户的名称作为/home目录下各个子目录的名称。
(5) /lib
本目录存放了许多系统激活时所需要的重要的共享函数库lib是library(库)的英文缩写。几乎所有的应用程序都会用到这个目录下的共享库。
Linux下的库分为静态库和动态库,一般情况下,so为共享库,用于动态连接,a为静态库,用于静态连接。
(6) /usr/lib
本目录下存放一些应用程序的共享函数库。
(7) /mnt
这个目录在一般情况下是空的,是系统默认的挂载点,可以临时将别的文件系统挂在这个目录下。如果要挂载额外的文件系统到/mnt目录,需要在该目录下建立任意目录作为挂载目录。
(8) /proc
本目录为一个虚拟文件系统,它不占用硬盘资源,该目录下的文件均放置于内存中。/proc会记录系统封正在运行的进程、硬件状态、内存使用的多少等信息,这些信息都是由系统自己产生的。
(9) /root
/root是系统管理用户root的主目录,如果用户是以超级用户的身份登录的,这个就是超级用户的主目录。
(10) /bin
本目录存放一些系统启动时所需要的普通程序和系统程序,及一些经常被其他程序调用的程序,是Linux常用的外部命令存放的目录。
(11) /tmp
该目录存放系统启动时产生的临时文件。有时某些应用程序执行中产生的临时文件也会暂放在此目录。
(12) /var
该目录存放系统被修改过的数据。在这个目录下的重要目录有/var/log、/var/spool、/var/run等,分别用于存放记录文件、新闻邮件、运行时信息。
4.1.4文件的结构、类型和属性
1.文件结构
文件结构是文件存放在磁盘等设备上的组织方法,主要体现在对文件和目录的组织上。Linux采用的是树形结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。
Linux中对文件路径的表达有两种方式 --- 绝对路径和相对路径
绝对路径:从根目录开始的路径。
相对路径:以"."或者".."开始的,"."表示用户当前操作所处的位置,而”.."表示上一级目录。
2.文件系统类型
在Linux系统中主要根据文件头信息来判断文件类型。
(1)普通文件
普通文件就是用户通常访问的文件,由ls -l命令显示出来的属性中,第一个属性为"-".
可以用ls -l命令来查看文件属性。下图显示了/bin目录下的各个文件,其中第一个"bash"就是一个普通文件,其属性(左侧第一列)的第一位是"-"。
(2)纯文本文件
普通文件中,有些文件内容可以直接读取,如文本文件,文件的内容一般是字母、数字以及一些符号等。可以用cat、vi命令直接查看文件内容。
(3)目录文件
目录文件就是目录,相当于Windows的文件夹
可以使用ls -l命令查看文件的属性,其中第一个属性为"d"的目录文件。
(4)链接文件
在Linux中有两种链接方式:符号链接和硬链接。符号链接相当于Windows的快捷方式 。可以用ls-l查看文件属性,符号链接文件的第一个属性用"l"表示,只有符号链接才会显示属性"l"
(5)设备文件
设备文件是Linux系统中最特殊的文件。Linux系统为外部设备提供一种标准接口,将外部设备视为一种特殊的文件,即设备文件。它能够在系统设备初始化时动态地在/dev目录下创建好各种设备的文件节点。
在Linux系统中设备文件分为字符设备文件和块设备文件。字符设备文件是指设备发送和接收数据以字符的形式进行;而块设备文件则以整个数据缓存区的形式进行。由ls -l /dev显示出来的属性中,字符设备文件的第一个属性是c,块设备文件的第一个属性是b。
(6)套接字文件
套接字文件通常用于网络数据连接。由ls -l命令显示出来的属性中,套接字文件第一个属性用s表示。
(7)管道文件
主要用来解决多个程序同时访问一个文件所造成的错误。由ls -l命令显示出来的属性中,管道文件的第一属性用p表示。
3.文件属性
对于Linux系统的文件来说,其基本属性有三种:读(r/4)、写(w/2)、执行(x/1)。不同用户对于文件拥有不同的读、写和执行权限。
(1)读权限:具有读取目录结构的权限,可以查看和阅读文件,禁止对其做任何的更改操作,用r或4表示。
(2)写权限:可以新建、删除、重命名、移动文件或者目录(不过写权限受父目录权限控制),用w或2表示。
(3)执行权限:文件拥有执行权限,才可以运行。有执行权限才可以进入目录文件,用x或1表示。
文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
4.2文件操作命令
4.2.1显示文件内容
1.cat
功能描述:用来串接文件或者显示文件的内容,也可以从标准输入设备读取数据并且将其结果重定向到一个新的文件中,到达创建新文件的目的。
语法: cat [选项] [文件名]
选项 | 作用 |
-n 或者-number | 由1开始对所有输出的行数编号 |
-b | 和-n相似,只不过对于空白行不进行编号 |
-s | 当遇到有连续两行以上的空白行时,就代换为一行空白行 |
-E | -show-ends,在每行结束处显示$ |
用法1: 显示(查看)文件的内容
查看/etc/network/interfaces文件的内容
命令为:cat /etc/network/interfaces
查看/etc/network/interfaces文件的内容并且显示行号
命令为:cat -n /etc/network/interfaces //添加参数-n
查看文件内容的命令除了cat之外,还有less、more、tail、head
(1)less
功能:显示输出的内容,然后根据窗口的大小进行分页显示
语法:less [选项] [文件名]
选项 | 作用 |
-m | 显示读取文件的百分比 |
-M | 显示读取文件的百分比、行号及总行数 |
-N | 在每行前输出行号 |
-s | 把连续多个空白行作为一个空白行显示 |
-c | 从上到下刷新屏幕,并显示文件内容 |
-f | 强制打开文件,禁止文件显示时不提示警告 |
-i | 搜索时忽略大小写,除非搜索串中包含大写字母 |
-I | 搜索时忽略大小写,除非搜索串中包含小写字母 |
-p | 搜索patttern |
查看/etc/passwd文件内容
命令:less /etc/passwd
在上图的显示了一页的内容并且左下方显示了/etc/passwd),按下回车
按下回车之后,左下角会显示":",(等待输入)
在":"后面可以输入数字,代表接下来显示几行,如果输入"q",代表退出
演示:
没有输入数字之前:
在":"后面输入5,按下回车
在":"后面输入"q",退出文件
(2)more
功能:显示输出文件,然后根据窗口大小进行分页显示,在终端底部打印输出"--More--"及以显示文本占用全部文本的百分比
语法:more [选项] [文件名]
选项 | 作用 |
f 或者<空格> | 显示下一页 |
<回车> | 显示下一行 |
q或者Q | 退出more |
+num | 从第num行开始显示 |
-num | 定义屏幕大小为num行 |
+/pattern | 从pattern前两行开始显示 |
-c | 从顶部清屏然后开始显示 |
-d | 提示按空格键继续,按Q键退出,禁止响铃功能 |
-l | 忽略换行换页(ctrl+l)字符 |
-p | 通过清除窗口而不是滚屏来对文件进行换页 |
-s | 把连续的多个空行显示为一行 |
-u | 把文件内容中的下画线去掉 |
分页显示/etc/passwd文件内容
当文件较大时,文本内容会在屏幕上快速显示,more命令解决了这个问题,一次只显示一屏的文本。输入命令之后显示的时文本内容的第一页,按Enter键显示下一行,按f键或者空格显示下一页,按ctrl+B组合键返回上一屏,按q键显示退出
(3)head
功能:从头几行开始显示
语法:head [选项] [文件名]
选项 | 作用 |
-n | 显示文件的前n行,系统默认是10 |
-c | 显示文件的前n个字节 |
在不加参数的情况下,默认显示文件的前10行
在指定选项的时候,
head -5 /etc/passwd 表示显示/etc/passwd前5行内容
(4)tail
功能:从末行开始显示
语法:tail [选项] [文件名]
选项 | 作用 |
-n | 显示文件的最后n行,系统默认值是10 |
-f | 不断读取文件的最新内容,达到实时监控的目的 |
不加选项,默认显示文件最后10行
指定选项,显示文件最后5行
cat用法2:显示文件内容到目录
cat命令可以用于输出重定向,可以将现有的文件的内容重定向到已有的文件,如果目标文件不存在,则建立新文件。
格式一:cat a1.txt > a2.txt
在/home/test目录下创建文件名为a1.txt,在里面写入如图所示的内容,再创建a2.txt,将a1.txt的内容重定向到a2.txt内。
如果要将a1.txt重定向到一个不存在的a3.txt文件中,a3.txt文件自动创建
格式二:cat a1.txt >> a2.txt
再次将a1.txt文件重定向到a2.txt中,查看a2.txt文件内容,可以发现输出了在之前的内容之上再 输出了一行。
">"表示输出重定向,将a1.txt内容输出到a2.txt文件内,如果文件不存在会自动创建。用此重定向,会覆盖之前a2.txt里面的全部内容。
">>"表示追加重定向,将a1.txt内容添加到a2.txt文件内容的尾部,如果文件不存在,就会新建一个文件。
用法3: 串接输入内容到文件
cat命令也可以从标准输入设备读取数据到已有文件或新建文件。
格式一:cat >a.txt
从键盘输出内容到a.txt里面,(Ctrl+D退出输入)
格式二:cat ->a.txt
例:创建文件并为文件输入内容,遇到结束标志EOF退出编辑
命令:cat >textfile<<EOF
例:向已存在文件追加内容,遇到结束标准EOF退出编辑
2.echo
功能描述:输出字符串到基本输出,通常是在显示屏上面输出,输出的字符串以空白字符隔开,并在最后加上换行号。
echo命令的功能是在显示器上显示一段文字,一般起到提示的作用。
语法:echo [选项] 字符串
选项 | 作用 | 选项 | 作用 |
-n | 不输出末尾的换行符 | \b | 退格 |
-e | 启用反斜线转义 | \\ | 反斜线 |
\a | 发出警告声 | \n | 另起一行 |
\c | 最后不加上换行符号 | \r | 回车 |
\f | 换行但光标仍旧停留在原来的位置 | \t | 插入Tab |
\nnn | 插入nnn(八进制)所代表的ASCII字符 | \v | 垂直制表符 |
在echo命令中选项n表示输出文字后不换行;字符串能加引号,也能不加引号;用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串的各个单词作为字符串输出,各字符串之间用空格隔开。
3.od
功能描述:od命令用于输出文件的八进制、十六进制或者其他格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
语法:od [选项] 字符串
选项 | 作用 |
-a | 表示ASCII码的名字 |
-b | 按照3个数值位的八进制数进行解释 |
-c | 选择ASCII码字符或者是转义字符 |
-d | 选择无符号两字节单位 |
-f | 选择单精度浮点数 |
-I(i的大写) | 等价于-t dI,选择十进制整型 |
-l(小写的L) | 等价于-t dL,选择十进制长整型 |
-o | 等价于-t o2,选择两字节单元并按照八进制解释 |
-s | 等价于-t d2,选择两字节单元并按照十进制解释 |
-x | 等价于-t x2,选择两字节单元并按照十六进制解释 |
4.2.2显示目录及文件
1. ls
功能:列出目录的名称,是list的简写形式
语法:ls [选项] [文件或目录]
选项 | 作 用 |
-a | 显示所有文件,包括隐藏文件(以“.”开头的文件或者目录是隐藏的),还包括本级目录"."和上一级目录".." |
-A | 显示所有文件,包括隐藏文件,不列出"."和".." |
-b | 显示当前工作目录下的目录 |
-l | 使用长格式显示文件的详细信息,包括文件状态、权限、拥有者、以及文件大小和文件名等 |
-F | 附加文件类别,符号在文件名最后 |
-d | 如果参数是目录,只显示其名称而不显示其下的各个文件 |
-t | 将文件按照建立时间的先后次序列出 |
-r | 将文件以相反次序显示(默认按英文字母顺序排序) |
-R | 递归显示目录,若目录下有文件,则一下的文件也会被依序列出 |
-i | 显示文件的inode(索引节点)信息 |
案例:查看/etc/dev文件的详细信息
各列的含义如下:
第一列表示文件的类型(-表示普通文件,d表示目录,l表示链接,c表示字符设备文件)
第二列如果是目录,则是目录下的子目录和文件数目;如果是文件,则是文件的数目或者文件的链接数
第三列表示文件的所有者名字
第四列表示所属的组名字
第五列表示文件的字节数
第六到八列表示上一次修改的时间
第九列表示文件名
2.pwd
作用:显示当前工作目录的完整路径
语法:pwd
选项 | 作用 |
-p | 如果目录是链接时,显示出实际路径,而非使用链接(link)路径 |
2.cd
作用:改变当前的工作目录
语法:cd [目录]
回到家目录命令: cd 或者 cd ~
上一级目录: cd ..
当前目录: .
4.2.3文件创建、删除命令
1.touch
作用:生成空文件和修改文件存取时间。当执行了touch命令之后,文件的创建时间或者修改时间会更新为当前系统的时间,如果文件不存在,就会自动添加一个空文件。
语法:touch [选项] [文件名]
选项 | 作 用 |
-d | 以yyyymmdd的形式给出要修改的时间,而非现在时间 |
-a | 只更改存取时间 |
-c | 不建立任何文档 |
-f | 此参数将忽略不予处理,仅负责解决BSD版本指令的兼容性问题 |
-m | 只更改变动时间 |
-r | 把指定文档或者目录的日期时间设成参考文档或目录的日期时间 |
案例:创建新的空文件(可以一次性创建多个文件)
2.rm
作用:删除一个目录中的若干个文件或者子目录。在默认情况下,rm命令只能删除指定文件,而不能删除目录,如果删除目录必须添加参数-r。
语法:rm [选项] [文件或目录]
选项 | 作用 |
-f | 强制删除。忽略不存在的文件,不提示确定 |
-i | 在删除前会有提示,需确认 |
-l | 在删除超过3个文件时或在递归删除前需要确认 |
-r(R) | 递归删除目录及其内容(无该选项时只删除文件) |
案例1:删除文件t2,删除时需要给出提示
案例2:删除目录
首先在/home/test目录下创建一个aa的文件夹,在aa里面创建了一个文件,并在文件a1.txt中写入了内容。然后进行删除目录操作。
4.2.4 目录创建、删除命令
1.mkdir
作用:mkdir命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写的权限,并且指定的目录名不能是当前目录已有的目录。
语法:mkdir [选项] [目录名]
选项 | 作用 |
-p | 依次创建目录,需要时创建目标目录的上级目录 |
-m | 设置权限模式,在建立目录时按模式指定设置目录权限 |
-v | 每次创建新目录都显示执行过程信息 |
-m用来设置目录的权限,对于目录的读权限是4、写权限是2、执行权限是1,这三个数字的和表达了对该目录的权限,如:7代表同时具有读写执行权限,6代表具有读写权限,4则只代表具有读权限。
-m格式为 mkdir -m [参数] [目录名],这里参数由3为如上所述的数字组成,分别代表目录所有者的权限,组中其他人对目录的权限和系统中其他人对目录的权限。
-m参数的含义 选项 作用 600 只有所有者具有读和写的权限 644 所有者由读和写的权限,组用户只有读的权限 666 每个人都有读和写的权限 700 只有所有者具有读和写以及执行的权限 777 每个人都具有读和写以及执行的权限
案例1:递归创建aa/bb/cc文件
mkdir -p aa/bb/cc
案例2:创建新的目录aa,同时设置访问权限(每个人都对该目录具有读和写以及执行权限)
2.rmdir
作用:删除空目录。在操作系统中,有时候会出现比较多的空目录,这里可以使用目录删除命令rmdir将他们删除。rmdir只能删除空目录,如果有文件需要先删除文件。
语法: rmdir [选项] [ 目录列表]
选项 | 作用 |
-p | 当子目录被删除后其父目录为空时,也一起被删除 |
-v | 显示详细的进行步骤 |
注意:可使用空格来分隔多个目录名,同时删除多个目录。
值得注意的是要删除的目录必须是空目录,如果其下有文件,必须先将文件删除
案例一:删除空目录
案例二:删除带文件的目录
1.删除目录bb下的所有文件
命令:rm *
2.删除bb目录
4.2.5复制、移动命令
1.cp
作用:将文件或者目录复制到另一个文件或者目录中。
语法:cp [选项] [源文件或目录] [目的文件或者目录]
cp [选项] 源文件组 目标目录
2.mv
作用:剪切、重命名
语法:mv [选项] [源文件或者目录] [目的文件或目录]
案例:将file1文件剪切到/home
4.2.6压缩、备份命令
1.tar压缩、解压缩
作用:tar命令是在ubuntu中广泛应用的压缩解压命令,可以把许多文件打包成为一个归档文件或者把他们写入备份文件。tar可以对文件和目录进行打包,能支持的格式为tar、gz等。
语法:tar [选项] [目标文件名] [源文件名]
选项 | 作 用 |
-z | 使用gzip或者gunzip压缩格式处理备份文件。如何配合选项c使用是压缩,配合选项x使用是解压缩 |
-c | 创建一个新的压缩文件,格式为.tar |
-v | 显示过程 |
-f | 指定压缩后的文件名 |
-x | 从压缩文件中还原文件,解压 |
-u | 仅转换比压缩文件新的内容 |
-r | 新增文件至已存在的压缩文件中的结尾部分 |
案例1:将新建的目录document压缩为aa.tar.gz
命令: tar -zcvf aa.tar.gz document
案例2:解压aa.tar.gz
命令: tar -zxvf aa.tar.gz
2.gzip只压缩不打包
作用:gzip是在Linux系统中经常使用的一个对文件进行压缩和解压的命令,压缩后文件格式为.gz,只压缩不打包。gzip不仅可以用来压缩大的、较少的使用文件以节省磁盘空间,还可以与tar一起构成Linux操作系统比较流行的压缩文件格式。
语法:gzip [选项] 要压缩的原文件名
选项 | 作用 |
-1 | 数字1,表示快速压缩 |
-9 | 9代表最佳状况压缩 |
-r | 递归式地查找指定目录并压缩其中的所有文件或者是解压缩 |
-c | 压缩结果写入标准输入,源文件保持不变 |
-v | 对每一个压缩和解压的文件,显示文件名和压缩比 |
-d | 解压指定文件 |
-t | 测试压缩文件的完整性 |
-l | 对每个压缩文件,显示压缩文件的大小、未压缩文件的大小、压缩比、未压缩文件的名字等详细信息 |
案例1:压缩目标目录下的文件
案例2:解压test.txt.gz到当前目录下
4.2.7权限管理命令
1.chgrp
作用:改变文件或目录的所属组。在Linux系统中,文件或目录的权限由拥有者和所属群组来管理,采用群组名称或者群组织识别码来标记不同权限,超级用户拥有最大权限。chgrp是change group的缩写,要被改变的组名必须/etc/group文件内存在才可以,默认情况下只有root权限才能执行。
语法:chgrp [选项] [群组] [文件或目录]
选项 | 作用 |
-R | 处理指定目录以及其子目录下的所有文件 |
-c | 当发生改变时输出调试信息 |
-f | 不显示错误信息 |
-v | 运行时显示详细的处理信息 |
-dereference | 作用于符号链接的指向,而不是符号链接本身 |
--no-dereference | 作用于符号链接本身 |
--reference | =文件1,文件2,改变文件2所属群组,使其与文件1相同 |
案例1:将document目录的群组由test改为root
加-R参数document目录下的所有内容的所属组都改为root
不加-R参数仅仅改变document的所属组
2.chown
作用:chown是change own的缩写。将文件或者目录的所有者改变为指定用户,还可以修改文件所属组群。如果需要将某一目录下的所有文件都改变其拥有者,可以使用-R参数。
语法:chown [选项] [用户[:群组]] [文件或目录]
选项 | 作用 |
-c | 显示更改的部分信息 |
-f | 忽略错误信息 |
-R | 处理指定目录以及其子目录下的所有文件,递归式地改变指定目录及其下的所有子目录和文件的拥有者 |
-v | 显示详细的处理信息 |
-reference=<目录或者文件> | 把指定的目录/文件作为参考,把操作的目录/文件设置成参考文件/目录相同的所有者和群组 |
案例1:将document目录及其一下内容的所有者改为test,所属群组改为test
3.chmod
作用:改变文件或目录的访问权限。
文件或者目录的访问权限分为只读、只写、可执行三种。
语法:chmod [选项] [模式] 文件
选项 | 作用 |
-c | 显示改变部分的命令执行过程 |
-f | 不显示错误信息 |
-R | 将指定目录下的所有文件和子目录做递归处理 |
-v | 运行时显示详细的处理信息 |
-reference=<目录或者文件> | 设置成与指定目录或者文件具有相同的权限 |
下面介绍该命令的两种不同的模式
1) 符号模式
chmod [选项] [who] operator [permission] files
选项 | 作用 |
-a | 所有用户均具有的权限 |
-o | 除了目录或者文件的当前用户或群组以外的用户或群组 |
-u | 文件或目录的当前所有者 |
-g | 文件或者目录的当前群组 |
选项 | 作用 |
+ | 增加权限 |
- | 取消权限 |
= | 设定权限 |
选项 | 作用 |
r | 读权限 |
w | 写权限 |
x | 执行权限 |
2)绝对模式
chmod [选项] mode files
其中mode代表权限等级,由3个八进制数表示。
0 [000] | 没有任何权限 |
1 [001] | 执行权限 |
2 [010] | 写权限 |
3 [011] | 写、执行权限 |
4 [100] | 只读权限 |
5 [101] | 读、执行权限 |
6 [110] | 读、写权限 |
7 [111] | 读、写、执行权限 |
三个如上所示的二进制字符串构成了模式,第一位表示所有者权限,第二位表示组用户权限,第三位表示其他用户的权限。常用的模式如下:
600:只有所有者有读和写的权限
644:所有者有读和写的权限,组用户只有读的权限
700:只有所有者具有读、写和执行权限
666:每个人都有读和写的权限
777:每个人都具有读、写和执行权限
案例1:查看文件的权限
命令:ls -l
file2文件中所有者和群组具有读、写和执行权限, 其他用户具有读和执行权限
案例2:用符号模式取消document组的执行权限
案例3:用绝对模式,修改test目录的权限为700
4.2.8文件查找命令
1.whereis
作用:寻找命令的二进制文件,同时也会找到其帮助文件。
这个程序的主要功能就是寻找一个命令所在的位置。
语法:whereis [选项] [文件名]
选项 | 作用 |
-b | 定位可执行文件 |
-m | 定位帮助文件 |
-s | 定位源代码文件 |
-u | 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其他文件 |
-B | 指定搜索可执行文件的路径 |
-M | 指定搜索帮助文件的路径 |
案例1:搜索ls命令的路径
2.help
作用:查看命令的内容和方法
whereis只查找命令文件的路径,要想查看命令的内容和使用方法,则可以使用help命令,help用于查看所有Shell命令。
语法:help [选项] [命令]
选项 | 作用 |
-s | 输出短格式的帮助信息,仅包括命令模式 |
-d | 输出命令的简短描述,仅包括命令的功能 |
-m | 仿照man格式显示命令的功能、格式及用法 |
案例:查看命令的帮助文件
案例:查看命令的格式、功能和详细帮助信息(以cd为例)
查看cd的功能
查看cd命令的格式
查看cd详细的帮助信息
注意:使用help查看命令的帮助信息时需要区分时内部命令还是外部命令;对于内部命令命令格式采用help<命令>,对于外部命令命令格式采用<命令> --help
3.man
功能:查看命令的帮助手册。
语法:man [选项] 命令名称
选项 | 作用 |
-s | 根据章节显示 |
-f | 只显示出命令的功能而不显示其中详细的说明文件 |
-w | 不显示手册页,只显示将被格式化和显示的文件所在位置 |
-a | 显示所有的手册页,而不是只显示第一个 |
-E | 在每行末尾显示$符号 |
案例:查看ls命令的手册
4.find
作用:寻找文件或目录的位置。
find命令可以按照文件名、类型、所有者甚至最后更新的时间来搜索文件。
语法:find [搜索路径] [搜索关键字] [文件或目录]
选项 | 作用 |
-type | 查找某一类型的文件 |
-name | 按照文件名查找文件 |
-group | 按照文件所属的组来查找文件 |
-user | 按照文件所有者来查找文件 |
find命令将匹配的文件输出到标准输出 | |
-link | 按照文件的链接数来查找文件 |
-size n:[c] | 查找文件长度为n块的文件,带有c时表示文件长度以字节计 |
type参数 | 作用 |
b | 块设备文件 |
d | 目录 |
c | 字符设备文件 |
p | 管道文件 |
l | 符号链接文件 |
f | 普通文件 |
时间参数 | 作用 |
amin n | 查找n分钟以内被访问过的所有文件 |
atime n | 查找n天以内被访问过的所有文件 |
cmin n | 查找n分钟以内文件状态被修改过的所有文件 |
ctime n | 查找n天以内文件状态被修改过的所有文件 |
mmin n | 查找n分钟以内文件内容被修改过的所有文件 |
mtime n | 查找n天以内文件内容被修改过的所有文件 |
案例1:通过文件名查找
从根目录开始搜索以.conf结尾的文件
命令: find / -name *.conf
5.locat
作用:查找文件或目录
语法:locat [选项] [搜索关键字]
选项 | 作用 |
-a | 输出所有匹配模式的文件 |
-d | 指定文件库的路径 |
-e | 将排除在寻找范围外 |
-h | 显示辅助信息 |
-q | 安静模式,不会显示任何错误信息 |
-V | 显示程式的版本信息 |
6.grep
描述:使用正则表达式查找文件内容。
语法:grep [选项] 匹配字符串 文件列表
4.2.9统计命令wc
作用:统计指定文件 中的字节数、字数、行数,并将统计结果显示输出。
语法:wc [选项] 文件列表
选项 | 作用 |
-c | 统计字节数 |
-w | 统计字数,一个字被定义为由空白、跳格或者换行字符分隔开的字符串 |
-l | 统计行数 |
-L | 统计最长行的长度 |
-m | 统计字符数,不能与-c一起使用 |
案例:统计行数、字节数和字数
4.3输入输出重定向
4.3.1标准输入输出
执行一个Shell命令行时通常会自动打开三个标准文档:标准输入文档、标准输出文档和标准错误输出文档。其中,标准输入文档对应终端的键盘,标准输出和标准输出和标准错误输出对应终端的屏幕。
4.3.2输入重定向
从标准输入录入数据时,输入的数据系统没有保存,只能使用一次,下次再想使用这些数据就得重新输入。而且在终端输入时,如果输入错误修改起来也不方便。Linux支持输入重定向,可以把命令的标准输入重定向到指定文件中,也就是输入的数据不是来自键盘,而是来自一个指定的文件。在输入时,使用符号"<"和"<<"分别表示输入与结束输入。
4.3.3输出重定向
因为输出到终端屏幕上的数据只能看,不能进行更多的处理,所以需要把输出从标准输出或标准错误输出重新定向到指定文件,这就是输出重定向。Linux支持输出重定向,可以将输出写入指定文件,而不是在屏幕上显示。用符号'>'表示替换,符号">>"表示追加。
4.4管道
管道:一个由标准输入输出链接起来的进程集合,是一个连接两个进程的连接器。
管道的命令操作是"|",它将操作符左侧的输出信息作为操作符右侧命令的输入信息。
使用管道时需要注意以下几点:
1)管道时单向的,一端只能输入,另一端只能用于输出,遵循"先进先出"原则。
2)管道命令只处理前一个命令的正确输出,如果输出的是错误信息,则不处理。
3)管道操作符右侧命令,必须能够接收标准输入输出流命令。
管道分为普通管道和命名管道。
案例:查找文件内容进行统计后显示。
统计test1.txt文件的行数和单词书
4.5链接
4.5.1什么是链接
链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的方法。
4.5.2索引节点
要了解链接,首先要了解一个概念,即索引节点。在Linux系统中,内核为每一个新创建的文件分配一个inode(索引节点),每一个文件都有一个唯一的inode号。文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存里,从而实现文件的快速访问。系统通过索引节点来定位每一个文件的。
4.5.3两种链接
Linux中包含了两种链接:硬链接(Hard Link)和软链接(Soft Link)。软链接又称为符号链接。
(1)硬链接:硬链接就是一个指针,指向文件索引节点,但系统并不为它重新分配inode,不占用实际空间。硬链接不能链接到目录和不同文件系统的文件。
ln命令用来建立硬链接。
(2)软链接:软链接又叫做符号链接,这个文件包含了另一个文件的路径名,系统会为其重新分配inode,类似于Windows的快捷方式。软链接可以是任意文件或目录,包括不同文件系统的文件和不存在的文件名。
ln -s命令来建立软连接。
硬链接记录的是目标的inode,软链接记录的是目标路径。软链接就像是快捷方式,而硬链接就像备份。
4.5.4链接命令ln
作用:为某一个文件在另一个位置建立一个同步的链接。ln命令会保持每一处链接文件的同步性,也就是说,无论改动了哪一处,其他的文件都会发生相同的变化。
语法:ln [参数] [源文件或目录] [目标文件或目录]
选项 | 作用 |
-s | 软链接(符号链接) |
-b | 删除,覆盖以前建立的链接 |
-d | 允许超级用户制作目录的硬链接 |
-f | 强制执行 |
-i | 交互模式,文件存在则提示用户是否覆盖 |
-n | 把符号链接视为一般目录 |
-v | 显示详细的处理过程 |
-S | "-S<字尾备份字符串>"或"--suffic=<字尾备份字符串>" |
-V | "-V<备份方式>"或"--version-control=<备份方式>" |
案例1:建立文件符号链接和硬链接。
硬链接缺点:
(1)不允许给目录建立硬链接。
(2)不可以在不同文件系统的文件间建立硬链接。
五.用户和组管理
5.1Linux用户
5.1.1用户和用户组
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另外一方面也可以帮助用户组织文件,并未用户提供安全性保护。每一用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时输入正确的用户名和口令后,就能够正确的进入系统和自己的主目录。
在Linux系统中,任何文件都属于某一个特定的用户,而任何用户都隶属于至少一个用户组。
每个用户不仅有唯一的用户名,还有一个唯一的用户id,用户id缩写为uid。对于系统内核来说,它使用uid来记录拥有进程或文件的用户,而不是使用用户名。
5.1.2用户分类
用户分为3类:普通用户、超级用户、系统用户。不同的用户的uid对应于不同的取值。
uid范围 | 用户类型 |
0 | 系统管理员(超级用户) |
1~999 | 系统用户 |
1000~65535 | 普通用户 |
1.普通用户
普通用户是使用系统最多的人群,其登录路径为/bin/bash,用户主目录为/home/用户名,普通用户的权限不是很高,一般情况下只在自己的主目录和系统范围内的临时目录中创建文件。
打开/etc/passwd文件可以查看用户的信息。
2.超级用户
超级用户又称为root用户或系统管理员,使用/root作为主目录在系统上拥有最高权限。
3.系统用户
大多数Linux系统会将一些低uid保留给系统用户。系统用户不代表人,而代表系统的组成部分。因为不是真正的用户,所以系统用户没有登录Shell,其主目录也很少在/home中,而在属于相关应用的系统目录中。
5.1.3用户相关文件
1./etc/passwd文件
用户信息保存在配置文件/etc/passwd中,该文件是可读格式的文本,管理员可以利用文本编辑器来修改。系统的大多数用户没有权限修改它,只能读取这个文件。
cat /etc/passwd 打开文件,最后一行就是test用户的用户信息。
文件的内容是按照uid进行排序的,首先是root用户,然后是系统用户,最后是普通用户。用户数据按字段以冒号分隔,格式如下
username:passwd:uid:gid:userinfo(普通用户通常省略):home:shell
字段名 | 编号 | 说明 |
username | 1 | 给一个用户可读的用户名称 |
passwd | 2 | 加密的用户密码 |
uid | 3 | 用户ID,Linux内核用这个整数来识别用户 |
gid | 4 | 用户组ID,Linux内核用这个整数来识别用户组 |
userinfo | 5 | 用来保存帮助识别的简单文本 |
home | 6 | 当用户登录时,分配给用户的主目录 |
shell | 7 | 登录Shell是用户登录时的默认Shell,通常是/bin/bash |
2./etc/shadow文件
用户的加密密码被保存在/etc/passwd的第二个字段中,由于passwd文件包含的信息不仅有用户密码,每个用户都要读取它,因此passwd的第二个字段都是x,实际上任何一个用户都有权限读取这个文件从而得到所有用户的加密密码。在Linux和Unix系统中,采用了一种“影子密码”技术来保存密码,用户的密码被保存在专门的/etc/shadow文件中,只有超级管理员的root权限才能查看,普通用户无法查看其内容。
查看test用户的的密码信息:sudo tail /etc/shadow
/etc/shadow文件中的每一行记录了一个合法用户账号的数据,每一行数据用冒号分隔,其格式如下。
username:passwd:lastchg:min:max:warn:inactive:expire:flag
字段名 | 编号 | 说明 |
username | 1 | 用户的登录名 |
passwd | 2 | 加密的用户名 |
lastchg | 3 | 自1970.1.1起到上次修改口令所经过的天数 |
min | 4 | 两次修改口令之间至少经过的天数 |
max | 5 | 口令还会有效的最大天数 |
warn | 6 | 口令失效前多少天内向用户发出的警告 |
inactive | 7 | 禁止登录前用户还有效的天数 |
expire | 8 | 用户被禁止登录的时间 |
flag | 9 | 保留 |
5.2Linux用户组
每个用户都属于一个用户组,用户组就是具有相同特征的用户的集合体。一个用户组可以包含多个用户,拥有一个自己专属的用户组id,缩写为gid。
同属于一个用户组内的用户具有相同的地位,并可以共享一定的资源。一个用户组只能有一个gid,但是可以归属于其他的附加群组。
如果没有指定用户组,创建用户的时候会默认同时创建一个和这个用户同名的组,这个组就是基本组。
除了基本组以外,用户也可以根据需要再隶属于其他组,这些组被称作次要组或附加组。用户是可以从附加组中删除。一个用户可以有多个附加组,但是一个用户只能有一个基本组。
1./etc/group
用户组的信息保存在配置文件/etc/group中,该文件是可读格式的文本,管理员可以利用文本编辑器来修改。而系统中大多数用户没有权限修改它,只能读取它。
/etc/group是以行为单位的配置文件,每行字段用冒号分隔,格式如下:
group_name:group_password:group_id:group_members
字段名 | 编号 | 说明 |
group_name | 1 | 用户组名 |
group_password | 2 | 加密后的用户组密码 |
group_id | 3 | 用户组ID |
group_members | 4 | 逗号隔开的组成员 |
2./etc/gshadow
使用/etc/gshadow文件存储各个用户组的加密密码。
查看这个文件,需要root权限
"!"表示没有密码。
/etc/gshadow格式:
group_name:group_password:group_id:group_menbers
字段名 | 编号 | 说明 |
group_name | 1 | 用户组名 |
group_password | 2 | 加密后的用户组密码 |
group_id | 3 | 用户组ID(可以为空) |
group_members | 4 | 逗号分隔开的组成员 |
5.3用户和用户组管理命令
5.3.1用户管理命令
1.useradd
作用:创建一个新用户。
系统创建一个新用户时,同时为新用户分配用户名,用户组,主目录和登录Shell等资源。创建的用户组与用户名字相同,是一个基本组。
格式:useradd [选项] 用户名
选项 | 作用 |
-d | 指定用户主目录。如果此目录不存在。则同时使用-m选项,可以创建主目录 |
-g | 指定gid |
-u | 指定uid |
-G | 指定用户所属的附加组 |
-M | 不要建立用户主目录 |
-m | 自动创建用户主目录 |
-p | 指定用户的新密码 |
-r | 建立一个系统账号 |
-s | 指定Shell |
-f | 用户什么时候会失效 |
(1)只有超级用户root和具有超级用户权限的用户才能建立新用户
(2)useradd命令如果不加任何参数,建立的是三无用户:一无主目录,二无密码,三无系统Shell。
案例1:建立用户和主目录
查看刚刚创建的用户的信息 tail /etc/passwd
2.adduser
作用:创建新用户
使用adduser创建用户时显示了建立用户过程的详细进程,同时包含部分人机交互的对话过程,系统会提示用户输入各种信息,然后根据这种信息创建新用户,使用简单,不用加参数,建议初学者使用。
语法:adduser 用户名
3.passwd
作用:为用户设置密码,修改用户的密码,管理员还可以使用passwd命令锁定某个用户账号,该命令需要root权限。
Ubuntu种登录用户时需要输入口令,也就是,只有制定了密码之后才能使用该用户,即使指的是空口令也可以。
格式:passwd [选项] 用户名
选项 | 作用 |
-l | 管理员通过锁定口令来锁定已经命名的账户,即禁用该用户 |
-u | 管理员解开账户锁定状态 |
-x | 管理员设置最大密码使用天数 |
-n | 管理员设置最小密码使用天数 |
-d | 管理员删除用户的密码 |
-f | 强迫用户下次登录时修改口令 |
案例1:为test2用户设置密码
查看/ect/shadow
案例2:锁定用户账户test2
在未锁定test2用户之前,可以切换到test2用户
锁定账户test2后:
锁定账户:sudo passwd -l test2
锁定账户之后,就不能切换到test2账户下了。
案例3:解锁test2用户
账户解锁后,发现又可以切换用户了。
4.usermod
作用:修改用户账户信息。
usermod命令可以修改已存在的用户属性,根据实际情况修改用户的相关属性,如用户ID号,账户名称,主目录,用户组,登录Shell等。
语法:usermod [选项] 用户名
选项 | 作用 |
-d | 修改用户主目录 |
-e | 修改账户的有效期限 |
-f | 修改在密码过期后多少天即关闭账户 |
-g | 修改用户所属的组 |
-G | 修改用户所属的附加组 |
-l | 修改用户的帐号名称 |
-L | 锁定用户密码,是密码无效 |
-s | 修改用户登入后所使用的Shell |
-u | 修改用户ID |
-U | 解除密码锁定 |
5.userdel
作用:删除用户。userdel命令可以删除已存在的用户账号,将/ect/passwd等文件系统中的该用户记录删除,必要时还删除用户的主目录。
语法:userdel [选项] 用户名
选项:-r:将用户的主目录一起删除
5.3.2用户组管理命令
1.groupadd
作用:用指定的组名称来建立新的组账号
语法:groupadd [选项] 组名
选项 | 作用 |
-g | 指定组id,组id必须唯一 |
-o | 允许设置相同的组id,不必唯一 |
-r | 建立系统组账号,即组id低于499 |
-f | 强制执行,创建相同id的组 |
2.groupmod
作用:用于更改群组属性。
语法:groupmod [选项] 组名
选项 | 作用 |
-g | 指定组id号 |
-n | 修改用户组名 |
3.groupdel
作用:从系统上删除组。如果该组仍包含某些用户,则必须先删除这些用户后,才能删除组。
语法:groupdel [选项] 组名
4.gpasswd
作用:用来管理组。该命令可以把用户加入组(附加组),为组设置密码。
语法:gpasswd [选项] 组名
选项 | 作用 |
-a | 添加用户到群组 |
-d | 从群组中删除用户 |
-A | 指定管理员 |
-M | 指定群组成员 |
-r | 删除密码 |
-R | 限制用户加入组,只有组中的成员才能用newgrp命令登录该组 |
案例:加入用户组和从用户组中删除
5.4su和sudo
5.4.1su命令
作用:切换用户
超级用户切换到普通用户不需要密码,而普通用户切换到任何其他用户都需要密码验证。
语法:su [选项] 用户名
选项 | 作用 |
-l | 如同登陆一样,大部分环境变量都是切换后的用户为主。如果没有指定用户名,则默认为root |
-p | 切换用户时,不切换用户的工作环境,此为默认值 |
-c | 以指定用户身份执行命令,执行命令后再变回原账户 |
- | 切换当前用户时,切换用户工作环境 |
5.4.2sudo命令
作用:允许系统管理员分配给普通用户一些合理的权限,让他们执行一些只有超级用户或者其他特定用户才能完成的任务。
sudo的流程为:当前用户切换到root用户,然后以root身份执行命令,执行完成后,直接退回到当前用户。
语法:sudo [选项] 命令
用户想要具有sudo的权限,有两种方法:
1.通过sudo的配置文件/etc/sudoers来进行授权。
2.使用命令添加用户到sudo组,获得sudo的权限。
六、进程管理
进程是指处于运行状态的程序,一个源程序经过编译、链接后,称为一个可以云从的程序。当该可执行的程序被系统加载到内存空间运行时就称为进程。
程序是静态地保存在磁盘上的代码和数据的组合,而进程是动态概念。
1.ps命令查看进程
使用权限:所有使用者
使用方式:ps [option] [--help]
说明:显示瞬间行程的动态。
参数:
-A:列出所有的行程。
-w:显示加宽,可以显示较多的信息。
-au:显示较详细的信息。
-aux:显示所有包含其他使用者的行程。
-axl:显示所有包含其他使用者的行程(包含优先级)。
USER:行程拥有者,USER域指明了是哪个用户启动了这个命令。
PID:进程的标识号。
%CPU:占用的CPU使用率,用户可以查看某个进程占了个多少CPU
%MEM:占用的内存使用率。
VSZ(虚拟内存大小):占用的虚拟记忆体大小,表示如果一个程序完全驻留在内存的话需要占用多少内存空间。
RSS(常驻集大小):占用的内存大小,指明了当前实际占用了多少内存。
TTY:终端的号码。
STAT:该行程的状态,取值如下:
D:不可中断的静止。
R:正在执行中。
S:静止状态。
T:暂停执行。
Z:不存在但暂时无法消除。
W:没有足够的记忆体分页可分配。
n或N:低优先级。
<:高优先级的行程。
s:包含子进程。
+:位于后台的进程组。
L或l:有记忆体分页分配并锁在记忆体内。
START:进程开始时间。
TIME:执行的时间。
COMMAND:所执行的指令。
案例1:显示指定用户test的进程
案例2:显示所有用户的所有进程,并显示进程状态
2.top命令监控进程
top命令用来实时显示进程的状态,每隔几秒自动更新一次,在显示进程的过程中,按下命令键执行相应的操作,命令键如下:
命令 | 说明 |
q | 退出 |
h或? | 帮助 |
space | 更新显示 |
M | 根据内存大小对进程排序 |
P | 根据CPU占用情况对进程排序 |
u | 显示特定用户的进程 |
k | 杀死进程(给进程发送信息) |
r | 更改进程优先级 |
d secs | 在两次刷新之间延迟secs秒(默认为5秒) |
案例:top实时显示进程的状态
3.kill命令结束进程
当需要中断一个前台进程的时候,通常是使用Ctrl+C组合键;但是对于一个后台进程用组合键就不能中断了,这时必须使用kill命令。该命令可以终止后台进程。终止后台进程的原因很多,或许是该进程占用的CPU时间过多,或许是该进程已经挂死。
kill命令是通过向进程发送指定信息来结束进程的。如果没有发送指定信号,那么默认值为SIGTERMTERM信号。SIGTERMTERM(15)信号将终止所有不能捕获该信号的进程。
kill命令的语法格式如下:
kill [-s 信号 | -p] [-a] 进程号...
kill -l [信号]
其中:
-s:指定需要送出的信号,既可以是信号名也可以是对于的数字。
-p:指定kill命令只是显示进程的pid,并不在真正送出结束信号。
-l:显示信号名称列表,这也可以在/usr/include/Linux/signal.h文件中找到。
案例一:显示信号的名称列表