Linux从入门到精通——Linux下的文件寻址及文件管理
命令关键字:touch、stat、mkdir、rm、vim/vi、cp、mv、cat、less、tail、head、cd、wc、whatis、man、history
一.Linux的系统结构
Linux是一个倒树型的结构,最大的目录是“/”(根目录),而根目录下的二级目录多为系统在安装过程中建立的。
二.文件的管理命令
在Linux中一个重要的思想就是可以把所有东西都当成文件来处理,所以在Linux学习中对文件的处理是极为重要的,下面将讲述如何对文件进行管理
1.建立文件
touch file
注意:
touch不但可以建立文件也可以修改文件的时间戳,时间戳分为:
atime(access):文件内用被访问的时间标识
mtime(modify):文件内容被修改的时间标识
ctime(change):文件属性或文件内容被修改的时间标识
即相应的命令为: touch -a filename
touch -m filename
touch -c filename
可以看到在虚拟机桌面上新出现了一个名为“file”的文件,通过touch命令建立了一个新的文件。如果想要更直观地看到touch修改时间戳的效果可以用stat命令,以touch -m 为例做一个简单的实验。
可以看到第二次用了touch 命令后,file文件的Modify 和Change 都发生了改变,即mtime 和ctime 发生了改变。
2.建立目录
mkdir directory
mkdir -p dir1/dir2/dir3 ### -p表示建立递归目录时,当上层目录不存在时自动建立
3.删除文件、目录
rm file ### 会提示你是否删除文件,只有输入y、ye、yes才能删除,输入其他均无效 ###
rm -f file ### -f 表示强制删除不提示 ###
rm -fr directory ### -r 表示递归删除,即删除目录本身和里面的所有内容,删除目录必须递归 ###
### 在命令参数使用过程中, -a -b -c =-abc=-acb ,不需要注意顺序,且可以缩写在一起 ###
4.编辑文件
vim file ### 按[ i ]进入insert模式 ###
### 输入要输入的内容 ###
### 按[ ESC ]退出insert模式 ###
### ‘:wq’退出保存 ###
示例:
1 vim hello.c ###建立名为hello.c 的文件并编辑### 2 #include<stdio.h> ###编写C语言代码### 3 void main() 4 { 5 printf("hello,world!\n"); 6 } 7 8 :wq ###退出保存### 9 10 yum install gcc -y ###安装gcc编译器### 11 gcc hello.c -o hello ###编译代码### 12 ./hello ###执行文件### 13 hello!world ###实验结果为显示“hello!world”###
***********vim异常退出***********
当vim异常退出时会生成.file.swap文件,再次打开时会出现以下情况
Swap file ".hello.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
只读打开 继续编辑 恢复数据 删除 退出 退出
无论按[O] (E) (R) (Q) (A) 任何一个都不会删除.swp文件
那么再次打开hello文件是还会出现以上界面直到按(D),.swp文件被删除。vim恢复正常工作
5.文件的复制
cp 源文件 目的地文件
cp -r 源文目录 目的地目录
cp 源文件1 源文件2 目的地目录 ##目的地目录必须存在##
cp -r 源目录1 源目录2 目的地目录 ##目的地目录必须存在##
注意:目录之间的复制要加 -r ,否则复制不了。无论目录中是否有文件存在。
6.文件的移动
mv 源文件 目的地文件 ##如果目的地文件与源文件在同一磁盘,相当于重命名##
mv 源目录 目的地目录
注意:相同磁盘的文件移动只是一个重明名过程,不同磁盘的文件移动是复制删除过程
7.文件的查看
cat file ##查看文件的全部内容##
cat -b file ##-b显示行号##
less file ##分页浏览##
用法:
上|下 ##逐行移动##
pageup|pagedown ##逐页移动##
/关键字 ##高亮显示关键字,n向下匹配,N向上匹配##
v ##进入vim模式 在vim模式中按:wq 退回到less模式##
q ##退出##
二.文件的寻址
1.相对路径
和当前系统所在位置相同时,之前的相同的目录的名称(即,系统当前所在目录的名称)就可以被忽略。不能以 “/” 开头,如果相对路径以 “/” 开头的话,就代表根目录下的你要寻找的文件或者目录。此名称前只有空格,在命令执行时系统会自动在操作对象前加入“pwd”所显示的值。
2.绝对路径
绝对路径是文件在系统的真实准确的位置。此命令是以“/”开头的,绝对路径可以不用管系统现在所在的工作目录。通过绝对路径绝对可以找到要找的文件。
注意:
当操作对象之间用空格隔开时,表示两个对象之间没有任何关系
例如:A B 表示A和B AB 表示AB
3.相关命令
(1)自动补齐
<TAB>键 系统中的<TAB>键可以实现命令的自动补齐
可以用来补齐系统中存在的命令,文件名称,和部分命令的参数
当一次<TAB>补齐不了时代表以此关键字开头的内容不唯一,可以用<TAB>X2来列出所有以此关键字开头的内容,可以减少因为拼写而带 来的错误命令,如果<TAB>键补齐不了要不就是不存在,要不就是关键字开头不唯一。
(2)切换路径 cd 目录名称 ##进入到指定目录中##
cd - 目录名称 ##当前目录和当前目录值前所在目录之间的切换##
cd ~ ##进入当前用户家目录##
cd ~user ##进入user家目录##
cd .. ##进入当前目录的上级目录##
注: “ . ”指的是当前目录,当前位置
“ .. ”指的是当前目录的上一级目录
(3)显示文件信息 ls
ls -l file ##查看文件详细属性##
ls dir ##查看目录下包含的内容##
ls -d dir ##查看目录本身##
ls -a dir ##所有文件保函隐藏的, “ .” 开头的文件是隐藏的文件,“ -A ” 实现了除了.和..的文件的查看##
ls -S dir ##查看并且按照文件大小排序##
ls -i ## 查看inode信息
ls -r ## 逆序显示
ls -R ## 递归(recursive)显示,即显示当前目录及其子目录内的所有文件及目录信息,不过递归是很消耗资源的
————————————注:关于文件属性————————————
—:普通文件(file)
d :目录文件(在linux中目录也是文件,是一种特殊的文件,其本质为linux树状结构的路径映射)
b :块设备文件(block)
c :字符设备文件(character)
l : 符号链接文件(sysmbolic link)
p :命令管道文件(pipe)
s :套接字文件(socket)
(4)文件的查看
cat ###输出文件全部内容###
less ###分页浏览###
head file ###查看文件前10行###
head -n 3 file ###查看文件前3行###
tail file ###查看文件后10行###
tail -n 3 file ###查看文件后3行###
tail -f file ##监控文件后10行内容的变化###
(5)文件大小统计 wc
wc -l ##行数
wc -w ##单词数
wc -m ##字符数
wc -c ##字节数
********************在系统中获得帮助**********************
1.查看命令的用途 whatis 命令 ##查看命令的用途##
2.查看命令的用法
命令 --help ##查看命令的基本用法,适用于多数命令##
[] ##标示选项可以加也可以不加##
... ##标示选项加入的个数任意##
<> ##标示选项是必须要加入的##
Userage: ##标示命令用法##
Opetions: ##对参数的作用做说明##
3.man查看命令或文件的说说明手册
man 命令
man 5 命令
man的级别
1 #命令
2 #系统调用接口
3 #函数库调用接口
4 #特殊设备文件
5 #系统配置文件
6 #游戏规则说明
7 #包说明
8 #系统管理命令
9 #内核调用规则
man的基本用法
上|下 ##逐行查看
pgup|pgdn ##分页查看
/关键字 ##高亮显示关键字,n向下匹配,N上向匹配 :q ##退出
man -k 字符串 ##查看当前字符串在系统中拥有的man的级别 /usr/share/doc ##系统中所有安装过的软件的帮助文档
**************系统中的通用配置符号****************
* ##匹配0到任意字符
? ##匹配单个字符
[[:alpha:]] ##单个字母
[[:lower:]] ##单个小写字母
[[:upper:]] ##单个大写字母
[[:digit:]] ##单个数字
[[:punct:]] ##单个符号
[[:space:]] ##单个空格
[[:alnum:]] ##单个数字或字母
[1-9] #1位,这位是1-9的任意数字
[!3-5] #1位,不是3-5的数字
[^3-5] #1位,不是3-5的数字
[a-z] #1位,a-z的任意字母
{1..3} #3个,1 2 3
{1,4,7} #3个1,4,7这三个数
**************系统中历史的调用**************
history ##查看历史
history -c ##清空当前环境中的历史
!数字 ##调用此行历史比如"!5"时执行历史中地5条命令
!test ##执行以test关键字开头的最近一条历史
ctrl +r +关键字 ##调用历史中最近一条含有此关键字的历史