Linux文件基本属性
显示文件属性
ls命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录) 。参数:
- -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
文件与目录操作
Linux可以支持长达 256 个字符的文件名称,且文件名是区分大小写的,“abc” 与 "ABC" 所代表的是不同文件。Linux文件类型
- 1 普通文件(-):存放数据,程序等信息的文件,一般为文本文件和二进制文件。
- 2 目录文件(d):文件系统中一个目录所包含的目录文件,包括文件名和子目录名。
- 3 链接文件(l):可以在不同的文件系统之间建立链接关系来实现对文件的访问。
- 4 设备文件(c):把IO设备映射为一个设备文件。
- 5 管道文件(p):主要用于在进程间传递数据。
文件权限
Linux系统中,文件有三种访问权限:
- 1 读(r)- 允许读取文件
- 2 写(w)- 允许写、修改和删除某个文件
- 3 执行(x)- 允许执行某个文件
解析:
Linux权限字与权限操作
- 1 chgrp: 改变文件所属群组;
- 2 chown:改变文件所有人;
- 3 chmod:改变文件的属性;
改变所属群组chgrp
改变一个文件的群组很简单,直接用chgrp命令,这个命令是change group的缩写。
语法:
参数选项
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目 录下的所有文件的属组都会更改改变文件属性chmod
Linux文件属性有两种设置方法,一种是数字,一种是符号。 1 chgrp [-R] 属组名 文件名 Linux 文件的基本权限就有九个,分别是 owner/group/others( 拥 有者 / 组 / 其他 ) 三种身份各有自己的 read/write/execute 权限。文字设定法
基本上就九个权限分别是:- user:用户
- group:组
- others:其他
语法:
操作对象who可是下述字母中的任一个或者它们的组合:
- u 表示“用户(user)”,即文件或目录的所有者。
- g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
- o 表示“其他(others)用户”。
- a 表示“所有(all)用户”。它是系统默认值。
- 操作符号可以是:
- + 添加某个权限。
- – 取消某个权限。
- = 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
- 1 chmod [who] [+ | – | =] [mode]r 可读。
- w 可写。
- x 可执行。
- X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
- s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID
- 位,“g+s”设置组ID位。
- t 保存程序的文本到交换设备上。
- u 与文件属主拥有一样的权限。
- g 与和文件属主同组的用户拥有一样的权限。
- o 与其他用户拥有一样的权限。
- -c : 若该档案权限确实已经更改,才显示其更改动作
- -f : 若该档案权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
数字设定法
我们必须首先了解用数字表示的属性的含义:0 表示没有权限, 1 表 示可执行权限,2 表示可写权限, 4 表示可读权限,然后将其相加。 所以数字属性的格式应为3 个从 0 到 7 的八进制数,其顺序是( u ) (g )( o )。语法:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
示例1
如果我们需要将文件权限设置为 - rwx r-x r-- 。示例2
将 .bashrc 这个文件所有的权限都设定启用。改变文件拥有者chown
更改文件属主,也可以同时更改文件属组语法:
示例:
Linux路径
注意事项:
引入路径的概念的最终目的就是找到需要的目录或者文件。路径是由目录或者文件名构成。绝对路径
绝对路径是指从“ 根 ” 开始的路径。例如 /usr/local,/etc/hosts,如果一个路径是从“/”开始它一定是绝对路径 。 ( 绝对路径必须以 “/” 开头 , 它表示根目录 )相对路径
相对路径是以 “ . ” 或者 " .. "开始的。. 表示用户操作所处的位置...表示上级目录。(相对路径不能以 “ / ” 开头。每个目录中都有 “ ..” 目录文)
相对路径
相对路径是以 “ . ” 或者 " .. " 开始的。 . 表示用户操作所处的位置.. 表示上级目录 。 ( 相对路径不能以 “ / ” 开头。每个目录中都有 “ ..” 目录文件。)在路径一些特殊符号的说明
- . : 当前用户所在目录
- .. :表示上一级目录
- ~ : 表示当前用户自己家目录
- ~ USER:表示用户名为USER的家目录。这里的USER是
- 在/etc/passwd中存在的用户。
Linux处理文件目录的常用命令
pwd (显示目前所在的目录)
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。pwd示例:
注意:
pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的 完整路径啊!mkdir (创建新目录)
语法:
mkdir示例
rmdir (删除空的目录)
语法:
rmdir示例:
cp (复制文件或目录)
cp 即拷贝文件和目录。copy的意思。
语法:
cp示例:
rm (删除文件或者目录)
语法:
rm示例:
mv (移动文件与目录,或修改名称)
选项与参数:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
mv示例:
Linux文件编辑工具vi/vim
基本上 vi/vim 共分为三种模式 :
- 1 命令模式(Command mode)
- 2 输入模式(Insert mode)
- 3 底线命令模式(Last line mode)
命令模式
输入模式
在命令模式下按下i、o、a就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
主要保存或者退出文件,以及设置Vim 编辑器的工作环境,还可以让用户执行外部的Linux 命令或跳转所编写文档的特定行数。技巧:shift+zz 保存退出
vi/vim 使用实例
编辑模式
常用语法
- 进入编辑模式
- i 当前光标前
- a 当前光标后
- o 当前光标行的下一行
指令模式
在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi、显示行号等动作是在此模式中达成的!常用语法
1 基本语法 : 选项 w 保存 q 退出 ! 感叹号强制执行 / 查找, / 被查找词, n 是查找下一个, shift+n 是往上查找 ? 查找, ? 被查找词, n 是查找上一个, shift+n 是往下查找示例:
命令操作
Linux文件内容查看命令
cat(显示文件内容)
由第一行开始显示文件内容语法:
选项与参数:
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符
cat示例:
tac(倒着显示文件内容)
t ac与 cat 命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:nl(显示行号)
语法:
选项与参数:- -b :指定行号指定的方式,主要有两种:
- -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
- -b t :如果有空行,空的那一行不要列出行号(默认值);
- -n :列出行号表示的方法,主要有三种:
- -n ln :行号在荧幕的最左方显示;
- -n rn :行号在自己栏位的最右方显示,且不加 0 ;
- -n rz :行号在自己栏位的最右方显示,且加 0 ;
- -w :行号栏位的占用的位数。
nl示例:
more(一页一页的显示文件内容)
一页一页翻动 在 more 这个程序的运行过程中,你有几个按键可以按的:- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
more示例:
less(往前翻页)
一页一页翻动,以下实例输出 /etc/man.config 文件的内容:- less运行时可以输入的命令有:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
示例:
head(只看头几行)
取出文件前面几行语法:
head示例:
tail(只看尾几行)
取出文件后面几行
语法:
tail示例:
Linux打包压缩与搜索命令
tar 命令
语法:
选项 :- -c 产生.tar打包文件
- -v 显示详细信息
- -f 指定压缩后的文件名
- -z 打包同时压缩 Gzip
- -x 解包.tar文件
示例1
压缩多个文件示例2
压缩目录示例3
解压:tar -zxvf XXX.tar.gzgzip/gunzip压缩
语法:
示例1
gzip压缩
示例2
gunzip解压缩文件
搜索命令
grep 命令
grep 命令用于在文本中执行关键词搜索,并显示匹配的结果。语法:
选项:
- -b 将可执行文件(binary)当作文本文件(text)来搜索
- -c 仅显示找到的行数
- -i 忽略大小写
- -n 显示行号
- -v 反向选择—仅列出没有“关键词”的行
- -E :开启扩展(Extend)的正则表达式
示例1
find命令
find 命令用于按照指定条件来查找文件。语法:
选项:
- -name 匹配名称
- -perm 匹配权限(mode 为完全匹配,-mode 为包含即可)
- -user 匹配所有者
- -group 匹配所有组
- -mtime -n +n 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前)
- -atime -n +n 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天 以前)
- -ctime -n +n 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前)
- -nouser 匹配无所有者的文件
- -nogroup 匹配无所有组的文件
- -newer f1 !f2 匹配比文件 f1 新但比 f2 旧的文件
- --type b/d/c/p/l/f 匹配文件类型(后面的字幕参数依次表示块 设备、目录、字符设备、管道、 链接文件、文本文件)
- -size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,
- 而-50KB 为查找小于 50KB 的文件)
- -prune 忽略某个目录 -exec …… {}\; 后面可跟用于进一步处理搜
- 索结果的命令(下文会有演示)
示例1
按文件名:根据名称查找 / 目录下的 filename.txt 文件。示例2
按拥有者:查找 /opt 目录下,用户名称为 -user 的文件Linux常用系统工作命令
reboot 命令
reboot 命令用于重启系统,其格式为 reboot 。 由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用 root 管理员来 重启,其命令如下:poweroff 命令
poweroff 命令用于关闭系统,其格式为 poweroff 。 该命令与 reboot 命令相同,都会涉及硬件资源的管理权限,因此默认只有 root 管理员才 可以关闭电脑,其命令如下:wget 命令
wget 命令用于在终端中下载网络文件。语法:
参数:
- -b 后台下载模式
- -P 下载到指定目录
- -t 最大尝试次数
- -c 断点续传
- -p 下载页面内所有资源,包括图片、视频等
- -r 递归下载
示例1
尝试使用 wget 命令下载 tomcat 。报错:
Linux管道符、重定向与环境变量
输入输出重定向
把多个 Linux 命令适当地组合到一起,使其协同工作,以便我们更加高效地处理数据。- 标准输入重定向(STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命令中输入。
- 标准输出重定向(STDOUT,文件描述符为 1):默认输出到屏幕。
- 错误输出重定向(STDERR,文件描述符为 2):默认输出到屏幕。
示例1
比如我们分别查看两个文件的属性信息,其中第二个文件是不存在的,虽然针对这两个 文件的操作都分别会在屏幕上输出一些数据信 息,但这两个操作的差异其实很大:
注意:
在上述命令中,名为 itbaizhan 的文件是存在的,输出信息是该 文件的一些相关权限、 所有者、所属组、文件大小及修改时间等信息,这也是该命令的标准输出信息。而名为 xxxxxx 的第二个文件是不存在的,因此在执行完 ls 命令之后显示的报错提示信息也是该命令的错误输出信息。那么要想把原本输出到屏幕上的数据转而写入到文件当中,就要区别对待这两 种输出信息。输入重定向作用表
输出重定向作用表
注意:
对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的。我们先来小试牛刀。通过标准输出重定向将 man bash 命令原本要输出到屏幕的信息 写入到文件readme.txt 中,然后显示 readme.txt 文件中的内容。示例2
如果想把命令的报错信息写入到文件,该怎么操作呢?
管道命令符
管道命令符其执行格式为“ 命令 A | 命令 B” 。命令符的作用也 可以用一句话来概括“ 把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入” 。示例1
现在要做的就是把搜索命令的输出值传递给统计命令,即把原本要输出到屏幕的用户信 息列表再交给 wc 命令作进一步的加工,因此 只需要把管道符放到两条命令之间即可,具体如 下。这简直是太方便了!
这个管道符就像一个法宝,我们可以将它套用到其他不同的命令上,比如用翻页的形 式查看/etc 目录中的文件列表及属性信息(这些内容默认会一股脑儿地显示到屏幕上,根本 看不清楚): 在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和passwd 命令的--stdin 参数相结合,我们可以用一条 命令来完成密 码重置操作:命令行的通配符
通配符就是通用的匹配信息的符号,比如星号(* )代 表匹配零个或多个字符,问号(? )代表匹配单个字符,中括号内加上数字 [0-9] 代表匹配 0 ~ 9 之间的单个数字的字符,而中括号内加上字母 [abc] 则是代表匹配 a 、 b 、 c 三个字符中的任意 一个字符。示例1
如果只想查看文件名为 sda 开头,但是后面还紧跟其他某一个字符的文件的相关信息, 该怎么操作呢?这时就需要用到问号来进行通配了。 除了使用[0-9] 来匹配 0~9 之间的单个数字,也可以用 [135] 这样的方式仅匹配这三个指定 数字中的一个,若没有匹配到,则不会显示出来:
重要的环境变量
系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量 用户级环境变量:每一个登录到系统的用户只能够读取属于自己的用户级的环境变系统级
/etc/profile
在系统启动后第一个用户登录时运行,并从/etc/profile.d 目录的配置文件中搜集shell 的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。用户级
~/.profile(推荐首选)
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己使用的shell信息。示例1
配置 tomcat 环境变量Linux磁盘管理
分区的方式
MBR分区表:每块硬盘最大支持 2.1TB 硬盘,每块硬盘最多支持 4 个分区。 GPT 分区表(全局唯一标识分区):支持 9.4ZB 硬盘,理论上支持分区数没有限制,但 Windows 限 制 128 个主分区。Linux分区原理
df命令
用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统 所在硬盘分区的总容量、已使用的容量、剩余容量等。语法:
示例1:
各列信息的含义:
- Filesystem:表示该文件系统位于哪个分区,因此该列显示的是设备名称;
- 1K-blocks:此列表示文件系统的总大小,默认以 KB 为单位;
- Used:表示用掉的硬盘空间大小;
- Available:表示剩余的硬盘空间大小;
- Use%:硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会
- 严重影响系统的正常运行;
- Mounted on:文件系统的挂载点,也就是硬盘挂载的目录位置。
lsblk命令
lsblk 命令来自于英文词组 ”list block“ 的缩写,其功能是用于查看系统的磁盘使用情况。参数:
参考实例
显示系统中所有磁盘设备的使用情况信息:fdisk命令
Linux fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。重要参数:
- -l 列出素所有分区表
菜单操作说明
- m :显示菜单和帮助信息
- a :活动分区标记/引导分区
- d :删除分区
- l :显示分区类型
- n :新建分区
- p :显示分区信息
- q :退出不保存
- t :设置分区号
- v :进行分区检查
- w :保存修改
- x :扩展应用,高级功能
参考实例
显示当前分区情况:
Linux挂载硬盘
虚拟机添加硬盘分区
设置分区
选项:- 1 按n : 添加新的分区
- 2 按p : 你是不是要化一个主分区
- 3 按1 : 主分区编号
- 4 按回车2次:设置分区大小
- 5 按w : 把数据写入硬盘退出
查看分区
格式化
挂载
永久挂载
Linux系统状态检测命令
ip addr 命令
命令用于获取网卡配置与网络状态等信息。uname 命令
uname 命令用于查看系统内核与系统版本等信息。注意:
在使用 uname 命令时,一般会固定搭配上 -a 参数来完整地查看当前系统的内核名称、主 机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统 名称等信息。 顺带一提,如果要查看当前系统版本的详细信息,则需要查看 redhat-release 文件,其命 令以及相应的结果如下:free 命令
free 用于显示当前系统中内存的使用量信息。注意:
为了保证 Linux 系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。last 命令
last 命令用于查看所有系统的登录记录。语法:
注意:
使用 last 命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保 存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而 判断系统有无被恶意入侵!
history 命令
history 命令用于显示历史执行过的命令。