Linux目录与文件操作进阶

http://note.youdao.com/noteshare?id=25e5360fa7ac8c5896cb2a0269351e12&sub=FB83D45DE7AF475084543BCECDAFAFFB
复习
第1课概要
1、Linux的特点:一切皆文件
2、CentOS 6.5的启动和登录:root用户和普通用户(sq)
3、Shell 是用户与Linux操作系统之间的一个接口
Linux每打开一个终端窗口就会启动一个shell进程
默认的shell是bash:理解为Windows下面的各种浏览器,有个默认浏览器
4、打开终端窗口使用命令行操作的方式
本地操作 图形界面 无图形界面(/etc/inittab)
远程操作 putty scrt(做网络的用的多)
init 0:关机
init 1:单用户模式 root
init 2:多用户模式 不完全的多用户 不支持一些网络上的应用,如NFS
init 3:完全的多用户模式
init 4:安全模式
init 5:图形界面模式
init 6:重启
默认的不是5就是3
5、man 命令(前提是知道这个命令):查看操作手册,命令都有哪些参数
按q退出man
6、ps -ef :显示所有进程以及完整格式
ps:显示进程
ps -e -f:显示所有进程以及完整格式
-e:所有进程 -f :完整格式
7、date:显示系统时间
Mon Jan 21 22:25:31 PST 2019
date+’%Y-%m-%d %H:%M:%S’:格式化显示时间
2019-01-21 22:26:08
date+"%Y-%m-%d %H:%M:%S":格式化显示时间
2019-01-21 22:26:08
date -s 20161109:设定日期
date -s 21:05:50:设定时间
date -s “20161208 09:50”:设定日期和时间
s:是指set,设置
8、查看相关版本的命令cat /etc/issue 、uname -r
9、关机命令 poweroff、halt、shutdown -h 0、shutdown -h now、init 0
10、重启命令 init 6、reboot
第2课概要
1、Linux文件系统是的单个的树状结构

2、cd:切换目录或路径的命令
. 当前目录 … 上级目录
3、创建文件 touch
删除文件 rm
强删文件 rm -f
4、创建文件夹 mkdir
删除空文件夹 rmdir
删除非空文件夹 rm -r
ls -R:连同子目录一同显示出来,也就所说该目录下所有文件都会显示出来(显示隐藏文件要加-a参数)
ls -r:将排序结果反向输出,例如:原本文件名由小到大,反向则由大到小
-f:强删
5、rm -rf 谨慎使用!!!
rm -rf / 一定不要使用!!!

目录(文件夹)与文件操作进阶

查看文件
通配符
创建
复制
移动与重命名
硬链接与软链接

查看文本文件内容
cat命令:短文件
cat -n install.log
less命令:长文件
less install.log
键盘操作:
k:向上一行
j:向下一行
Page up:向上一页
Page down:向下一页
空格:一页一页翻
q:退出
看log用cat,用 grep查关键字的方式
more:只能往下翻,不能往上翻
less:可以往下翻,也可以往上翻
tail命令:从文件尾部查看文件,常用参数-f 只关心后几行时用
tail install.log 默认是后10行
tail -l install.log
tail -5 install.log 后五行
tail -n(数字) install.log 后n行
tail -f install.log :实时监控该文件
echo “Linux123” >>install.log:往install.log文件中添加字符串
Linux123
tail -f install.log >> a.txt:将实时监控的install.log的操作保存到a.txt
cat a.txt:查看文本文件a.txt的内容
Ctrl+C:退出查看日志
head命令:从文件开头查看文件,head -n file 只关心前几行时用
head install.log 默认是前10行
head -5 install.log 前5行
top:查看整个操作系统的一个命令,可以输出成一个文件
q退出
查看文件属性、目录内容
ls命令
不带任何参数:查看当前目录的内容
参数为目录:列出指定目录的内容
加参数:-R包括所有子目录的内容(递归)
加参数:-l:列模式列出详细信息
clear:清屏
clear
这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。
reset
这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。
另外介绍一个用别名来使用清屏命令的方法,如下:
[root@localhost ~]$ alias cls=‘clear’
[root@localhost ~]$ cls
执行以上命令后,以后你就可以直接输入 cls 命令来实现和 clear 一样的清屏命令了。

ls简介
ls是我们使用Linux最常用的命令,可以用来打印当前目录或者制定目录的清单,显示出文件的一些信息等。
ls -a:可以将目录下的全部文件(包括隐藏文件)显示出来
ls -l :列出长数据串,包括文件的属性和权限等数据
ls -r:将排序结果反向输出,例如:原本文件名由小到大,反向则由大到小
ls -R:连同子目录一同显示出来,也就所说该目录下所有文件都会显示出来(显示隐藏文件要加-a参数)

通配符
Shell提供了通配符的操作,多用文件名字的匹配
find:查找文件
ls:显示文件
cp:复制文件
mv:剪切文件
:所有文件
g
:文件名以"g"开头的文件
b*.txt:以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件
Data???:以"Data"开头,其后紧接着3个字符的文件
[abc]*:文件名以"a",“b” 或 “c” 开头的文件
?:占位符,有几个就代表几个字符
*:0个或者多个
[]:代表一个字符,罗列出来的其中一个的字符
*.conf:查找以".conf"结尾的所有文件

创建文件
创建文件vi、touch
vi abc.txt:文本编辑非常重要的一个工具,可以写内容也可以不写内容,保存后才生成文件
touch file1 file2 file3:直接创建的0字节的空文件
(创建文件也可以使用绝对路径和相对路径)
vi abc.txt:先进入a.txt ,点i可以进入编辑模式
进入编辑模式,按 o 进行编辑
编辑结束,按ESC 键 跳到命令模式,然后输入退出命令:
:w保存文件但不退出vi 编辑
:w! 强制保存,不退出vi 编辑
:w file将修改另存到file中,不退出vi 编辑
:wq保存文件并退出vi 编辑
:wq!强制保存文件并退出vi 编辑
q:不保存文件并退出vi 编辑
:q!不保存文件并强制退出vi 编辑
:e!放弃所有修改,从上次保存文件开始在编辑
复制文件、目录
cp:复制源文件到目的路径
复制文件cp: copy
这里 f开头 指的文件,d开头 指的文件夹
源和目的地址都可以是绝对路径和相对路径
cp f1 f2:
(在当前目录复制文件f1,重命名为f2)
cp f1 /home/jcy:
目标是目录,产生同名文件
将f1复制到/home/jcy路径下
cp f1 /home/jcy/f2:
目标是文件,可以改名
复制f1到文件夹/home/jcy/下,并改名为f2
cp f1 f2 /home/jcy:
源可以是多个文件
将f1和f2复制到文件夹/home/jcy下
如果目标路径中文件已经存在,会被覆盖,除非加上参数-i,要求提示
cp -i abc.txt abbc.txt:如果当前目录下已经存在abbc.txt,会提示:
cp: overwrite `abbc.txt’?
y:覆盖
n:不覆盖
否则不加参数 -i : cp abc.txt abbc.txt 会无提示直接覆盖
cp *.txt /tmp/:
将所有以".txt"结尾的文件复制到临时文件夹下
cd /tmp/:
进入tmp文件夹下
复制目录(文件夹)
cp -r d1 d2:
将d1以及d1下的所有文件复制到d2目录下
cp -r f1 d1 /home/jcy/d2:
源可以是多个文件或目录
将文件f1和目录d1以及d1下的所有文件复制到/home/jcy/d2目录下
在cp中:-r和-R是一样的
cp -R:递归复制,复制目录及目录下的所有文件
cp -r:递归复制,复制目录及目录下的所有文件
移动、重命名文件和目录
mv:剪切源文件到目的路径
重命名文件、目录 — 源地址和目的地址相同就是重命名
即在当前路径下,是重命名
比如:
mv f1 f2:将文件f1重命名为f2
mv d1 d2:将目录d1重命名为d2
mv d1/f1 d1/f2:将d1目录下的f1文件重命名为f2
移动文件、目录 — 源地址与目的地址不同,比如:
mv f1 d1/: 移动f1文件到d1目录下
mv f1 d1/f2:将当前目录下的f1文件移动到d1目录下且重命名为f2
mv f1 f2 d1 d2:移动f1、f2文件及d1目录到d2目录下
mv d1 d2: 如果d2不存在,重命名目录,如果d2存在,移动目录
文件链接
为什么需要链接
有一些巨大的文件,目录,会重复占用空间,例如cp命令,就是两份,实际我们也可以用一份来达到我们的目的
有些文件不能移动,只能放在指定的位置
例如web服务器,默认的只允许在var下面:/var/www/html/,通过ip地址访问的时候才会显示出里面的内容,web服务默认的配置。这个位置是不能动的,其他位置要想用的话,要么从其他文件中引入进来,要么引入出去
和复制的区别:文件在磁盘中只有一份数据,cp是两份数据,节省磁盘空间,软链接和硬链接可以理解为一个快捷方式
链接的种类:硬链接、软链接
硬链接:ln dog dog-hard
ln:link dog:源文件 dog-hard:快捷方式
软链接:ln -s pig pig-soft
ln:link -s:soft的简称,软链接 pig:源文件 pig-soft:快捷方式
硬链接:
是给文件创建一个副本,原文件名和链接文件名都指向相同的物理地址。文件在磁盘中只有一个拷贝,节省磁盘空间。
软链接(符号链接):
软链接的数据是多链接的文件的路径名。类似windows下的快捷方式。
对源文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。

df -h:查看磁盘空间
df -lh:查看磁盘空间
每个磁盘都有一个自己的文件系统,它们是把整个磁盘进行分区,分成一个个的block块,每一个block去存放真正的实际的内容
磁盘空间和文件系统
一块硬盘做一个文件系统,包含inode和block,
inode记的是文件名a.txt和block的对应关系,例如a.txt存在于block01里面
block实际存放内容的物理存在的一块
例子:
一块硬盘当成一个酒店
inode当成前台登记
block当成一个房间
有两个硬盘就有两个inode,就像有两个宾馆,就有两个前台一样

软链接是文件的快捷方式,指向的是文件,只有源文件和硬盘有关联,如果删除或重命名指向的文件,软链接就不可用了
硬链接指向的是inode号
软链接类似于通过中介和房东联系,中介消失就找不到房东了
硬链接类似于直接和房东联系

软链接与硬链接最大的区别

对源文件删除(重命名),会导致软链接不可用,而硬链接不受影响。
硬链接不能跨越物理设备,软链接可以。
硬链接不能关联目录,只能是文件,软链接可以。
硬链接与软链接 — 举例
创建两个文件:
touch dog > dog pig
分别创建软、硬链接:
ln dog dog-hard;ln -s pig pig-soft
看看
ls -l
硬链接与软链接 — 举例
改变硬链接对应的之前的文件名
mv dog dog-new:将dog重命名为dog-new
cat dog-hard:查看dog的硬链接
可以看到硬链接指向的文件的真实内容,所以改变以前的文件名并不影响
改变软链接的文件名
mv pig pig-new:将pig重命名为pig-new
cat pig-soft:查看pig的软链接
cat:pig-soft:No such file or directory
可以看到软链接指向的文件名,所以改变以前的文件名,导致软链接也不可以访问了
删除操作也是一样的

源文件:a.txt
链接文件:b.txt
内容:block
硬链接不可以跨分区:
可以理解为两个不同的宾馆都有一个101房间,但是两个不同的101,拿这个宾馆的101房卡刷不开另一个宾馆的101房间门

ln链接和cp复制的区别:
cp是复制了一份出来,和源文件大小一样,ln是创建了一个快捷方式,只是快捷方式的大小,节省了空间

恢复硬盘恢复的是inode号
存储差一个字节也恢复不回来,这是文件的完整性

你可能感兴趣的:(Linux,Linux目录与文件操作进阶)