一 目录及文件管理
一、linux中命令的概述和命令的帮助:
1.命令解释器:shell命令解释器,shell负责接收用户的命令进行解释,将解释结果(要执行的命令)传递给系统内核,完成 什么命令做什么事;
2.命令的分类:
内部命令:集成于shell解释器程序内部的指令,无需从磁盘中读取,执行效率更高;
外部命令:对应了系统中的每一个文件,属shell解释器之外的命令,linux系统必须知道外部命令的对应文件位置,才 能由shell加载;
3.如何验证命令为内部命令还是外部命令:
enable 命令 ##若无输出则为内部命令,输出not shell为外部命令
which cdwc 外部命令 ##查看外部命令在系统中存放的位置
4.命令的通用格式:
命令字 【选项】 【参数】
选项:调节命令的具体功能
参数:命令字的处理对象,通常为文件名、目录名、用户名等;
特殊选项:
-选项 ##短格式
--选项 ##长格式,作用与短格式相同,适用于选项为多个字符,例如--help
-选项 -选项 等于 -选项集合 ##多个短格式可以合并,例ls -ld
5.命令中的快捷键:
ctrl+l ##清除屏幕内容
ctrl+c ##停止当前命令的编写
ctrl+alt+fn ##图形界面切换字符界面
alt+fn ##字符界面切换字符界面
alt+f7 ##字符界面切换图形界面或f1
6.命令的帮助,首先确定此命令是内部命令还是外部命令,再进行获得帮助;
内部命令的帮助:help 内部命令
外部命令的帮助:外部命令 --help
命令的帮助手册:man 命令(内外都可以) ##交互式中ctrl+F/B翻页,q退出,/关键字进行查找内容;
软件安装时自带的帮助:
/usr/share/doc/软件名
二、对文件的增删改查:
1.查:cd、pwd、ls、du、which、find、cat、more、less、head、tail、grep、wc、find
cd:将用户的工作目录更改到其他位置
语法:cd / ##切换到根目录
cd ~ ##切换到root用户的家目录等同于cd
pwd:查看当前用户所在的工作目录
ls:显示目录中的内容
语法:ls -ld 文件位置或目录位置 ##以长格式显示目录或文件本身的属性,而并非目录下的子文件的属性
ls -a 目录位置 ##查看目录下的所有子目录、子文件、隐藏文件
ls -lh 文件位置 ##以长格式并且以k或者M显示文件的大小
which:查找外部命令的存放位置
语法:which 外部命令 ##注意只能查找外部命令的存放位置
find:根据条件查找文件位置
语法:find 查找范围目录 查找类型 查找条件
查找范围目录:查找文件的范围,/代表根目录
查找类型:可根据文件名-name、文件类型-type、文件大小-size等类型进行查找
查找条件:根据查找类型拟定适当的查找条件
举例:find / -name fstab ##在根目录进行查找文件名为fstab的文件
find / -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html ##find用法
cat:查看文件内容,也可以查看多个文件的内容,中间用空格隔开
语法:cat /etc/fstab /proc/version
more:全屏分页查看文件内容,会输出查看的百分比(适合较长的文件--日志文件),交互式中enter进行逐行查看、 空格向下翻屏、b键向上翻屏、q退出
语法:more 文件位置
head:查看文件开头的部分内容
语法:head -n 文件位置 ##n代表阿拉伯数字,输入想查看的行数,默认十行
tail:查看文件结尾的部分内容
语法:tail -n 文件位置 ##n与head的-n属性一致
tail -f 文件位置 ##监控文件的变化,ctrl+c终止
wc:统计文本内容,不指定选项时,默认为行数、单词数、字节数
语法:wc -c 文件位置 ##统计文件中的字节数
wc -l 文件位置 ##统计文件中的行数
wc -w 文件位置 ##统计文件中的单词数
举例:find /etc -name "*.conf" |wc -l ##查看/etc目录中有多少个以.conf结尾的配置文件
grep:过滤文件内容并显示包含指定字符串的行
语法:grep 关键字 文件位置 ##查找文件中包含关键字的行
grep -i 关键字 文件位置 ##忽略关键字的大小写进行查找
grep -v 关键字 文件位置 ##输出排除关键字以外的行
关键字的语法:^$代表空行、word$代表以word结尾的行、^word代表以word开头的行
举例:df "^#" /etc/yum.conf |grep -v "^$" ##排除文件中的注释和空行
2.增:mkdir、touch、ln、cp
mkdir:用于创建新的目录
语法:mkdir 目录名 ##在当前目录创建子目录
mkdir -p 目录名/目录名/ ##一次性创建多层目录
touch:用于创建新的空文件
语法:touch .文件名 ##创建隐藏文件
touch {1..9}.txt ##创建1.txt...9.txt 九个文件
ln:为文件或目录创建链接文件,注意源文件和目标文件必须都为绝对路径
语法:ln -s 源文件 目标链接文件 ##创建软链接,特点:可以跨文件系统,但是源文件失效,软链接失效
ln 源文件 目标连接文件 ##创建硬链接,特点:不可以跨文件系统,但是源文件失效,硬链接不失效
cp:复制文件或目录
语法:cp 选项 源文件或目录 目标文件或目录
选项:-r ##复制目录时,表示子文件子目录都会被递归复制
-f ##复制同名文件或者目录时,不进行提醒,直接强制复制
常用语法:cp -rf 源文件或源目录 目标目录或文件 ##注:若源是目录或者源文件大于一个,那么目标必须是目 录
3.删:rm、mv
rm:用于删除指定的文件或目录
语法:rm 选项 文件或目录
选项:-r ##删除目录时用到,表示递归删除整个目录树
-f ##删除时不进行提醒,强制删除
常用语法:rm -rf 文件或者目录
mv:为指定的文件或目录移动存储位置
语法:mv 需要移动的文件或者目录 目标目录
注意事项:在同一级目录下,可以完成改名
移动时,目标必须是目录
移动并改名、覆盖(一定慎重并且名称要相同)
4.改:vi /var/log/messages
vi:创建或修改文件
工作模式:
命令模式:启动vi编辑器默认进入的第一个模式,在此模式中完成光标的移动、查找、删除、复制、粘贴等操作,在此 模式下,a、i、o三个键都可以切换到输入模式,按:键切换到末行模式;
输入模式:该模式中的主要操作就是写入内容,可以对文本进行添加修改、删除操作,在此模式下,最后一行会出现INSERT 的内容,在此模式按esc键退出到命令模式;
末行模式:该模式用于设置vi编辑环境,保存文件,退出编辑器等操作,在此模式下,最后一行会出现:的内容,按esc 可退出到命令模式;
基本用法:
1.vi+文件名 2.找到要更改的部分 3.按i进行编辑(从命令模式到输入模式) 4.按esc键退出编辑(从输入模式到命令模 式) 5.:wq保存退出 :q!不保存退出(从命令模式到末行模式)
编辑文本快捷键:
o:在光标所在行的下一行添加内容
O:在光标所在行的上一行添加内容
行内快速移动光标键:
END键和$键将光标快速跳转到本行末尾
HOME键和^键将光标快速跳转到本行行首
行间快速跳转:
1G和gg可以快速跳转到文件内容的第一行
G可跳转到文件的最后一行
#G可以跳转到文件的第#行
切换到末行模式,:set nu显示行号,:set nonu命令取消显示行号
删除:
#dd删除自光标所在行(包含光标所在行)开始向下的#行内容,dd删除光标所在行
d$删除当前光标处之后到行尾的所有字符
:% g/^#/d 删除以#号开头的行
:% g/^$/d 删除空行
复制:
#yy复制当前光标所在处开始的#行内容(包含光标所在行),yy代表复制光标所在行
#yw代表复制光标处往后的#个单词
粘贴:在命令模式下完成
小写p粘贴在光标之后,大写P粘贴在光标之前
查找文件内容:
/关键字:在当前光标位置往后进行查找关键字
?关键字:在当前光标位置往前进行查找关键字
在查找结果的交互式中,N代表向上翻看匹配结果,n代表向下翻看匹配结果
撤销编辑,保存及退出:在命令模式下
小写u可以撤销最近一次的更改,连续u可以恢复进行多步的修改,常用
大写U可以用于取消对当前行做的所有编辑
大写ZZ可以保存当前文件且退出编辑器
末行模式的操作:
:wq保存文件并退出编辑器
:w保存文件并不退出编辑器
:w /root/文件名 另存为
:q! 不保存退出编辑器
:r 文件位置 ##在当前编辑的文件中读入其他文件内容切将其文件内容复制到当下文件光标所在处
替换文件内容:
:% s/旧内容/新内容 将整个文件中的旧都替换成新(只替换每行的第一个匹配结果)
:% s/旧内容/新内容/g 将整个文件中的旧都替换成新(替换所有的匹配结果)
:5,15 s/旧内容/新内容 将第5行到第15行中的旧替换成新(替换每行的第一个匹配结果)
:5,15 s/旧内容/新内容/g 将第五行到第15行中的旧替换成新(替换每行中的所有匹配结果)
:5 s/旧内容/新内容/g 将单单第五行的旧替换成新(替换行中的所有匹配结果)
三、文件的备份:
1.gzip命令:压缩和解压缩工具,压缩文件的扩展名为.gz,选项-9代表高压缩;
语法:gzip -9 文件名 ##压缩文件为.gz格式文件
gzip -d 文件名.gz ##解压缩文件
2.bzip2命令:压缩和解压缩工具,压缩文件的扩展名为.bz2,选项-9代表高压缩
语法:bzip2 -9 文件名 ##压缩文件为.bz2格式文件
bzip2 -d 文件名.bz2 ##解压缩文件
注:无论是gzip命令还是bzip2命令,压缩文件后,源文件将被删除,解压缩后,源文件恢复
3.tar命令:归档文件--将文件进行归档时,文件也会被压缩(调用gzip或者bzip2工具),归档时,源文件是不受影响的
语法:tar 选项 归档及压缩文件名 需要归档的文件或目录 ##归档命令
tar 选项 归档及压缩文件名 -C 目标目录 ##解压文件
选项:-z 使用gzip工具进行压缩解压,文件名为.tar.gz
-j 使用bzip2工具进行压缩解压,文件名为.tar.bz2
-J 使用xz工具进行压缩解压,文件名为.tar.xz
-c 压缩文件
-C 解压文件到目标目录
-f 表示使用归档文件,压缩解压都需要指定
-v 输出详细信息
-x 解压文件
-t 列表查看包内的文件(查看时用到)
-p 小写p,打包时保留文件或目录的权限
注:压缩率:xz>bzip2>gzip
常用语法:
归档:tar zcvf 文件.tar.gz 需要归档的文件或目录 ##调用gzip工具进行归档
tar jcvf 文件.tar.bz2 需要归档的文件或目录 ##调用bzip2工具进行归档
tar Jcvf 文件.tar.xz 需要归档的文件或目录 ##调用xz工具进行归档
解压:tar zxvf 文件.tar.gz -C 解压释放目录 ##调用gzip工具进行解压
tar jxvf 文件.tar.bz2 -C 解压释放目录 ##调用bzip2工具进行解压
tar Jxvf 文件.tar.xz -C 解压释放目录 ##调用xz工具进行解压
只查看不解压:tar ztf 文件.tar.gz
tar jtf 文件.tar.bz2
tar Jtf 文件.tar.xz
四、扩展:
1.linux中目录结构:
/boot/:存放系统启动文件,内核文件等
/etc/:存放系统服务配置文件
/proc/:存放系统的硬件状态的信息配置文件
/dev/:存档硬件的映射文件目录
/home/:所有普通用户的默认家目录
/root/:超级管理员的默认家目录
/var/:存放系统中动态变化的文件,如日志等
/usr/:存放其他用户的文件目录,通常为程序文件等
/bin/:存放所有用户都可执行的并经常执行的命令文件
/sbin/:存放系统中基本的管理命令,通常管理员才有权限执行
/tmp/:系统中的临时文件存放目录
2.系统时间的设置与查看:
date ##查看系统时间
date -s 09/10/16 ##设置系统日期2016年9月10日
date -s 16:44:00 ##设置系统时间为16:44
hwclock -w ##将系统时间保存到BIOS硬件中
hwclock --show ##查看硬件时间
3.别名的设置:
作用:别名是系统中为命令或参数等的一个附加名称,重启失效
alias ##查看系统中的别名
alias 别名='需要设置别名的内容' ##设置别名
unalias 别名 ##取消别名
4.特殊符号:
>与<:> 重定向输出--表示前一个命令的输出结果到后边的文件中;
< 重定向输入--表示后边文件的内容作为前一个命令的参数
>>:重定向追加--在重定向输出的基础上,不覆盖原有文件内容
|:前一个命令的输出作为后一个命令的输入
*:通配符,代表任意字符,不限制位数
?:问号,代表任意字符,只代表1位
五 find命令详解
Find:
作用:常在系统中作为查找文件所用到的角色
语法:find 查找位置 查找类型 [查找后所执行的操作]
查找位置:绝对路径或相对路径
查找类型:
-name:根据文件名查找
-iname:不区分大小写的方式查找,只支持*?[]^等风格
-perm:精确权限查找,后边接权限的掩码值,掩码值用法如下:
755:查找777权限的文件
/222:查找至少一类用户有写权限的文件
/002:查找其他用户有写权限的文件
-222:查找三类用户都有写权限的文件
-user:以用户名查找
-group:以组名查找
-nogroup:查找无属组的文件
-nouser:查找无属主的文件
-regex:匹配正则表达式进行查找,-iregex:匹配正则并忽略大小写
-type:以文件类型查找
f:普通文件 d:目录文件 b:块设备文件 c:字符设备文件 l:链接文件 s:套接字符文件 p:管道文件
-size:以文件大小查找,包含K、M、G单位,正数代表大于,负数代表小于,整数代表等于
-atime:以访问天数查找,正负整数同上
-mtime:以数据修改天数查找,正负整数同上
-amin:以访问分钟数查找,正负整数同上
-mmin:以数据修改分钟数查找,正负整数同上
-empty:查找空文件
-follow:如find命令遇到符号链接文件,就跟踪至链接所指向的文件中
-maxdepth:从指定目录开始向下的几层目录开始查找
-newer:查找在此文件修改之前所修改的所有文件
处理动作:
-print:输出到屏幕,不需要添加,默认输出到屏幕
-ls:以ls长文件的格式输出
-delete:将查找到的文件删除
-fls 文件路径:将查找到的文件以ls详细信息的格式输出到某个文件
-exec 命令 {} \; :将查找到的文件传递给shell命令进行处理,与此命令 (|xargs shell命令) 达到的目的相同
多个查找类型连接:
-a :在两个查找类型中间,表示和
-o :在两个查找类型中间,表示或
! :在查找类型前边,表示非,与查找条件相反
实例:
1.以结尾的文件名进行查找;
find /etc/ -name "*.conf"
2.以结尾的文件名(忽略大小写)进行查找;
find /etc/ -iname "*.conf"
3.以两个名称为条件进行查找,符合其中一个名称即可;
find /etc/ -name "*.conf" -o -name "*.txt"
4.配置正则表达式进行查找;
find . -regex ".*\(\.txt\|\.pdf\)$"
5.否定条件查找;
find /etc/ ! -name "*.conf"
6.根据文件类型查找,查找目录中的所有文件;
find /boot/ -type f
7.查找距当前目录的往深的两级目录中的文件;
find /etc/ -maxdepth 2 -type f
8.查找七天内被访问过的文件;
find /etc/ -type f -atime -7
9.查找七天前当天被访问过的文件;
find /etc/ -type f -atime 7
10.查找七天前所有时间内被访问过的文件;
find /etc/ -type f -atime +7
11.查找在修改此文件之前修改的所有文件;
find /etc/ -type f -newer /etc/fstab
12.根据文件大小进行查找,+5k代表大于5k、-5k代表小于5k、5k代表等于5k;
find /etc/ -type f -size +5k
13.查找空文件并且将其删除,三种方式;
find /etc/ -empty -delete
find /etc/ -empty -exec rm -rf {} \;
find /etc/ -empty | xargs rm -rf
14.根据文件权限查找文件;
find /etc/ -type f -perm 777
15.查找出目录中的后缀为php,并且权限不是755的文件;
find /etc/ -type f -a -name "*.php" -a ! -perm 755
16.查找出目录中的日志文件,并且其存在时间超过30天,将其复制到/tmp目录下;
find /var/log/ -name "*.log" -a -mtime +30 -exec cp -rf {} /tmp/ \;