第二章:文件管理
重点:认识linux命令及帮助;文件管理
一.认识Linux命令及帮助:
1.认识linux命令
1)linux命令是完成一类功能,选项完成具体。
2)命令----shell(命令解释器)-----内核(kernel)这是命令执行过程;
根据命令是否是shell的一部分,将命令分为内部命令和外部命令;内部是shell的一部分,外部命令是由安装软件提供。
3)命令的通用格式:命令 [选项] [参数...]
“-选项”:短格式;
“--选项”:长格式;
多个短格式可以合并;
“...”表示可以有多个;
[]:表示可选;
{a|b|c}:表示多选一;
linux中命令严格区分大小写;
4)常用快捷键:
ctrl+c-->取消终止命令
ctrl+l-->清楚屏幕
ctrl+a-->光标移动到行首
ctrl+e-->光标移动到行尾
ctrl+f-->向前移动
ctrl+b-->向后移动
alt+.-->引用上一条命令的最后参数
tab-->补齐,一个tab补齐命令或参数,两个tab显示字母开头的所有命令
2.帮助
1)内部命令的帮助:help
案例:
help cd ##显示cd命令的帮助
2)外部命令的帮助选项:-h/--help
案例:
ls --help ##显示ls命令简单帮助
useradd --help ##显示useradd命令的帮助
3)命令的手册:man
a.man的区域类型:
1-->用户命令
5-->配置文件的格式帮助
8-->管理员管理工具的帮助
案例:
mount /dev/cdrom /mnt
cat <<END>/etc/yum.repos.d/centos.repo
[local]
name=dldl
baseurl=file:///mnt/
enabled=1
gpgcheck=0
END
yum -y install vsftpd
man man ##man1表示用户命令man的帮助
man 5 vsftpd.conf ##man5表示查看vsftpd的配置文件帮助
man 8 ip ##man8查看管理工具ip命令的帮助
b.man的基本结构
sections(区域)
name(名字)
synopsis(命令的语法)
description(描述解释命令)
option(选项)
EXAMPLE(使用的案例,经使用)
author(作者)
see also(其他相关帮助)
使用者经常关注:name,synopsis,option,example
案例:
man route -->/EXAMPLE(搜索)-->n(查看下一个)-->找到相关配置案例解决忘记route命令配置路由。
c.使用技巧:
ctrl+f -->向前翻一页
ctrl+b -->向后翻一页
q-->退出
/关键字 -->查找,使用n键找下一个,N找上一个
4)软件document(文档):/usr/share/doc/(软件杂项的文档说明)
5)使用搜索引擎、官网文档
https://docs.redhat.com
二.文件管理:增、删、改、查
1.文件的:查
基础信息查看,cd,pwd,ls,du,which,find,cat,more/less,head/tail,grep,wc
- 基础信息:
- cat /etc/redhat-release ##os的名称
uname -a ##查看kernel信息,i386/i686/i586表示32CPU,x86_64表示64CPU
cat /proc/cpuinfo ##查看cpu信息
cat /proc/meminfo ##查看内存信息
df -h ##查看硬盘使用情况
ip a ##查看ip地址
ip r ##查看路由,也叫默认网关
cat /etc/resolv.conf ##查看dns设置
hostname ##查看主机名
ctrl+d ##推出系统,再次登录查看历史命令:cat /root/.bash_history
2)目录的查看:cd,pwd,ls,du
a.目录结构:
/boot ##启动文件存放目录
/etc ##配置文件存放目录
/proc ##系统内存状态目录,是系统快照(虚拟文件系统,一定程度上调整kernel的行为)
/dev ##存放硬件文件的目录
/home ##普通用户的家目录
/root ##root用户的家目录
/var ##动态变化的数据存放目录,如日志、数据库的数据文件
/usr ##用户文件存放目录
总结:linux一切皆文件,所有的文件都放在目录下,所有的目录都放在/(根)目录。
echo 3 >/proc/sys/vm/drop_caches ##清理内存(pecache(1)、dentries和inodes(2))
b.目录及文件的表示:相对路径和绝对路径
绝对路径:从根目录开始描述,如/etc/sysconfig/。
相对路径:从当前目录开始描述,如"."表示当前目录,../上一级目录,../../上上一级目录,./dir=dir下一级目录
一个目录可以使用相对描述也可以使用绝对描述。
案例:
cd /etc/sysconfig
pwd ##确认当前目录
cat /etc/redhat-release ##绝对路径查看
cat ../redhat-release ##相对路径的查看
c.目录管理命令
cd切换目录,
语法:cd [选项] [目录]
案例:
cd /etc/sysconfig ##进入绝对目录
cd ../../ ##到根目录
cd - ##回到上一所在目录
pwd ##验证
cd ##回家
pwd
useradd u01 ##创建用户u01
echo 123123 |passwd --stdin u01 ##给u01修改密码为123123
cd ~u01 ##进入u01的家目录
pwd ##验证为/home/u01
pwd打印当前工作目录
语法:pwd [选项]
案例:
pwd ##直接查看当前工作目录即“.=?”
cd /etc/init.d/
pwd ##查看到是链接后的目录
pwd -P ##查看物理路径/etc/rc.d/init.d(/etc/init.d是/etc/rc.d/init.d的软连接pwd -P 可以显示出实际路径,/etc/init.d为浅蓝色目录)
ls列出目录下的内容
语法:ls [选项] [文件/目录]
案例:
cd /etc/sysconfig
ls ##查看当前目录
ls -lh ##长格式查看当前目录下的内容
ls -ld /boot ##查看/boot本身的详细信息
ls -R / ##显示整个系统的所有内容
ls --help ##查看帮助,推荐使用-lt按时间排序,-lS按大小排序
cd
ls -a ##显示隐藏文件如.bash_profile
du统计文件或者目录的大小
语法:du [选项] [目录/文件]
案例:
du -sh / ##统计根目录总大小
du -sh /* ##统计根目录的子目录的总大小
du -sh /etc/redhat-release ##统计单个文件大小
3)文件内容的查看:cat,more/less,head/tail,grep,wc
cat查看或者连接小文件
语法:cat 文件1 文件2
案例:
cat /etc/hosts ##查看小文件/etc/hosts
cat /etc/hosts /etc/resolv.conf ##连接多个小文件并显示
cat /etc/hosts.allow > /root/acl.txt ##将文件内容输入到目标文件
cat <<END >>/root/nfile.txt ##在shell脚本新建文件或者添加内容到nfile.txt中
文件内容
END(小写也可以)
more/less查看大文件,支持分页查看。
语法:more/less 文件
技巧:ctrl+f,ctrl+b进行翻页,q推出
more /var/log/messages ##分页查看日志文件
less /var/log/messages ##同上
head查看文件头部
语法:head [-行数] 文件
head和tail默认查看文件的10行内容。
tail查看文件的尾部
语法:tail [-行数] 文件
案例:
cat /etc/passwd ##查看系统账号文件
head -1 /etc/passwd ##查看第一行
useradd u01 ##创建u01用户
tail -1 /etc/passwd ##查看最后一行
head /etc/passwd |wc -l ##统计结果为10
tail -f /var/log/messages ##日志文件messages的跟踪,以便于排错
grep根据关键字检索文件
语法:grep [选项] 关键字 被检索的文件
案例:
grep u01 /etc/passwd ##查找u01是否在/etc/passwd文件中
cat /proc/meminfo |grep -i total ##-i忽略大小写的方式检索内存总大小信息
cat /etc/hosts.deny |grep -v "^#" |grep -v "^$" ##-v取反方式检索,^#表示注释,^$表示空行
grep u01 /etc/* ##检索u01所在文件及所在该文件的哪一行,文件名称与内容用户“:”分割
wc字数统计
语法:wc [选项] 文件
案例:
wc -l /etc/resolv.conf ##统计文件的行数
wc -w /etc/resolv.conf ##统计文件的单词数
cat /etc/passwd |wc -l ##统计系统中账号的总数,一行是一个账号,总行数即是总账号数
2.文件的增加:mkdir、touch、ln、cp
1)目录创建:mkdir
语法:mkdir [-p] 目录
案例:
mkdir /test ##使用绝对路径创建
mkdir test ##使用相对路径创建,等于/当前目录/test
mkdir /t1/t2/t3 ##无法创建,加选项-p即可创建。
2)创建空文件:touch
语法:touch 文件名称
案例:
mkdir test
cd test
touch a.txt ##创建单个文件
touch {1..10}.mp3 ##创建10个文件,以数字命名,后缀是mp3
touch {a..z}-{1..10}.{mp4,txt,avi} ##创建多个文件,以单个字母-单个数字命名,后缀分别是mp4,txt,avi等。
rm -rf ./* ##删除创建的文件
3)创建链接文件:ln
语法:ln [-s] 被链接的文件 新链接文件
链接分为:软件链接和硬链接,软件链接创建时使用选项-s即可,软件被链接文件删除,则链接文件失效,硬链接的被链接文件可以被删除。
案例:
ln -s /etc/resolv.conf /root/dns ##为常访问的文件创建链接
4)复制:cp
语法:cp [选项] 源文件 目的文件/目录
常用选项:-rf,源文件可以是多个,这时目的必须是目录;
案例:
cp /etc/resolv.conf /root ##复制文件到目录
cp /etc/resolv.conf /root/dns ##复制并重命名文件
cp -rf /etc/ /tmp ##复制目录时必须加-rf选项,且目的必须是目录
3.文件的删和改:rm、mv、vi/vim
1)删除文件或目录:rm
语法:rm [选项] 文件/目录
案例:
cp /etc/resolv.conf /tmp
rm -rf /tmp/resolv.conf ##删除单个文件
cp -rf /etc/ /tmp
ls /tmp
rm -rf /tmp/* ##清空/tmp目录
注意在删除认真确认,避免误删。
2)移动:mv
语法:mv 源文件 目标文件或者是目录
源文件与目标文件如果在同一个目录相当于改名,不在同一个目录是移动。
案例:
touch 1.file
mv 1.file 123 ##改名
mv 123 /tmp ##剪切文件到/tmp目录
3)文本编辑器:vi/vim
vi/vim编辑或者新建文件
a.vi的基本用法:
一分学会vi流程:vi 文件-->i-->输入内容-->按ESC键-->:wq
案例:新建ip.txt,内容为10.10.10.128
b.vi补充内容
:% g/^$/d ##删除空行
:% g/^#/d ##删除#开始的行
:!ip a ##在vi中执行命令
ctrl+r ##重做,与u撤销相反
其他功能请查看下图,能记住多少是多少,不影响基本使用。
4.tar备份系统:gzip,bzip2,xz,tar
gzip/bzip2/xz压缩工具
语法:gzip [-9/-d] 文件 ##其他相同
案例:
touch 123.txt
gzip 123.txt ##123.txt消失,生产123.txt.gz文件;bzip2,xz相同
gzip -d 123.txt.gz ##解压
tar归档,并调用gzip、bzip2、xz等压缩工具进行压缩。
语法:
备份:
tar -zcvf 文件名称-日期.tar.gz 备份的目录或文件 ##调用gzip
tar -jcvf 文件名称-日期.tar.bzp2 备份的目录或文件 ##调用bzip2
tar -Jcvf 文件名称-日期.tar.xz 备份的目录或文件 ##调用xz
恢复:解压缩
tar -zxvf 文件名称-日期.tar.gz -C 释放的目录 ##其他格式相同
查看压缩包中的内容:
tar -ztvf 文件名称-日期.tar.gz ##不解压查看,其他格式相同
案例:
备份/etc和/boot
tar -zcvf /opt/etc-boot-$(date +%F).tar.gz /etc /boot ##将z换为j生bz2格式的文件
tar -Jcvf /opt/etc-boot-$(date +%F).tar.xz /etc /boot
解压缩恢复:
tar -zxvf /opt/etc-boot-tab补齐.tar.gz -C /tmp ##同理替换z为j或者J可以对bz2、xz格式的文件进行解压
查看:
tar -ztvf /opt/etc-boot-*tar.gz ##不解压只查看内容,同理操作xz、bz2格式的文件
tar -ztvf /opt/etc-boot-tab补齐.tar.gz
三.更多练习:
2016.6.17课堂笔记:
cd /etc/sysconfig/ ##进入目录“绝对路径”
cd ../../etc/ ##进入目录,相对路径
pwd ##查看当前目录
du -sh /* ##统计根目录的子目录大小
ls -ld /boot/ ##查看目录/boot的属性
ls -lS ##根据大小排序当前目录文件
ls -lh ##人性化长格式显示当前目录
cd ##回到家目录
ls ##查看当前目录
cat /etc/redhat-release ##查看os版本
cat /etc/hosts ##查看主机解析文件
cat /etc/resolv.conf ##查看dns
cat /etc/sysconfig/network ##查看主机名配置文件
cat /etc/sysconfig/network -n ##显示行号查看
cat /etc/hosts /etc/sysconfig/network
cat /etc/hosts /etc/sysconfig/network -n
cat /etc/hosts /etc/sysconfig/network -n >123 ##合并文件network和hosts为123文件
ls
cat 123
cat /dev/zero >/dev/null& ##消耗内存,zero有无限0构成,null黑洞文件,将无限的0放到无法填满的黑洞文件中,这是一件永远无法完成的事,同时会消耗大量的系统资源
top ##查看cpu使用率、q退出
jobs ##查看后台进程
killall -9 cat ##结束cat进程
jobs ##验证,已杀死
cat /var/log/messages ##不适合查看打文件
more /var/log/messages ##分页查看
less /var/log/messages ##分页查看、支持“/关键字”查找、ctrl+f|b翻页、q退出
head /etc/passwd ##查看帐号文件的前10行
head /etc/passwd |wc -l ##验证是否是10行
head -1 /etc/passwd ##查看第一行
head -5 /etc/passwd ##查看前五行
head -20 /etc/passwd ##查看前20行
tail -1 /etc/passwd ##查看最后一行
tail /etc/passwd ##查看后10行
tail /etc/passwd |wc -l ##验证
tail -15 /etc/passwd |wc -l
tail -15 /etc/passwd ##查看后15行
tail -f /var/log/messages ##跟踪日志变化,ctrl+c结束
grep root /etc/passwd ##检索root用户的行
grep ^root /etc/passwd ##检索以root开头的行
useradd u01 ##查看用户u01
grep u01 /etc/* ##查看/etc/下包含u01的所有文件
grep -i mem /proc/meminfo ##-i忽略大小写查看内存
cat /etc/vsftpd/vsftpd.conf
less /etc/vsftpd/vsftpd.conf
grep -v ^# /etc/vsftpd/vsftpd.conf ##-v排除#号开头的注释行
grep -v ^# /etc/vsftpd/vsftpd.conf |grep -v ^$ ##同时排除#开头的注释行和空行
grep -A 3 error /var/log/messages ##查看日志中error行及其之后3行
wc /etc/sysconfig/network ##统计
cat /etc/sysconfig/network
wc -l /etc/sysconfig/network ##统计行数
wc -w /etc/sysconfig/network ##统计单词数
wc -c /etc/sysconfig/network ##统计字符数
wc --help ##查看帮助
ps aux |wc -l ##统计进程数量
cat /etc/passwd |wc -l ##统计用户数量
wc -l /etc/passwd ##统计用户数,注意对比
mkdir test ##创建当前目录下的test目录,相对路径
ls
mkdir /test ##绝对路径创建/test
mkdir /t1/t2/3 ##无法创建多个目录
mkdir -p /t1/t2/3 ##-p强制创建
cd /t1/t2 ##进入t2
pwd
touch ../a.file ##上一级目录下创建
touch 3/b.file ##下一级目录创建
yum -y install tree ##安装命令tree
tree /t1 ##树状查看目录
touch /t1/t2/{1..10}.mp3 ##绝对路径创建10个空文件
ls
pwd
tree /t1 ##树状查看/t1目录
cd ##回家
ln --help ##查看帮助
ln /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr ##创建硬链接ipaddr
ls -i ipaddr ##查看链接文件的inode号
ls -i /etc/sysconfig/network-scripts/ifcfg-eth0 ##查看源文件的inode号和链接文件的是相同的
ln -s ipaddr ip_addr ##创建软链接
ls -i ip_addr ##查看inode号和源文件不同
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0 ##删除源文件
cat ipaddr ##硬链接可用
ls
mv ipaddr /etc/sysconfig/network-scripts/ifcfg-eth0 ##剪切ipaddr
ls ##软链接显示为红色
cat ip_addr ##无法使用
cp /etc/sysconfig/network /tmp ##复制文件
ls /tmp/
cp /bin/ps /tmp ##复制文件
cd /tmp/ ##进入目录/tmp
ls
ls /opt
cp network ps yum.log /opt/ ##同时复制多个文件时目标必须是目录
ls /opt/
cp ./* /opt/ ##y覆盖、n不覆盖
alias
/bin/cp ./* /opt ##去除提示覆盖
ls
cp network /opt/network_hele ##复制并重命名
ls /opt/
ls
cp network ps /opt/np ##报错,复制多个文件目标必须是目录且必须存在
cp -rf /etc/ /tmp ##复制目录使用-rf选项将/etc/复制到/tmp中
cp /etc/ /tmp/ ##无法复制
rm -rf / tmp/* ##模拟错误、不小心删除/目录
cd /opt/ ##进入/opt目录
ls
cd
rm -rf /opt/ ps ##模拟错误,不小心删除/opt/目录
ls /opt ##验证
ls
mv 123 hehe ##改名
mv hehe /tmp ##移动
ls /tmp/
alias ##查看别名
alias hehe="echo 123123 hehe" ##设置别名hehe
hehe ##执行命令的别名
cat /etc/sysconfig/network-scripts/ifcfg-eth0 ##如果经常使用该命令可以将其做成别名,简化输入
alias ip_a="cat /etc/sysconfig/network-scripts/ifcfg-eth0 " ##设置别名ip_a为查看ip配置文件命令
ip_a ##执行别名
alias ##查看别名
unalias hehe ##取消别名
unalias ip_a #取消别名
hehe ##验证
ip_a ##验证,提示无法找到命令
alias
alias tnw="rm -rf /tmp/* /opt/* /etc/*" ##设置破坏性别名
alias
tnw ##执行别名
ls /tmp/
ls /opt
ls /etc/ ##文件删除后,需要恢复快照
vi /etc/inittab ##按i,将3改为5,按esc键,:wq保存退出
cat /etc/inittab
cat /etc/sysconfig/network
vi /etc/sysconfig/network ##修改主机名为www.linuxfan.cn
reboot ##重启验证
man man |col -b >man.txt ##将man的手册导出为txt纯文本文件,col -b去除制表位字符
man man >man_1.txt
vi man_1.txt ##有乱码
vi man.txt ##无乱码
man man ##man的帮助手册
yum -y install vim ##安装vim
alias vi=vim ##设置别名
alias ##查看别名
vi man.txt ##打开完成,删除、复制、粘贴等
vi /etc/vsftpd/vsftpd.conf ##删除注释、和空行
tar cvf /opt/boot-etc.tar /boot/ /etc/ ##归档/boot和/etc目录为/opt/boot-etc.tar文件
cd /opt/ ##进入/opt/目录
ls
gzip boot-etc.tar ##压缩为gz格式的文件
ls
du -sh boot-etc.tar.gz ##查看大小
gzip -d boot-etc.tar.gz ##解压
du -sh boot-etc.tar ##查看大小
bzip2 boot-etc.tar ##压缩为bz2格式的文件
du -sh boot-etc.tar.bz2 ##查看大小
bzip2 -d boot-etc.tar.bz2 ##解压
ls
bzip2 -9 boot-etc.tar ##-9表示强压缩
du -sh boot-etc.tar.bz2 ##统计大小
bzip2 -d boot-etc.tar.bz2 ##解压
xz boot-etc.tar ##压缩为xz格式的文件
du -sh boot-etc.tar.xz ##查看大小
xz -d boot-etc.tar.xz ##解压,xz、bzip2、gzip等源文件消失
cd
date
man date
date +%F ##年-月-日查看时间
date +%s ##从1970-1-1到现在的秒数
man date
date +%H:%M ##小时:分钟查看时间
date +%F:%H:%M ##年-月-日:小时:分钟
tar -zcvf /opt/etc-boot-$(date +%F).tar.gz /etc/ /boot/ ##调用gzip压缩备份/etc/和/boot/目录到/opt/
ls /etc/ ##验证源文件不受影响
ls /opt/ ##验证是否备份成功,大注意看时间
以下命令中时间替换为当天练习时间,注意用tab键可以很容易完成。
du -sh /opt/etc-boot-2016-06-17.tar.gz ##统计大小
tar -jcvf /opt/etc-boot-$(date +%F).tar.bz2 /etc/ /boot/ ##调用bzip备份
du -sh /opt/etc-boot-2016-06-17.tar.bz2
tar -Jcvf /opt/etc-boot-$(date +%F).tar.xz /etc/ /boot/ ##调用xz进行备份
du -sh /opt/etc-boot-2016-06-17.tar.xz
cd /opt/
ls
tar -zxvf etc-boot-2016-06-17.tar.gz -C /tmp ##解压文件,并释放到/tmp目录
ls /tmp/
rm -rf /tmp/*
ls
tar -jxvf etc-boot-2016-06-17.tar.bz2 -C /tmp
ls
cd -
ls
tar -Jxvf etc-boot-2016-06-17.tar.xz -C /tmp
ls
tar -ztvf etc-boot-2016-06-17.tar.gz |less ##查看压缩包的内容
tar -ztvf etc-boot-2016-06-17.tar.gz
tar -ztvf etc-boot-2016-06-17.tar.gz |grep passwd ##检索压缩包中是否有passwd文件
ls
tar -jtvf etc-boot-2016-06-17.tar.bz2 |grep passwd
tar -Jtvf etc-boot-2016-06-17.tar.xz |grep shadow
五.问答题:
手写作业:三选二。
问题一:
- 写出linux命令运行过程?
答:
- 写出man的3个常用区域类型并说明作用?
答:1 使用者在shell中可以操作的指令或可执行文件
5 配置文件或者某些档案的格式
8 系统管理员可用的管理指令
- 写出linux命令和选项的作用?
答:命令是用于实现某一类功能,选项是用于调节命令的具体功能
- 解释“...”,“[]”,“{a|b|c}”的作用?
答:...表示可以有多个 []表示可选 {a|b|c}表示多选一
5.至少写出5个linux快捷键,并写出一分钟学会vi的基本流程?
答:ctrl+l 清屏 ctrl+c 取消当前命令行编辑 tab 一次自动补全,两次列出所有名称列表
ctrl+a 移动光标到行首 ctrl+e移动光标到行尾
vi 文件-->i-->输入内容-->按ESC键-->:wq
问题二:
- 写出5种帮助?
答:(1)外部命令 --help (2)help 内部命令 (3)man
2.写出常用三种man的sections类型?
答:1 使用者在shell中可以操作的指令或可执行文件
5 配置文件或者某些档案的格式
8 系统管理员可用的管理指令
- 写出一分钟学会vi的流程?
答:vi 文件-->i-->输入内容-->按ESC键-->:wq
- 写出vi中光标移动一个字母的4个键和具体作用?
答:a 在光标后输入内容 A 在光标所在末尾输入内容
i 在光标前输入内容 I 在光标所在行首输入内容
- 写出vi中重做和撤销的快捷键?
答:ctrl+u 撤销 ctrl+r 重做
问题三:
1.解释目录的作用:
/boot :系统内核启动文件目录
/etc/ :配置文件所在目录
/proc :系统内存状态目录
/dev :设备文件目录
/home :普通用户家目录
/root :系统管理员家目录
/var :系统日志文件目录
/usr :应用程序相关目录
- 解释相对和绝对路径?
答:绝对路径是指文件在硬盘上的真正存在的路径,相对路径是当前位置和目标位置的路径,如相对路径是从根路径开始的路径那也是绝对路径。
3.写出5个查看文件的命令?
答:cat tac nl head tail more less
- 写出3个文件增的命令?
答:vi 111 cat 路径或文件 > 111 echo “内容” > 111
- 写出tar命令归档的三种语法格式?
答:tar -cvf 归档文件名.tar 源文件或目录
tar -xvf 归档文件名.tar -C 目标目录
tar -zcvf 归档文件名.tar.gz 源文件或目录
tar -zxvf 归档文件名.tar.gz -C 目标目录
tar -jcvf 归档文件名.tar.bz2 源文件或目录
tar -jxvf 归档文件名.tar.bz2 -C 目标目录