linux中一切皆文件
最近开始学习linux,虽然以前也有用过,但是并不能在linux下只靠键盘存活。该填的坑还是要填的。
我学习的视频链接:这个链接是慕课网上一位培训老师的课程链接,都是免费的,讲得通俗易懂,比较幽默风趣。
一、分区
-
分区:把大硬盘分为小的逻辑分区
-
格式化的目的是为了写入文件系统
而不是清空数据
但是为了写入文件系统需要重新分块(block)
因此需要清空数据 -
linux分区需要起名
-
"/"表示根目录
/dev表示设备
每个设备都有设备文件名 -
必须有的分区
/(根分区)
swap分区(交换分区,虚拟内存,4g以内内存2倍, 8g以上和内存一样) -
推荐分区
/boot 启动分区 启动分区在最前面 -
分区在硬件上有独立存储空间,但在文件系统上看都在根目录之下
-
挂载:给每个分区分配挂载点
-
目录:挂载点
-
~home目录
[用户名@主机名:当前目录]提示符
# 超级用户
$ 普通用户
二、常用命令
1、查询目录中内容
ls [选项][文件或目录]
- 选项:
-a 显示所有文件,包括隐藏文件(以.开头 系统文件)
-l 显示详细信息 别名:ll
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode 文件id号
arururururu@ubuntu:~$ ls -l
total 71584
drwxr-xr-x 7 arururururu arururururu 4096 Sep 9 18:33 Desktop
0、total的意思为 所列出内容的磁盘占用空间总和值 单位为kbytes
1、权限 默认十位 -rw-r–r--
-
r读4 w写2 x执行1
-
第一位表示文件类型 -文件(l软链接 d目录等 共7种)
-
后面每三位为一组 所有者 所属组 其他人
2、引用计数
3、所有者 4、所属组 表示
5、文件大小(字节) 目录的文件大小只是目录本身的大小
- -h 就使用M、K等表示,所有统计大小的都支持-h选项
arururururu@ubuntu:~$ ls -lh
total 70M
drwxr-xr-x 7 arururururu arururururu 4.0K Sep 9 18:33 Desktop
6、最后一次修改时间
7、文件名/目录名
2、创建目录
mkdir [待创建目录]
-p 递归创建 没有的父目录都会被创建
3、切换目录
cd [目录]
cd . 切换到当前目录
cd .. 上一级目录
cd 根目录
cd -(减号) 上一次目录
4、打印当前工作目录
pwd(print working directory)
5、删除空目录
rmdir(remove empty directory)
6、删除文件
rm [目录][选项]
-r 删除目录
-f force 强制
rm -rf /tmp/* *表示删除目录下的内容 没有*表示删除这个目录
7、复制命令
cp [选项][原文件或目录][目标目录]
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接属性
-a 相当于-pdr 所有属性都会一样(包括时间)
8、剪切或改名
mv [原文件或目录][目标目录]
- mv文件和目录都 **不需要**加-r
- 若原文件和目标文件在同一目录下则为改名
- 若不在同一目录下则为剪切
9、常用目录的作用
/ 根目录
- 根目录下的 bin sbin,
和/usr目录下的 bin sbin都是用来保存系统命令的
sbin目录下的命令只有超级用户才能执行
/boot 启动目录
/etc 配置目录
/lib linux下保存函数库的目录
/mnt 系统挂载目录
/usr 系统软件资源目录
/tmp 存放临时文件
可以在 根目录(必要文件)、home目录和/tmp目录下随便放内容
10、链接
ln -s [原文件][目标文件]
-s 创建软链接
-
硬链接特征
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
- 修改哪个文件都会改变原文件和目标文件
- 删除原文件 目标文件也不会被删除 只是引用计数-1
-
软链接
- 类似windows快捷方式
- 拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,
并没有实际的文件数据 - 软链接文件权限都为lrwxrwxrwx 但是实际权限要看原文件的权限
- 存储的是它链接的原文件的目录
- 修改哪个文件都会改变原文件和目标文件
- 删除原文件 软链接不能使用
- 软链接原文件一定要写绝对路径 否则如果不在同一目录下可能找不到原文件
11、文件搜索命令
locate [文件名]
- 在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate - locate命令所搜索的后台数据库 一天更新一次
需要用updatedb
更新数据库 - 只能按文件名搜索
- 搜索配置在 /etc/updatedb.conf内配置
- PRUNE_BIND_MOUNTS = “yes” yes表示下面的配置都生效
#开启搜索限制 - PRUNEFS =
#搜索时,不搜索的文件系统 - PRUNENAMES =
#搜索时,不搜索的文件类型 - PRUNEPATHS =
#搜索时,不搜索的路径
- PRUNE_BIND_MOUNTS = “yes” yes表示下面的配置都生效
12、命令搜索命令
whereis [命令名]
搜索系统命令所在路径及帮助文档所在位置
-b 只查找可执行文件(二进制文件)
-m 只查找帮助文件(manual路径下的说明文件)
-s 只查找原文件
例:
arururururu@ubuntu:~/Desktop/笔试题$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
其他类似命令
whoami
当前用户
whatis [命令名]
命令的作用
which [命令名]
搜索命令所在路径及别名
【注:】cd命令是shell自带的命令,无法找到可执行文件路径
13、环境变量
PATH:系统搜索命令的路径,以冒号:隔开,执行命令时会在这些目录下搜索命令所在路径
arururururu@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
14、文件搜索命令
find [搜索范围][搜索条件]
find是在系统当中搜索符合条件的文件名
- -name 按名字搜索
- -iname 不区分大小写
- -user 按照所有者搜索
- -nouser 查找没有所有者的文件(垃圾文件,除内核产生的和外来文件,比如/sys和/proc以及U盘等)
- -atime 文件访问时间(access)
- -ctime 修改文件属性时间(change)
- -mtime 修改文件内容时间(modify)
- -size 根据文件大小搜索(k小写 M大写 不写单位默认为扇区数据块512kB)
- -inum 根据i节点查找文件
- -a and 逻辑与,两个条件都满足
- -o or 逻辑或,两个条件满足一个即可
- 如果需要匹配,使用通配符匹配,通配符是完全匹配
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符 - 避免大范围搜索,会非常耗费系统资源
例:
1、当前目录下文件名为abc的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind$ find . -name abc
./abc
2、当前目录下文件名以ab开头,以c或d结尾的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind$ find . -name "ab[cd]"
./abd
./abc
3、当前目录下以c或d结尾的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind$ find . -name "*[cd]"
./abcd
./abd
./abc
4、当前目录下所有文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind$ find . -name "*"
.
./abcd
./abd
./abc
./efg
5、当前目录下以e开头,g结尾的三个字符构成的文件名
arururururu@ubuntu:~/Desktop/linuxCommand/testFind$ find . -name "e?g"
./efg
arururururu@ubuntu:~/Desktop/linuxCommand/testFind/testLink$ ls -l
total 12
-rw-rw-r-- 2 arururururu arururururu 25 Mar 9 00:06 test1
-rw-rw-r-- 1 arururururu arururururu 17 Mar 4 11:42 test1~
lrwxrwxrwx 1 arururururu arururururu 5 Mar 4 11:41 test1-so -> test1
-rw-rw-r-- 2 arururururu arururururu 25 Mar 9 00:06 test-hard
-rw-rw-r-- 1 arururururu arururururu 0 Mar 12 21:00 today
1、3天内修改的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind/testLink$ find . -mtime -3
.
./today
2、前3天当天修改的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind/testLink$ find . -mtime 3
./test-hard
./test1
3、3天前修改的文件
arururururu@ubuntu:~/Desktop/linuxCommand/testFind/testLink$ find . -mtime +3
./test1-so
./test1~
1、文件大小小于25kB的文件
find . -size -25k
2、文件大小等于25kB的文件
find . -size 25k
3、文件大小大于25kB的文件
find . -size +25k
1、查找inum为223344的文件
find . -inum 223344
1、查找当前目录下,大于20kB且小于50kB的文件
find . -size +20k -a -size -50k
2、查找当前目录下,大于20kB或3天内修改的文件
find . -size +20k -o -mtime -3
【另】对执行结果再执行第二条命令
-exec [命令][选项] {} \
1、查找当前目录下,大于20kB或3天内修改的文件,并显示这些文件的详细信息
find . -size +20k -o -mtime -3 -exec ls -l {} \;
2、查找当前目录下,没有所有者的文件,并删除这些文件
find . -nouser -exec rm -rf {} \;
15、字符串搜索命令
grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串,包含匹配(即不需要完全匹配),使用正则表达式进行匹配
-i 忽略大小写
-v 排除指定字符串
例:
arururururu@ubuntu:~/Desktop/linuxCommand$ cat test1
aaa
bbb
ccc
ddd
eee
abc
de
fgh
1、查找test1文件中包含“a”的行
arururururu@ubuntu:~/Desktop/linuxCommand$ grep "a" test1
aaa
abc
2、查找test1文件中不包含“a”的行
arururururu@ubuntu:~/Desktop/linuxCommand$ grep -v "a" test1
bbb
ccc
ddd
eee
de
fgh
3、查找test1文件中包含“A”的行,不区分大小写
arururururu@ubuntu:~/Desktop/linuxCommand$ grep -i "A" test1
aaa
abc
find与grep区别:
1、find在系统当中搜索符合条件的文件名,grep在文件当中搜索符合条件的字符串
2、find使用通配符匹配,是完全匹配;而grep使用正则表达式进行匹配,是包含匹配
【后面更新的命令请移步linux学习笔记(二)吧~】