1、Linux目录结构
windows
- windows是多根系统
- 一个磁盘分区就是一个根Windows可以分多个分区,也就是可以有多个根
- 存储文件的时候,文件就是存储到某一个根之下
linux
- linux是一个单根系统
- 只有一个可与存储文件的路径
- 根的表是 /
linux的根目录下的一些重要目录
- home
- etc
- bin
- sbin
- tmp
- media
- mnt
- boot
- usr
- var
- dev
- lib
- root
- 后面还有就不一一列举了
根下的主要的目录
/etc目录
- etc下存储的是Linux中的各种配置文件
- 例如网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-ensXX
/bin目录
- 这个目录下存放的是Linux的可执行程序
/sbin目录
- 这个目录下存放的也是Linux的可执行程序
/var目录
- 存储的是哪些经常发生改变的文件
- 例如日志文件:/var/log/messages
/tmp目录
- 存储的是临时文件
- 这个目录下的文件,如果30天内没有被访问过,文件会被自动删除
/home目录
- 普通用户存储文件的目录
- 也就是普通用户的主目录 【普通用户只能在自己的主机目录下创建、编辑文件】
/root目录
- 这个目录是管理员用户,也就是root用户的主目录
linux路径的表示方式
- /目录名/目录名/文件名
2、linux命令基础
格式
命令 [选项] [ 参数]
选项
- 短选项:-字母,短选项可以进行合并
- 长选项:--单词
3、简单命令
1)pwd命令
- 作用:显示当前所在的工作目录【就是显示你现在所在的位置】
- 格式:直接打pwd+回车键 即可
- 例子:
2)cd目录
作用:切换目录
格式:cd+目标目录+回车键即可
例子:
#1 切换到根目录
cd / (中间一定要加空格)
#2切换到/etc/sysconfig目录
cd /etc/sysconfig
#3切换到上一级目录
cd ..
#4切换到上次所在的目录
cd —
3)ls命令
作用:查看目录中有那些文件
格式:
-
ls[选项] [路径]
例子:
- 在执行命令的时候,如果不指定路径,则查看的是当前目录下的文件;如果指定路径,则查看指定 路径
选项:
- -l:显示文件的属性
- -a:显示所有的文件,包括隐藏文件【linux默认是不会显示隐藏文件的】
例子:
#1 查看当前位置下有哪些文件:
直接在当前位置输入 ls+回车键即可
#2查看etc下有哪些文件:
方法一;先切换到etc中,然后再执行ls
[root@localhost /]# cd /etc
[root@localhost etc]# ls方法二:在执行ls的时候在后面加上路径
[root@localhost /]# ls /etc
#3查了根目录下所有文件的属性,包括隐藏文件
[root@localhost etc]# ls (空格)-la(空格 ) / 【中间必须加空格】
补充知识1:linux中,文件的类型主要有两种
- 一般文件:通常是可以进行内容写入和编辑的文件,例如windows中的doc、txt
- 目录文件:其实就是文件夹
补充知识2:
- Linux中,文件的后缀对与文件的属性没有任何影响
- 文件的属性仅仅和创建这个文件的命令相关
4)touch命令
作用:创建空白一般文件
格式:
格式1:touch 文件名 # 在当前位置下创建文件
格式2:touch /路径/文件名 # 在指定的位置下创建文件
例子:
#1 创建文件qq.txt
[root@localhost home]# touch qq.txt
#2 在tmp下创建qq.txt
方法1:先切换到tmp下,然后创建
[root@localhost /]# cd /tmp
[root@localhost tmp]# touch qq.txt
方法2:在touch后边加上路径/文件名
[root@localhost tmp]# touch /tmp/qq.txt
#3 解释下面的命令
touch baidu.txt # 在当前位置下创建baidu.txt
touch /baidu.txt # 在根下创建baidu.txt
touch /home/baidu.txt # 在home下创建baidu.txt
5)mkdir命令
作用:创建目录【创建文件夹】
格式:
格式1:mkdir [选项] 目录名
格式2:mkdir [选项] /路径/目录名
选项:
- -p:在父目录不存在的情况下,先创建父目录,然后依次创建子目录
例子:
#1 创建目录book1
[root@localhost home]# mkdir book1
#2在home下创建目录book2
- 方法一:先切换到home 然后再执行mkdir 创建目录
[root@localhost /]# cd /home
[root@localhost home]# mkdir book2
- 方法二:在mkdir后边加上路径/文件名
[root@localhost /]# mkdir /home/book2
#3创建一组文件夹d1/d2/d3/d4
- 方法1:逐个创建
[root@localhost home]# mkdir d1
[root@localhost home]# mkdir d1/d2
[root@localhost home]# mkdir d1/d2/d3
[root@localhost home]# mkdir d1/d2/d3/d4
- 方法2:
[root@localhost home]# mkdir -p d1/d2/d3/d4
6)clear清屏命令
作用:清屏
快捷键:ctrl+l
7)cp命令
作用:复制文件和目录
格式:
格式1:cp [选项] 源文件 目标位置 复制过去后,名字不变
格式2:cp [选项] 源文件 目标位置/新名字 复制过去后,名字改为新的即可
选项:
- -r:用于复制目录【必须用-r,才能复制目录】
- -a:在复制过程中,保持文件的属性不变
例子:
#1 将/etc/passwd 复制到home下
[root@localhost tmp]# cp /etc/passwd /home/
#2 将/etc/passwd 复制到根下
[root@localhost tmp]# cp /etc/passwd /
#3 将/etc/passwd 复制到home下,复制后的名字变成qq
[root@localhost tmp]# cp /etc/passwd /home/qq
#4 将tmp下的目录d1复制到home下【d1是前面的例子中创建的】
[root@localhost tmp]# cp -a /tmp/d1 /home/
8)mv命令
作用:移动文件和目录
格式:
mv 源文件 目标位置
mv 原文件 目标位置/新名字
例子:
#1 在home下新建一个测试文件,t.txt
[root@localhost tmp]# touch /home/t.txt
#2 将上例中的t.txt移动到根下
[root@localhost tmp]# mv /home/t.txt /
#3 将上例中的t.txt移动到根下,并改名为tt.txt
[root@localhost tmp]# mv /home/t.txt /tt.txt
#4 将根下的tt.txt 改名为ttt.txt【原地改名】
[root@localhost tmp]# mv /tt.txt /ttt.txt
9)rm命令
作用:删除文件
格式:
格式1:rm [选项] 文件
格式2:rm [选项] 路径/文件
选项:
-r:用于删除目录
-f:强制执行删除操作(不需要再输入y进行确实删除了)
例子:
#1 删除当前目录下的a.txt
rm -rf a.txt
#2 删除根目录下的a.txt
rm -fr /a.txt
#3 删除home下的a.txt
rm -r -f /home/a.txt
注意:
如果不指定路径,则默认路径是当前位置
如果指定了路径,就去指定的路径下找文件
touch a 在当前位置下,创建文件a
touch /home/a 在home目录下,创建文件a
mkdir b 在当前位置下,创建目录b
mkdir /home/b 在home目录下,创建目录b
cp c /home/ 将当前目录下的c复制到home目录下
cp /tmp/c /home 将tmp目录下的c复制到home下
mv d /home 将当前目录下的d移动home目录下
md /tmp/d /home 将tmp目录下的d移动到home目录下
10)通配符
1:就是具有特殊意义的符
2:主要有俩个
- * 代表的是任意多个任意的字符【0个、1个、多个】
- ? 代表的是任意一个字符【1个】
先准备测试文件
创建10个后缀是txt的文件
[root@localhost home]# touch {1..10}.txt
创建10个后缀是doc的文件
[root@localhost home]# touch {1..10}.doc
创建10个文件,文件名分别是a1 a2 a3... a10
[root@localhost home]# touch a{1..10}
例子:*号的用法
#1 删除后缀是txt的文件
[root@localhost home]# rm -rf *txt
- 思考:如果文件名是txt,是否能被删除【答案是可以的】
#2 删除有a为开头的文件
[root@localhost home]# rm -rf a*
#3 删除文件名的第一个字符是a,结尾是txt的文件
[root@localhost home]# rm -fr a*txt
#4 删除以a为结尾的文件
[root@localhost home]# rm -rf *a
#5 删除文件名中包含字母a的文件
[root@localhost home]# rm -fr *a*
#6 删除当前位置的所有的文件
[root@localhost home]# rm -fr *
#7 删除tmp目录下的book目录中的所有文件
方法1:笨办法【先切换到book目录下,然后执行删除操作】
- [root@localhost ~]# cd /tmp/book/
- [root@localhost book]# rm -rf *
方法2:正常人用的方法
- [root@localhost ~]# rm -fr /tmp/book/*
例子:?的用法
#1 删除文件名的第二个字符是a的文件
[root@localhost ~]# rm -fr ?a*
- ?表示a前面一定是有一个字符的,
- 此时不能用*,因为*表示的数量是不确定的
#2删除文件名的倒数第二个字符是a的文件
[root@localhost ~]# rm -fr *a?
#3删除文件名只有三个字符的文件
[root@localhost ~]# rm -fr ???
#4删除文件名中包含至少三个字符的
- [root@localhost ~]# rm -fr ???*
[root@localhost ~]# rm -fr *???*
- [root@localhost ~]# rm -fr *???
- 都可以
11)cat命令
作用:读取文件的内容【比较合适读取行数较少的文件】
格式:
cat 路径/文件名
例子:
# 准备测试文件
- [root@localhost ~]# cp /etc/passwd /home/
# 查看home下的passwd文件中的内容
- [root@localhost ~]# cat /home/passwd
12)head命令
作用:查看文件的前若干行,默认是看前10行
格式:
head [选项] 路径/文件
选项:
- -n (数字):指定看前几行
例子:
# 准备测试文件
[root@localhost home]# for i in {1..500}; do echo $i >> /home/qq.txt ;done
操作示例
# 看前10行
[root@localhost home]# head qq.txt
# 看前20行
[root@localhost home]# head -n20 qq.txt
# 看前5行
[root@localhost home]# head -n5 qq.txt
13)tail命令
作用:查看文件的最后若干行,默认是看最后10行
格式:
tail [选项] 路径/文件
选项
- -n (数字):指定看后几行
例子:
# 准备测试文件
[root@localhost home]# for i in {1..500}; do echo $i >> /home/qq.txt ;done
操作示例
# 看最后10行
[root@localhost home]# tail qq.txt
# 看最后15行
[root@localhost home]# tail -n15 qq.txt
# 看最后6行
[root@localhost home]# tail -n6 qq.txt
14)more命令
作用:实现分屏查看大文件
格式:
more 路径/文件名
操作:
- 回车:显示下一行
- 空格:显示下一屏
- b:显示上一屏
- /+(目标字符):在文件中搜索内容
- n:继续向后进行搜索
- q:退出
例子
# 准备测试文件
- [root@localhost home]# cp /etc/init.d/functions /home/
查看home中的functions
- [root@localhost home]# more /home/functions
15)less命令
作用:实现分屏查看大文件
格式:
less 路径/文件
操作:
- 回车:显示下一行
- 空格:显示下一屏
- b:显示上一屏
- /+(目标字符):在文件中搜索内容
- n:继续向后进行搜索
- q:退出
16)wc命令
作用:用于统计文件中有多少行、多少个单词、多少个字符
格式:
wc [选项] 路径/文件名
选项:
- -l:统计行数 【line】
- -w:统计单词数【word】
- -c:统计字符数【character】
案例:
# 准备测试文件
[root@localhost home]# echo "hello boys" >>h.txt
[root@localhost home]# echo "my name is zxhk" >>h.txt
# 用wc统计文件的内容
[root@localhost home]# wc h.txt 2 6 27 h.txt
- 2 表示的是几行
- 6表示的是几个单词
- 27表示的是几个字符
#仅仅显示文件的的行数
[root@localhost home]# wc -l h.txt 2 h.txt
[root@localhost home]# wc -w h.txt 6 h.txt
[root@localhost home]# wc -c h.txt 27 h.txt