文章目录
前言
从本章开始,我们将进入
linux
的学习,希望大家喜欢
一.Linux文件目录工作机制
1.Linux目录结构
linux
目录结构是树形结构,其根目录是
/
。一张思维导图说明各个目录的作用:
2.Linux文件属性
Linux
系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,
Linux
系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在
Linux
中我们可以使用
ll
或者
ls –l
命令来显示一个文件的属性以及文件所属的用户和组,如:
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
实例中,
bin
文件的第一个属性用
d
表示。
d
在
Linux
中代表该文件是一个
目录文件
。 在
Linux
中
第一个字符代表这个文件是目录、文件或链接文件等等
。
-
当为
d
则是
目录
-
当为
-
则是
文件
-
若是
l
则表示为
链接文档(
link file
)
-
若是
b
则表示为装置文件里面的
可供储存的接口设备
(可随机存取装置) -
若是
c
则表示为装置文件里面的
串行端口设备,例如键盘、鼠标
(一次性读取装置)。
接下来的字符中,以三个为一组,且均为
『rwx』
的三个参数的组合。其中,
r
代表可读(
read
)、
w
代表可写(
write
)、
x
代表可执行(
execute
)。 要注意的是,
这三个权限的位置不会改变,如果没有权限,就会出现减号
-
而已。
每个文件的属性由左边第一部分的 10 个字符来确定(如下图):
从左至右用 0-9 这些数字来表示:
-
第 0 位确定
文件类型
-
第 1-3 位确定属主(
该文件的拥有者
)拥有该文件的权限 -
第 4-6 位确定属组(
拥有者的同组用户
)拥有该文件的权限 - 第 7-9 位确定其他用户拥有该文件的权限
-
第 1、4、7 位表示读权限,如果用
"r"
字符表示,则有读权限,如果用
"-
“字符表示,则没有读权限 -
第 2、5、8 位表示写权限,如果用
"w"
字符表示,则有写权限,如果用
"-"
字符表示没有写权限 -
第 3、6、9 位表示可执行权限,如果用
"x"
字符表示,则有执行权限,如果用
"-"
字符表示,则没有执行权限。
二.Linux文件目录管理常用指令
1.cd指令
语法:
cd
目录名
功能:改变工作目录。
将当前工作目录改变到指定的目录下
。
示例:
cd .. : 返回上级目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
2.ls指令
语法:
ls
[选项][目录或文件]
功能:对于目录,
该命令列出该目录下的所有子目录与文件
。对于文件,将
列出文件名以及其他信息
。
示例:
ls # 列出当前目录可见文件
ls -l # 列出当前目录可见文件详细信息
ls -la # 列出所有文件(包括隐藏)的详细信息
ls -lh # 列出详细信息并以可读大小显示文件大小
ls -lt # 按时间列出文件和文件夹详细信息
ls -ltr # 按修改时间列出文件和文件夹详细信息
ls --color=auto # 列出文件并标记颜色分类
ls
显示当前目录下的的所有子目录与文件
ls -l
列出文件的详细信息
ls -a
列出目录下的所有文件,包括以 . 开头的隐含文件
ls -R
列出所有子目录下的文件(递归)
3.pwd指令
语法:
pwd
功能:显示用户当前所在的目录
示例:
4.mkdir指令
语法:
mkdir
[选项]
dirname
…
功能:在当前目录下创建一个名为
“dirname”
的目录
示例:
mkdir -p parents
parents
可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,
即一次可以建立多个目录
。
在同一文件夹下创建多个目录:
mkdir dir1 dir2 dir3 //一次建立多个目录
递归建立多个目录:
mkdir –p dir4/dir4.1/dir4.1.1 : 递归建立多个目录
5.rmdir指令
语法:
rmdir
[-p][dirName]
功能:
rmdir
是一个与
mkdir
相对应的命令。
mkdir
是建立目录,而
rmdir
是删目录。
示例:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
6.touch指令
语法:
touch
[选项]… 文件…
功能:
touch
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
示例:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
7.rm指令
语法:
rm
[-f-i-r-v][dirName/dir]
功能:
rm
命令可以同时删除文件或目录
示例:
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
rm test.c
删除单个普通文件
rm -rf tmp
强制递归删除该目录以及该目录下所有的文件
8.man指令
语法:
man
[选项] [索引]
功能:查看
Linux
提供的帮助手册
使用
man
指令需要提前安装,输入指令:
yum install -y man-pages
示例:
-k 根据关键字搜索联机帮助
n 只在第n章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,
man
手册分为 8 章:
-
1
是普通的命令 -
2
是系统调用,如
open
,
write
之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件) -
3
是库函数,如
printf
,
fread
-
4
是特殊文件,也就是
/dev
下的各种设备文件 -
5
是指文件的格式,比如
passwd
,就会说明这个文件中各个字段的含义 -
6
是给游戏留的,由各个游戏自己定义 -
7
是附件还有一些变量,比如向
environ
这种全局变量在这里就有说明 -
8
是系统管理用的命令,这些命令只能由
root
使用,如
ifconfig
man 1 printf
在手册第一章中查询
printf
指令
9.cp指令
语法:
cp
[选项] 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:要将源文件或目录
copy
到目标文件或目录,
前提是目标文件或目录存在
示例:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
在一个目录下有两个文件:
dir1、dir2
:
cp test.txt ../dir1
拷贝
dir2
下的
test.txt
文件到
dir1
目录(
..
为上级目录)
cp -r dir2.1 ../dir1
拷贝
dir2
下的
dir2.1
目录到
dir1
目录
10.mv指令
语法:
mv
[选项] 源文件或目录 目标文件或目录;
功能:相当于
Windows
下的剪切或重命名;
示例:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
在一个目录下有两个文件:
dir1、dir2
:
mv test.txt ../dir1
将
dir2
中的
test.tx
t 文件剪切到
dir1
目录下
mv dir2.1 ../dir1
将
dir2
中的
dir2.1
目录剪切到dir1目录下
mv test.txt name.txt
将
test.txt
重命名为
name.txt
11.cat指令
语法:
cat
[选项] [文件名]
功能:查看目标文件的内容
示例:
-b 对非空输出行编号;
-n 对输出的所有行编号;
-s 不输出多行空行;
12.nano指令
语法:
nano
[文件名] (在使用之前需要先安装)
功能:
Linux
中的记事本(相当于
Windows
中的记事本);
安装方法:输入指令:
yum install -y nano
示例:
nano test.c
编辑文件内容
代码完成之后,
ctrl+x
退出,
y
选项确认保存,回车退出。
gcc test.c
用
gcc
编译
C
文件,使用前,需要晚安装:
yum install -y gcc
./a.out
执行刚才编译好的可执行文件
如图所示,我们在
Linux
中跑起来了第一个
c
程序
13.tree指令
语法:
tree
目标目录
功能:树状的展示目录结构,方便查看;
安装方法:输入指令:
yum install -y tree
14.more指令
语法:
more
[选项] [文件]
功能:功能类似
cat
示例:
-n 对输出的所有行编号
q 退出more
15.less指令
语法:
less
[选项] [文件]
功能:
less
与
more
类似,但使用
less
可以随意浏览文件,而
more
仅能向前移动,却不能向后移动,而且
less
在查看之前不会加载整个文件
说明:
-
less
工具也是对文件或其它输出进行分页显示的工具,应该说是
linux
正统查看文件内容的工具,功能极其强大 -
less
的用法比起
more
更加的有弹性。在
more
的时候,我们并没有办法向前面翻, 只能往后面看 -
但若使用了
less
时,就可以使用
[pageup][pagedown]
等按键的功能来往前往后翻看文件,更容易来查看一个文件的内容 -
除此之外,在
less
里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
示例:
-i 忽略搜索时的大小写
-N 显示每行的行号
/ 字符串:向下搜索“字符串”的功能
? 字符串:向上搜索“字符串”的功能
n 重复前一个搜索(与 / 或 ? 有关)
N 反向重复前一个搜索(与 / 或 ? 有关)
q quit
16.head与tail指令
语法:
head
[参数] [文件];
tail
[参数] [文件];
功能:
head
用来输出文件的前
n
行内容;
tail
用来输出文件的最后
n
行的内容;若是未加参数则默认
n
为
10
;
示例:
-n <行数>
显示
test.txt
文件中前20行的内容
head -n 20 test.txt
显示
test.txt
文件中后20行的内容
tail -n 20 test.txt
17.date指令
语法:
head
+[参数]
功能:在
Linux
中显示时间或者设置时间;
示例:
//显示时间
%H: 小时(00..23);
%M: 分钟(00..59);
%S: 秒(00..61);
%X: 相当于 %H:%M:%S;
%d: 日 (01..31);
%m: 月份 (01..12);
%Y: 完整年份 (0000..9999);
%F: 相当于 %Y-%m-%d;
//设置时间
date -s //设置当前时间,只有root权限才能设置,其他只能查看;
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00;
date -s 01:01:01 //设置具体时间,不会对日期做更改;
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间;
date -s “01:01:01 20080523″ //这样可以设置全部时间;
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间;
date -s “20080523 01:01:01″ //这样可以设置全部时间;
date
显示时间
date +%Y-%m-%d
格式化显示时间
18.cal指令
语法:
cal
[参数][月份][年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
示例:
-3 显示系统前一个月,当前月,下一个月的月历;
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数);
-y 显示当前年份的日历;
cal
显示当月日历
19.find/whereis/which指令
语法:
find / whereis / which
[文件]
功能:用于在磁盘中查找文件,告知所在路径;
示例:
-name 按照文件名查找文件(适用于find)
20.grep指令
语法:
grep
[选项] [字符串] [目标文件]
功能:在文件中搜索字符串,将找到的行打印出来
示例:
-i :忽略大小写的不同,所以大小写视为相同;
-n :顺便输出行号;
-v :反向选择,即显示出没有 '搜寻字符串' 内容的那一行;
21.zip/unzip指令
语法:
zip
[压缩文件.zip] [目录或文件];
功能:将目录或文件压缩成
zip
格式
使用前先安装,输入指令:
yum install -y zip unzip
示例:
-r 递归处理,将指定目录下的所有文件和子目录一并处理;
将
d2
目录打包并压缩为
d2.zip
将
d2.zip
解压到
tmp
目录
22.tar指令
语法:
tar
[参数] [文件或目录]
功能:将目录或文件压缩成
tar
格式
示例:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t : 查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j : 是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f : 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C :解压到指定目录;
以上就是初学者常用到的基本指令,在以后的篇章中我们会介绍更多的指令供大家学习!
本文到此结束,码文不易,还请多多支持!