CentOS 目录结构
目录简述
/ #根目录
├── bin -> usr/bin #系统常用命令,如ls,mv,cat等
├── boot #系统启动文件
├── dev #设备文件
├── etc #系统配置文件
├── home #普通用户根目录
├── lib -> usr/lib #系统共享库文件,服务程序等
├── lib64 -> usr/lib64 #64位系统库文件
├── media #光盘挂载,U盘等
├── mnt #临时挂载目录
├── opt #用户程序安装目录,比如tomcat
├── proc #此目录数据都在内存中,不占磁盘空间,是系统内存映射
├── root #root家目录
├── run #程序进程pid存放目录
├── sbin -> usr/sbin #只有root才有权执行的命令
├── srv #程序数据存放目录,如www的数据/srv/www
├── sys #系统内核信息文件,和/proc相似
├── tmp #临时文件
├── usr #非系统程序,/usr/local是常见的系统级软件安装目录
└── var #存放系统执行过程中经常 变化的文件,如日志文件,邮件等
目录详解- /: 根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
- /bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot: 放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
- /dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
- /etc: 系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。注:/etc/X11存放与x windows有关的设置。
- /home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
- /lib:/usr/lib:/usr/local/lib: 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
- /lost+fount: 系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
- /mnt:/media: 光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
- /opt: 给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下
- /proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
- /root: 系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
- /sbin:/usr/sbin:/usr/local/sbin: 放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
- /tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
- /srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
- /usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
- /var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message: 所有的登录文件存放目录,/var/spool/mail: 邮件存放的目录, /var/run: 程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间
复制代码CentOS中常用命令
一、基础命令
1、ls命令
查询当前目录中的文件夹及文件
2、man命令
帮助命令。调用linux的帮助手册
- 语法格式1:
man -help - 语法格式2:
man -h
3、clear命令
清除控制台
4、man man 命令
查看帮助内容
- 语法结构
man man
注意:按q键退出帮助界面
5、man ls
查看ls命令功能
二、用户与群组
根据Linux系统权限特点,可以多个用户使用同一台机器,所以Linux提供一套非常完整的用户管理系统
用户
用户是能够获取系统资源的权限的集合
cut命令
该命令是一个选取命令
- 语法结构:
cut [参数选项] 文件地址 - 演示:
查询当前系统中的用户列表
- 说明:
该命令其功能是将文件中的每一行“字节”“字符”“字段”进行剪切,选取我们需要的,将选取好的数据输出
w命令
是查询当前登陆者信息
- 语法结构:
w [参数选项] - 演示:
查询当前登陆者用户信息
- 说明:
w 查询更加详细的用户信息
who 查询登陆者及登陆信息
whoami 查询登录者名字
useradd命令
Linux中添加新用户命令
- 语法结构
useradd [参数选项] 用户名 - 演示
- 说明
使用该命令创建用户账户时,默认用户根目录是/home中
id命令
查询用户信息
- 语法结构
id 用户名 - 演示
查看tiger用户的信息
- 说明
id命令可以查看用户的UID(用户ID)、GID(组ID)
passwd命令
修改或设置密码
- 语法结构
passwd [参数选项] 用户名
-演示
为tiger用户设置密码
- 说明
普通用户只能使用passwd命令修改自身的密码
root用户具有管理员权限,可以修改其他用户的密码
注意:使用root用户修改自己或他人密码不需要验证旧密码
su命令
切换用户命令
- 语法结构
su [参数选项] 用户名 - 演示
使用su命令切换到tiger用户下
- 说明
root用户权限较高,切换到其他用户时不需要输入密码,
其他用户切换到root时,需要输入密码
sudo 命令
提升权限
- 管理员组(root,gid为0)
- 普通组(gid范围:1~65535)分为系统组和登录组
2.1 系统组(gid范围:1~999)
2.2 登录组(gid范围:6000~10000)
usermod命令
修改用户信息命令
- 语法结构
usermod [参数选项] 原用户 目标用户 - 演示
将tiger用户加入到root组中
- 说明
修改用户属性usermod,用户信息保存在/etc/passwd文件中,
可以直接用编辑器修改该文件
userdel命令
删除用户
群组
为了能够更高效地指派系统中各个用户的权限,
通常情况会将用户分配到组里面,
可以对一类用户统一安排权限。
查询组列表
查询系统中所有的组
- 语法结构
cat /etc/group - 演示
查询系统中的组列表
- 说明
查询信息解释
组名:组密码:组ID:账号名
groupadd命令
添加(创建)组
- 语法结构
groupadd [参数选项] 组名 - 演示
创建students组
- 说明
groupadd命令用于创建一个新的工作组,
新工作组的信息将被添加到系统文件中
groupmod命令
修改群组属性
- 语法结构
groupmod [参数选项] 组名 - 演示
将students组名修改成student
- 说明
-n 表示修改组名
语法结构是groupmod -n 修改组名 原组名
groupdel命令
删除组
- 语法结构
groupdel 组名 - 演示
- 说明
如果被删除的组中包含某些用户,必须先删除用户后才能删除组。
gpasswd命令
修改/设置组密码
- 语法结构
gpasswd [参数选项] 组名 - 演示
修改student组密码
- 说明
修改组密码使用率并不是很高,可以被sudo命令所替代
三、目录及文件的操作
目录是系统中的文件夹
目录的操作
ls命令
显示指定目录的内容,列出目录及文件列表,类似于Windows下的dir命令
- 语法结构
ls [参数选项] [路径或文件] - 演示
使用ls命令查询当前目录列表
- 演示
使用ls命令查询home目录下的列表
- 说明
不加参数和添加参数要明确当前目录的位置 - 参数选项
-a:显示所有文件及目录(默认),文件以.开头系统视为隐藏文件,不会列出
-l:除文件名称外,将文件型态、权限、拥有者、文件大小等信息列出
-r:将文件以相反次序列出(原定英文字母顺序)
-A:同-a
-F:在列出的文件名后添加符号;如文件名*
-R:如目录下有文件,按文件顺序排列 - 演示
查询当前目录中,所有名字是a开头的文件,创建时间的升序排列
- 说明
可以使用参数对目录进行操作
cd命令
cd命令切换工作目录
- 语法格式
cd [相对路径或绝对路径或特殊符号] - 演示
cd不带参数切换到/root目录下
- 演示
通过type 命令查询cd设置
- 演示
切换到/bin目录下
- 演示
特殊符号使用
切换到用户目录下
- 演示
切换前一个工作目录
- 说明
从root目录中切换到/home/huangxudong下
返回前一个目录是返回到root目录下 - 演示
返回上一级目录
- 演示
进入当前目录
- 说明
明确位置
mkdir命令
创建目录
- 语法结构
mkdir [参数选项] 目录名 - 创建test目录
- 说明
不添加参数选项明确位置,默认在当前目录中创建 - 演示
创建myproject/src目录
- 说明
-p 创建多层目录 - 演示
创建多个目录,在src文件夹下创建controller model view
- 说明
多个目录以空格间隔 - 演示
使用大括号创建多个目录,在model目录下创建pojo dbutils dao service
- 说明
逗号前不能有空格,否则整个大括号的内容将成为一个目录的名字 - 演示
创建级联目录,不同目录下存放不同子目录
文件的操作
touch命令
用于更新文件时间和创建文件命令
- 语法结构
touch [参数选项] 文件名 - 演示
创建logindatalist.txt
- 说明
使用touch时,文件不存在则创建文件
如果文件存在,则更新文件的时间属性,包括存取时间和更改时间
也可以使用该命令更改目录时间属性。 - 演示
创建多个文件,在log目录中创建userlist.txt goodslist.txt
- 说明
创建多个文件时,文件名之间以空格间隔 - 演示
修改文件时间属性,修改logindatalist.txt文件时间属性
- 说明
ls -l logindatalist.txt 查询文件详细信息
stat logindatalist.txt 查询文件详细信息列表 - 参数选项
-c 仅修改文件时间,如果文件不存在,则不创建
rm命令
删除一个文件或目录
- 语法结构
rm [参数选项] 文件或目录名 - 演示
删除logindatalist.txt文件
- 说明
删除文件,rm关键字后面可以直接跟空格和文件名 - 演示
删除目录
- 说明
删除目录时需要添加参数-r
cp命令
复制文件或目录
- 语法格式
cp [参数选项] 源文件 目标文件 - 演示
将A目录中的ulist.txt文件复制到B目录中
- 说明
如果目标文件时目录,则会把源文件复制到该目录中
如果目标文件时文件,如果该文件存在则覆盖,不存在则复制
如果不指向其他目录,则在当前目录中复制
find命令
指定目录下查找文件
- 语法结构
find 搜索路径 [参数选项] 搜索内容 - 演示
搜索当前目录下及子目录下文件拓展名是.txt的文件 - 说明
搜索路径:搜索起始位置
搜索内容:匹配文件的格式 - 演示
查询/log/A目录中最近20天内更新的文件
chmod命令
用户对系统中的目录或文件的使用及操作的权限
- 权限简述
可读可写r(读)w(写)
可读可执行r(读)x(执行)
仅可读 r
没有赋予权限 -
r(读) 4
w(写) 2
x(执行) 1
chmod 777 /test
文件内容的操作
cat命令
用于连接文件并输出
- 语法结构
cat [参数选项] [–help] [–version] 文件名字
演示:
在当前目录中创建goods.txt
- 说明
使用cat命令,需要配合符号(>)完成对文件的操作
命令执行完可以对文件内容进行编辑
使用ctrl+D或ctrl+C退出编辑界面 - 演示
在当前目录中创建goodsmessage.txt,并向该文件中赋值
- 说明
符号>> 与> 功能类似 - 演示
查询goodsmessage.txt文件内容
- 演示
输出内容时添加行号
- 演示
将文件goodsmeassage.txt文件中的内容覆盖到goods.txt中
- 演示
将文件goodsmessage.txt 追加到 goods.txt
- 演示
将goodsmessage.txt 和 goods.txt 的内容 存到goodslist.txt
- 说明
使用>可以新建文件,如果该文件存在可以使用>>号追加 - 演示
清空goodslist.txt文件里的内容
tac命令
将文件全部内容从尾至头输出(反向输出)
- 语法结构
tac [参数选项] 文件名 - 演示
使用tac输出goodsmessage.txt文件内容
more命令
more是一个过滤器,用于一次浏览一个屏幕的内容
- 语法结构
more [参数选项] 文件名 - 演示
使用more浏览goodsmessage.txt文件中的内容
- 说明
按空白键(space)就往下一页显示,
按 b 键就会往回(back)一页显示,
按q键退出 - 演示
使用more浏览goodsmessage.txt文件中的内容,每页显示固定的行数
- 演示
使用more浏览goodsmessage.txt文件中的内容,从第6行开始显示
- 演示
使用more浏览goodsmessage.txt文件中的内容,
查找指定字符串,从找到的字符串的前两行开始显示
- 说明
已经有特殊含义的字母,将无效如 a、h等等 - 演示
tr命令
用于转换文件中的字符
- 语法格式
tr [参数选项] 字符串 - 演示
文档中小写转换大写
- 演示
文本替换?
wc命令
计数
-
语法格式
wc [参数选项] 文件名
-
演示
查询文件信息
-
演示
查询多个文件
stat命令
用于显示文件的状态信息
- 语法格式
stat [参数选项] 文件名 - 演示
查询文件信息
- 演示
批量查询文件
cut命令
截取命令,按字节,字符,域来截取
- 语法结构
cut [参数选项] 文件名 - 说明
该命令必须配置参数选项
-b
-c
-f - 演示
保留每行前三位
四 、Shell脚本
脚本的创建及启动
变量的使用
命令代换
使用命令将数据进行转换,如数字需要进行数学运算,需要转换。通过符号进行转换。
可以理解成和Java中的转译字符相似。
- 常用种类:
*所有
?任意一个字符
[若干字符]可以匹配中括号中出现的任意字符
$(命令)取出命令,取出执行结果
${变量名}取出变量中包含的值
\ 转译字符
引号 单引号、双引号
演示:测试*号查询所有
查询当前目录中所有拓展名是.sh文件列表
演示:测试?匹配一个字符
查询拓展名是.sh,文件名是5个字符,内容任意
演示:测试[若干字符]
使用中括号匹配文件名字
测试:$(),取出命令执行结果
获取date命令执行结果
可以使用esc下的反引号,完成相同功能
演示:使用${}取出变量值
注意:建议使用${}符号输出
演示:使用(()),(()) ,(()),[]算术代换
4
注意:
(()),用于算术运算,只能用+、−、∗、/和()运算符,只能做整数运算可以使用(()),用于算术运算,只能用+、-、*、/和()运算符,只能做整数运算
可以使用(()),用于算术运算,只能用+、−、∗、/和()运算符,只能做整数运算可以使用[] 根据进制完成换算
演示:使用\转译字符
注意:
\表示
尽量注意使用-作为文件名的一部分,使用\无法转移-符号
演示:单引号与双引号
单引号和双引号表示的都是字符串,取值的时候效果会不同
注意:
双引号取值
单引号取名
控制语句
if、else、ifelse、case、for、while……
if
- 语法结构
if [条件表达式];then
执行程序
fi
演示:使用if
判断demo2.sh是不是一个文件
注意:
语法结构中空格不能省略
;then 相当于 {
fi 相当于}
如then关键字换行写,则不需要写;
else
演示:利用else实现双分支判断
多分支elif
演示:多分支判断文本
演示:根据输入的数据进行判断验证 |