一、Linux下的文件
Linux下的文件是一个字符流序列
广义:一切皆文件
狭义:磁盘文件
(一)、Linux的6种文件:
1、普通文件:以‘-’表示,文本文件、可执行二进制文件、图片文件、视频文件等等,包含各种长度的字符串。内核对这些数据没有进行结构化,只是有序的字节序列。
2、目录文件(directory):以‘d’表示,也称文件夹目录第一项表示此目录本身,以‘.’表示;目录的第二项,本身该目录的父目录,以‘…’表示
3、设备文件:磁盘、键盘、打印机、网卡等设备。设备文件除了存放在文件结点中的信息外,不包含任何数据
(1)字符设备(character):以‘c’表示,如键盘、终端、打印机、鼠标
(2)块设备(block) :以‘b’表示,如硬盘、光盘等
4、链接文件(link):以‘l’表示,链接文件指向某个实际的目标文件,其用途类似于Windows系统中的“快捷方式”,也即当访问链接文件时,实际访问的将是链接文件所指向的目标文件。
(1)hlink :硬链接文件,是目标文件的一个副本,与目标文件共用同一个索引节点(inode)即使目标文件被改名或移动到别的目录上,硬链接文件仍然有效。
(2)slink :符号链接文件,仅记录了目标文件的存放路径,当目标文件被移动后,符号链接就会失效。
5、套接字文件(sockets):以‘s’表示
6、管道文件(pipe):以‘p’表示
(二)、Linux文件成分:
1、索引节点(inode):用于记录文件以及目录(本质上也是文件)的属性信息以及存储文件的数据块的物理位置。文件使用的一个标识符,同一个文件有相同的inode号
文件的信息:文件权限、文件主、文件大小、存放位置、建立日期等等
查看文件索引节点:ls -i
2、数据:文件实际内容
3、文件名
(1)文件名最长为255个字符,除斜线‘/’和 空字符 以外,文件名可包含任意ASCII字符
(2)避免使用Linux中有特定含义的特殊字符:‘;’、‘|’、‘>’、‘<’、‘"’、‘`’、‘$’、‘!’、‘%’、‘&’、‘*’、‘?’、‘\’、‘(’、‘)’、‘[’、‘]’、空格、制表符或其他控制字符,详细参考 Linux特殊符号大全
(3)习惯上允许使用‘_’、‘.’来区别文件类型,同类型文件扩展名相同
(4)文件名区分大小写
(5)以圆点‘.’开头的文件名是隐藏文件,必须使用 ls -a 才能显示
(三)、Linux的目录
文件目录:用于标识系统中的文件及物理地址,以供检索文件使用
文件目录项:包含文件名、inode
Linux中不同的系统都遵循文件系统层次结构标准(FHS)
1、Linux下常见目录
(1)/ :Linux系统目录树的起点,包含以下所有目录
(2)bin :命令文件目录,也称二进制目录
(3)boot :存放系统内核文件和引导装载程序文件
(4)dev :设备文件目录,存放所有设备文件
(5)etc :存放系统配置文件
(6)home :存放系统中各个用户主目录,子目录为各用户名
(7)lib :存放各种编程语言库
(8)media :系统设置的自动挂载点
(9)opt :(optional)存放用户安装的应用程序
(10)usr :存放不经常变化的数据,以及系统安装的应用程序,最大的目录之一,常作为独立分区挂载
(11)mnt :主要用来临时挂载文件系统,为某些设备默认提供挂载点
(12)proc :虚拟文件系统,存放内存中的映像
(13)sbin :存放系统管理员或root用户的命令文件
(14)tmp :存放临时文件
(15)var :存放经常变化的文件,如系统日志等等
(16)root :系统管理员主目录
2、Linux文件路径
(1)绝对路径:从 / 目录开始直到目标文件或者目录的路径
(2)相当路径:从当前目录下出发,直到目标文件或目录的路径
(3)~ :表示用户主目录
(4). :表示当前目录
(5) . . :表示上一级目录
(6)- :代表上次所在目录
(四)、Linux文件权限
文件权限指文件的访问控制,即哪些用户可以访问文件及执行什么操作
1、用户分类
(1)u :owner,文件所有者,建立文件或目录的用户
(2)g :group,文件所属组群中的所有用户
(3)o :other,其他用户,既不是文件所有者,也不是同组用户中的用户
2、文件操作权限
字母表示模式:
(1)r :读取权限,浏览文件或目录中内容的权限
(2)w :写入权限,修改文件内容、删除及添加和重命名目录内文件的权限
(3)x :执行权限,执行或查找文件的权限、进入目录的权限
(4)- :无权限
数字表示模式:
相应权限位拥有权限表示为1,无权限表示为0,将所得二进制字符串,转换为八进制表示。
如下八进制表示为 :764
二、Linux 常用命令
(一)、Linux 命令的基本格式
Linux 命令的基本格式:命令 [选项] [参数]
命令格式中的 [] 代表可选项。如果可以省略选项或参数,则一般都有默认选项或参数。
1、选项
Linux 的选项又分为短格式选项(-l)和长格式选项(–all)。短格式选项是英文的简写,用一个减号调用,而长格式选项是英文完整单词,一般用两个减号调用。
2、参数
参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作。文件和目录表示的参数,在下面的格式中表示为 < file/dir >。
Linux 常用命令有三类:
1、文件目录类命令
2、进程控制类命令
3、用户及权限管理类命令
(二)文件目录类命令
1、浏览目录命令
(1)ls :列出当前目录内容
选项:
-i :显示目录下文件结点
-a :显示当前目录下所有文件,包含隐藏文件
-l :显示当前目录下文件的权限
(2)pwd :显示当前工作目录
2、目录操作命令
(1)cd :(change dir)切换目录,切换到指定路径的目录或切换回当前用户目录
(2)mkdir :(make dir)新建目录
选项:
-p :递归生成目录
示例:mkdir -p dir1/dir2
mkdir dir1 dir2 …
(3)rmdir :(remove dir)删除空目录
选项:
-r :递归删除空目录
3、浏览文件命令
(1)cat :(concatenate and display files)
①连接文件并打印到标准输出设备上:cat <file1 file2 … >
②建立小型文件:
cat > <file>
[input contents]
Ctrl D
③合并文件 cat file1 file2 > < newfile >
选项:
-n :为显示行添加行号
-E :在每一行末尾显示$
(2)more :分屏显示文件内容,若显示一屏后还有内容,按Enter键显示下一行,按Space键显示下一屏,按Q退出
格式:more < file/dir >
示例:ls -al /etc | more
(3)less :分页显示超过一页的文件。与more类似,除了more的用法,还可上、下键向上向下翻页
(4)head :显示文件前几行内容
格式: head [ -n ] < file>
选项:
-n :显示前n 行,不指定则显示前10行
(5)tail :显示文件后几行内容
选项:
-n :显示后n 行内容,不指定则为10
+n:从第n 行到文件结尾
-F:跟踪显示不断增长的文件结尾内容(常用于显示日志文件)
4、文件操作命令
(1)cp :复制文件或目录
格式:cp [ options ] < source file/dir > < object file/dir >
选项:
-b :若存在同名文件,则覆盖前备份原来的文件
-r :递归方式复制文件,用于复制源目录内的内容(保留源目录结构)
-a :复制目录
-p :连同文件属性一起复制,常用于备份
-i :若目标文件已存在,在覆盖前询问是否进行操作
-u :目标文件与源文件有差异时才会复制
(2)rm :删除文件与目录
选项:
-f :(force),忽略不存在的文件,不会出现警告信息
-i :互动模式,删除前会询问用户是否操作
-r :递归删除,常用于目录删除
(3)mv :移动或重命名文件或目录
格式:mv [options] [source file/dir] [object file/dir]
选项:
-b :若存在同名文件,覆盖前先备份原来的文件
-f :强制覆盖同名文件
(4)find :根据指定路径和表达式查找匹配的文件或目录可以搜索多个目录,且进行递归搜索
格式:find < file_path > [expressions] [operations]
常用表达式:
-name < file > :按文件名查找,可使用通配符
-type [ f/d/l/b/c/s ] :按文件类型查找f为普通文件
-size [+/-] [c/k/M/G]:查找指定大小的文件,+:比指定文件大,- :比指定文件小,c : bytes、k : Kb、M : Mb、G : Gb
-perm [ mode ] :按指定权限查找
-user [ username ] :查找文件所有者为指定用户的文件
-group [ groupname ] :查找所有者为指定组的文件
-delete :删除搜索到的文件
-exec [ command ] {} ; :对搜索到的结果执行特定命令
示例:find /root -name *.txt -exec cat {} ; > 2.txt
作用:找到root目录下的txt文件,将其内容写入2.txt
按文件修改时间查找:
(+ :在…之前,- :在…之后,time:天,min:分钟)
(-a :与 ,-o :或 ,! :非)
-m[ time/min ] [+/-] [ integer ] :(modification time)文件内容修改时间
– c[ time/min ] [ +/- ] [ integer ] :(change time)文件属性(权限)修改时间
-a[ time/min ] [ +/- ] [ integer ] :(access time)文件被读取修改时间
示例:find /root/dir -name *.txt -o -mmin +1
作用:dir目录下,查找txt文件或1分钟前修改的目录或文件
(5)grep :从指定文本文件或标准输出中查找符合条件的字符串,默认显示其所在行的内容
选项:
-i :忽略字符串大小写
-n :显示内容前,显示行号
-a :将binary文件以文本文件的方式查找数据
-c :计算找到指定字符串的次数
-v :反向选择,显示不包含指定字符串内容的那一行
格式:grep [ options ] [ string expressions ] <file…>
(6)sort :对文件进行搜索和排序
选项:
-r :按文件中每一行第一个字符,进行反向排序
-o :将操作后的结果输出到目标文件
-n :按文件中每一行第一个字端,进行数值排序
-k :后接整数,按文件中每一行中指定的第几个关键字,进行排序
(7)touch :更新一个文件的访问和修改时间,若没有对应文件,则新建改文件
格式:touch < file/dir >
(8)tar :(tape archive)将指定文件或目录打包成一个压缩文件,或按指定方式解压文件
选项:
注意:-c、-x、-t 不能同时出现在同一条指令
-c :新建打包文件
-t :查看打包文件内有哪些文件名
-x :解压文件
-j :通过bzip2的支持进行压缩或解压
-z :通过gzip的支持进行压缩或解压
-v :在解压或压缩时,显示正在处理的文件名
-f :指定要处理的文件
-C < dir > :指定压缩或解压的目录
(9)ln :创建关于某个目标文件的硬链接文件或符号链接文件,默认创建硬链接文件
选项:
-b :若存在同名文件,则覆盖前备份原来的文件
-s :建立符号链接文件
格式:ln [ options ] < source file/dir > < object file/dir >
(10)file :确定指定文件的类型
(11)tab键 :命令补全、文件补全
格式1:[ command/file/dir ] tab tab # 显示所有以输入字符开头的命令或、文件或目录
格式2: [ command/file/dir ] tab # 自动补全唯一以输入字符开头的命令、文件或目录
(三)、Linux进程管理命令
1、查看系统中的进程
(1)ps :显示出用户输入ps命令时系统瞬间的进程信息
选项:
-l :按长格式输出
-u :按用户名和启动的时间顺序显示进程列表
-j :按任务格式显示进程列表
-f :按树形格式显示进程列表
-a :显示所有用户的所有进程
-x :显示无控制终端的进程
-r :显示运行中的进程
(2)top :动态监视系统任务,输出结果是连续的
选项:
-b :以批量模式运行,但不能接受命令行输入
-c :显示命令行,而不仅仅是命令名
-d [ integer ] :显示两次刷新时间的间隔
-i :不显示空闲进程或僵尸进程
-n [ integer ] :显示更新次数,然后退出
-p [ PID ] :仅监视指定ID的进程
-q :不经任何延时就刷新
-s :安全模式运行,禁用一些交互指令
-S :累积模式,输出某个进程的总的CPU时间
2、控制系统中的进程
(1)kill :向指定PID的进程传送一个信号,常与ps、jobs命令一起使用;或杀死指定ID的进程
格式:kill [ signal ] [ PID ]
常用signal选项:
-SIGHUP :重新启动被终止的进程
-ISGINT :终止进程,相当于Ctrl+C
-SIGKILL :强制中断一个进程
-SIGTERM :以正常结束进程的方式终止进程
-SIGTOP :暂停一个进程 的运行,相当于Ctrl+z
(2)killall :使用进程名称杀死进程,可杀死一组同名进程
选项:
-e :对长名称进行精确匹配
-I :忽略大小写的区别
-p :杀死进程所属进程组
-i :交互模式,杀死进程前需进行确认
-l :打印所有已知信号列表
-q :若无进程被杀死,不输出任何信息
-r :使用正则表达式匹配要杀死的进程名称
-s :用指定进程号代签默认信号“SIGTERM”
-u :杀死指定用户的进程
(3)nice :在默认优先级基础上增大或减少优先级数值的方式来运行命令
格式:nice [ options ] < command [ arguments…] >
command:系统中任意可执行文件
选项:
-n [ integer ] :指定程序运行的优先级,未指定则默认为10
示例:nice -n -5 backdoor&
优先级调整值范围为 -20到19 ,数值越小,优先级越高,默认为 10,及在命令通常运行的优先级上加10
(4)renice :改变一个正在运行的进程的nice值
格式:renice [ options ] [ PID ]
选项:-n :指定程序运行的优先级调整值
3、进程后台运行:&
4、进程挂起和恢复
(1)Ctrl+Z :挂起进程
(2)Ctrl+C :终止进程
(3)fg :使进程恢复到前台继续运行
(4)bg :使进程恢复到后台继续运行
(5)jobs :查看被挂起的进程
(三)、Linux用户及权限管理命令
Linux用户拥有的信息:
(1)username :用户名唯一,由字母、数字和符号组成
(2)passwd :口令
(3)uid :用户ID,每个用户拥有的唯一性识别号码,超级用户为0,系统用户为1到499,普通用户从500开始
(4)gid :用户组ID
(5)用户主目录
(6)全称:用户账户的附件信息,可为空
(7)登录的shell :默认为bash
Linux下的用户信息文件:
(1)/etc/passwd :用户账户信息文件。文件中每一行为一个用户的信息,文件中各个字段值从左到右依次为:username、passwd、uid、groupname、全称、用户主目录和登录的shell,其中passwd字段以‘xxx’来填充,加密后的口令信息保存在 /etc/shadow
(2)/etc/shadow :用户账号加密后的口令信息文件。只有超级用户才能查看且修改其内容,且加密存储
(3)/etc/group :用户组账号信息文件。文件中每一行为一个用户组的信息,文件中各个字段值从左到右依次为:groupname、passwd、gid、附加用户列表
(4)/etc/gshadow :用户组账号加密后的口令信息文件
1、文件权限管理命令
(1)chmod :修改文件的访问权限
格式1:chmod [ u/g/o/a ] [ +/-/= ] [ r/w/x ] < file >
a: u和g和o所有用户,+:增加权限,-:减少权限,=:指定权限
示例1:chmod g+x, o-r 1.txt
格式2:chmod [ 0-7 0-7 0-7 ] < file >
示例2:chmod 760 1.txt //u有所有权限,g只没有执行权限,o没有权限
(2)chown :将指定文件的所有者修改为指定用户,可一并修改文件所属组群
格式:chown [ username ] [ :group ] < file >
示例1:chown Leozhou admin.php //将admin.php的所有者,修改为Leozhou
示例2:chown :Leozhou admin.php //将admin.php的所属组群,修改为Leozhou
(3)chgrp :修改文件所属组群
格式:chgrp [ options ] [ group ] < file >
选项:
-c :当发生改变是输出调试信息
-f :不显示错误信息
-R :处理指定目录及其子目录下的所有文件
-v :运行时显示详细信息
–dereference :作用于符号链接的指向,而不是符号链接本身
–no-dereference :作用于符号链接本身
2、用户组管理命令
(1)groupadd :新建组群(超级用户可用)
**格式:**groupadd [ options ] [ groupname ]
选项:
-g :指定用户组id
-o :允许组id号不唯一
(2)groupmod :修改指定用户组属性(超级用户可用)
格式:groupmod [ options ] [ groupname ]
选项:
-g :指定用户组id
-o :允许组id号不唯一
-n :指定新的用户组名字
(3)groupdel :删除指定的用户组(超级用户可用)。删除的用户组为附属组群或空组群。
格式:groupdel [ groupname ]
3、用户管理命令
(1)useradd :新建用户账户(超级用户可用)
格式:useradd [ options ] [ username ]
选项:
-d :指定用户登入时的主目录
-e :指定账户终止日期
-g :指定账户所属用户组
-G :指定账户所属附加组
-s :指定账户登录后使用的shell
-u :指定用户ID号
(2)usermod :修改用户属性(超级用户可用)
选项:
-d :指定用户登入时的主目录
-e :账户终止日期
-g :指定账户所属用户组
-G :指定账户所属附加组
-s :指定账户登录后使用的shell
-u :指定用户ID号
-l :新用户名(用于修改用户名)
(3)userdel :删除指定用户账户(超级用户可用)。删除用户若属私人组群,且改组群无其他用户,则组群也一并删除。但正在使用的系统用户不能删除。
格式:userdel [ options ] [ username ]
选项:
-r :删除用户账户,且删除用户主目录及本地邮件存储目录或文件
-f :删除用户登入目录的所有文件
(4)passwd :设置或修改用户的口令及口令属性
格式:passwd [ options ] [ username ]
选项:
-d :删除用户的口令
-l :暂时锁定指定用户的账户
-u :解除指定用户账户的锁定
-s :显示指定用户的账户状态
(5)su :切换用户身份。超级用户切换无需口令,其他用户切换到超级用户需要口令。使用exit可返回本来的用户身份。
格式:su [ username ]
(6)id :查看用户的uid、gid和用户属组信息。不指定用户则显示当前用户相关信息。
格式:id [ username ]
(7)whoami :查看当前用户名
(8)w :查看当前登录系统用户和详细信息
(9)finger :显示本地主机现在所有的用户的登陆信息
三、Linux文本编辑
Linux下的文本编辑通常使用Vim编辑器。
(一)、Vim编辑器的3种工作模式
1、命令模式:键盘接受任何字符当做命令来解释,不会出现在屏幕上
2、插入模式(编辑模式):输入的任何字符串被当成文件内容显示在屏幕上
命令模式下输入:
(1)i :从当前光标位置,开始输入字符
(2)I :光标移到当前行首,开始输入字符
(3)a :从光标下一位置,开始输入字符
(4)A :光标移到当前行尾,开始输入字符
(5)o :光标所在行之下新增一行
(6)O :光标所在行之上新增一行
3、底行命令模式:在屏幕底部显示‘:’等待用户输入命令
三种模式的转换:
(二)、Vim编辑器常用操作:
1、删除字符
在命令模式下输入:
(1)x :删除光标所在的字符
(2)X :删除光标前面的那个字符
(3)nx :从光标开始,向右删除n个字符
(4)nX :从光标之前的那个字符开始,向左删除n个字符
(5)dd :删除光标所在的一整行
(6)D :从光标开始删除到行尾
2、查找字符
命令模式下输入:
(1)/:光标从当前位置开始向文件尾部查找,若找到,光标停留在字符串的首字符上
(2)? :光标从当前位置开始向文件头部查找,若找到,光标停留在字符串的首字符上
(3)n : 继续查找满足条件的字符串
(4)N :改变方向查找,继续查找满足条件的字符串
3、文本块操作
底行命令模式下输入:
(1)set nu :每一行前出现行号
(2)set nonu :不显示行号
(3)n1,n2 co n3 :将n1行至n2行之间的所有文本复制到n3行之下
(4)n1,n2 m n3 :将n1行至n2行之间的所有文本移动到n3行之下
(5)n1,n2 d :删除n1行至n2行之间的所有文本
(6)n1,n2 s/char1/char2/g :n1行至n2行之间的所有字符串char1替换为char2
4、命令模式下输入:u :撤销执行