文件系统
- 文件系统的类型:
按照文件系统存储的位置区分
磁盘文件系统 —>>> 磁盘上 —>>>NTFS EXT3 EXT4
虚拟文件系统 —>>> 内存上 —>>> proc sysfs
网络文件系统 —>>> NFS
- 文件系统的逻辑结构(层次结构):
/ : | etc
| bin
| home
| dev
| lib
| mnt
| sys
| proc
- 文件系统的目录结构:
文件系统层次结构:倒置的树
linux : 分区属于目录
Windows:目录属于分区
- 文件系统的相关命令
cd:切换路径
绝对路径:指文件在文件系统中的准确位置。通常在本地主机上,
以根目录为起点。例如“/usr/games/gnect”就是绝对路径。
相对路径:指相对于用户当前位置的一个文件或目录的位置。例如,
用户处在usr目录中时,只需要“games/gnect”就可确定这个文件。
. : 当前目录
…: 上一级目录
~ : 家目录
ls:列举路径目录下的内容
-a:列举所有文件,包括隐藏文件
-l:列举文件的详细信息
-h: with -l, print sizes in human readable format (e.g., 1K 234M 2G)
d rwxr-xr-x 2 root root 4096 Mar 21 02:38 bin
第一字段 : 文件类型
bcd-lsp:
b:块设备文件
c:字符设备文件
d:目录
-:普通文件
l:链接文件(符号链接/软链接)
s:套接字文件
p: 管道文件
第二字段:rwx r-x r-x
111 101 101 (0755)
文件所属者 同组用户 其他用户
root root
文件所属者 文件所属组
修改文件权限的命令:
chmod 0644 filename
u 文件所属者
g 同组用户
o 其他用户
r
w
x
chmod u-x filename
chmod u+w filename
cp:拷贝
cp filename(带路径) filename(路径)
-a:
-r:
rm:删除
-r
mv:移动
创建链接文件
硬链接是利用Linux中为每个文件分配的物理编号——inode建立链接。因此,
硬链接不能跨越文件系统。
软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用
绝对路径而不是相对路径,以最大限度增加可移植性。
硬链接:
ln 文件名 硬链接名
软链接:
ln -s 文件名 软链接名
文件打包压缩
压缩工具
gzip
bzip2
zip
eg:zip xxxx.zip xxxx
解压工具
gunzip
bunzip2
unzip
归档压缩命令:
归档压缩:
tar -czf xxx.tar.gz xxx
tar -cjf xxx.tar.bz2 xxx
解压:
tar -xvf 压缩包名
网络配置
- 图形化界面配置
[1]. 动态分配
[2]. 静态指定
- 配置文件配置
[1]. 动态分配
- 网络接口配置文件 /etc/network/interfaces
动态分配
auto eth0
iface eth0 inet dhcp
-
保存退出
-
重启网络
sudo /etc/init.d/networking restart
- 查看网络配置情况
ifconfig
ip ad
ifconfig eth0 up/down
- ping
ping -c number IP地址/域名
[2]. 静态指定
- 网络接口配置文件 /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.9
netmask 255.255.255.0
gateway 192.168.0.1
- DNS域名服务器地址配置文件
/etc/resolv.conf
nameserver 192.168.1.1
- 修改开机自启动脚本
vi /etc/rc.local
echo “nameserver 8.8.8.8” >> /etc/resolv.conf
exit 0
- 重启网络
sudo /etc/init.d/networking restart
- 查看网络配置情况
ifconfig
- ping
shell脚本编程
c语言 —>>> 编译性语言
shell脚本 —>>> 解析性语言 —>>> 需要有解析器(shell —>>> bash)解析
本质:shell命令的有序集合
- 创建shell脚本文件
xxxx.sh
- 编写脚本
完成特定功能的shell命令集合
- 执行脚本
bash xxx.sh
增加可执行权限
[1]. 变量
用户自定义变量
变量名=值
位置变量即命令行参数
$0 与键入的命令行一样,包含脚本文件名
$1,$2,……$9 分别包含第一个到第九个命令行参数
${n}
$@ 包含所有命令行参数:“$1,$2,……$9”
$* 包含所有命令行参数:“$1,$2,……$9”
预定义变量
$? 包含前一个命令的退出状态
$# 包含命令行参数的个数
$$ 包含正在执行进程的ID号
环境变量
[2]. 说明性语句
1.以#号开始到该行结束,不被解释执行
- #!/bin/bash 指定当前脚本的解析器
[3]. 功能性语句
- read 从标准输入读值赋值给变量(阻塞方式读)
read VAL
read VAL1 VAL2 VAL3 …
- expr 简单的算术运算 + - * / %
expr 3 + 3 * 5
- test 测试 数字、字符串、文件属性
字符串:
s1 = s2 测试两个字符串的内容是否完全一样
s1 != s2 测试两个字符串的内容是否有差异
-z s1 测试s1 字符串的长度是否为0
-n s1 测试s1 字符串的长度是否不为0
数字:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
文件属性:
-d name 测试name 是否为一个目录
-e name 测试一个文件是否存在
-f name 测试name 是否为普通文件
-L name 测试name 是否为符号链接
-r name 测试name 文件是否存在且为可读
-w name 测试name 文件是否存在且为可写
-x name 测试name 文件是否存在且为可执行
-s name 测试name 文件是否存在且其长度不为0
f1 -nt f2 测试文件f1 是否比文件f2 更新
f1 -ot f2 测试文件f1 是否比文件f2 更旧
[4]. 结构性语句
- 条件语句
if…then…fi
if 表达式 --->>> [ ]
then
命令表
fi
if 表达式
then
命令表
else
命令表
fi
if 表达式
then
命令表
elif 表达式
then
命令表
elif 表达式
then
命令表
else
命令表
fi
- 多路分支语句
case ... esac
case 字符串变量 in
模式1)
命令表1
;;
模式2 | 模式3)
命令表2
;;
……
模式n)
命令表n
;;
esac
- 循环语句
for…do…done
for 变量名 in 单词表
do
命令表
done