linux基础
Posted 微网天下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础相关的知识,希望对你有一定的参考价值。
一、文件系统与目录结构
1、文件系统
文件系统是操作系统最重要的一部分,它定义了磁盘上储存文件的方法及数据结构。文件系统是操作系统组织、存取和保存信息的重要手段,每种操作系统都有自己的文件系统,如Windows所用的文件系统主要有FAT16、FAT32和NTFS,Linux所用的文件系统主要有ext2、ext3、ext4、xfs和btrfs等。
1.1文件系统的特点
文件和目录被组织成一个单根倒置树结构
文件系统从根目录下开始,用“/”表示根文件系统(rootfs):root filesystem
文件名称区分大小写
以.开头的文件为隐藏文件
路径分隔符 /
元数据:metadata-->存储基本信息,stat filename来查看filename的元数据
数据:data
FHS:文件系统分层结构
lsb_release -a --> Linux标准库
1.2文件名命名规则:
文件最长255个字节
包括路径在内文件名称最长4095个字节
蓝色->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 黄色-->设备文件 粉色-->套接字文件 灰色-->其他文件
标准linux文件系统,文件名大小写敏感(ext4)
定义文件颜色:/etc/DIR_COLORS
1.3文件系统结构
文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls和tree等工具来查看其结构,在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,他表现为由根“/”起始的树形结构。
/boot:系统引导程序目录,包含在启动时加载的静态文件、内核、ramdisk和grub等
/bin:系统自身启动和运行时可能会用到的核心二进制程序,不能关联至独立分区
/sbin:管理类基本命令,不能关联至独立分区,系统启动时便会用到的程序
/lib:系统基本共享库文件,以及内核模块文件
/lib64:专用x86_64系统上的辅助共享库文件存放位置
/etc:大多数应用程序的配置文件存放的位置
/home:普通用户家目录的同意存放位置,每个用户的家目录通常默认为 /home/USERNAME
/root:管理员root用户的主目录
/media:便携式移动设备挂载点
/mnt:临时文件挂载点
/dev:(devices)所有设备文件及特殊文件存储位置
/opt:第三方应用程序安装目录
/srv:(service简写)服务类程序用到的中间数据
/tmp:临时文件存放位置
/usr:UNIX Software Resoure UNIX操作系统软件资源存放位置
/var:经常发生变化的文件存储位置,像日志文件等
/proc:用于输入内核于进程相关的数据,通常用于存储进程的pid好
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统,内核中硬件设备相关的信息映射
/selinux:selinux相关的安全策略等信息的存储位置
1.4文件类型
-(f):普通文件
d:目录文件
c:字符设备文件,顺序存储
b:块式设备文件,随机存储
l:链接文件
P:管道文件pipe,/run
mkfifo testpipe
S:套接字文件(socket)
用于本机进程间的通信,不需要在走网络了。nc -ul testsocket
1.5Linux上应用程序的组成部分
二进制程序:
/bin, /sbin, /usr/bin, /usr/sbin,
/usr/local/bin, /usr/local/sbin
库文件:
/lib, /lib64, /usr/lib, /usr/lib64,
/usr/local/lib, /usr/local/lib64
配置文件:
/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:
/usr/share/man, /usr/share/doc,
/usr/local/share/man, /usr/local/share/doc
1.5centos 7 的新变化
/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和 /usr/lib
/lib64 和 /usr/lib64
二、文件操作
1、 pwd 显示当前目录
-P 显示真实物理路径
-L 显示软连接路径
2、相对绝对路径
相对路径:相对于当前工作目录或某目录的位置
. 当前目录 $PWD
..当前目录的父目录
~ 家目录 ~wang wang用户的家目录(不过要root用户才能)
- 上一级目录 因为$OLDPWD这个系统变量给你记录了上一个目录
绝对路径:完整的文件位置路径
基名:basename /etc/sysconfig --> sysconfig
目录名:dirname /etc/sysconfig --> /etc
3、ls 显示目录及目录下的文件
-S 从大到小排序
-d 列出目录本身,而不是目录内容
ls -ld /etc 只显示关于/etc这个信息
-1 一行一个列出来
-tl mtime 按修改时间排序显示
-R 递归
-r 反向排序,默认数字->字母
-U 按目录中放置顺序排序
-X 按后缀排序
注意:ls /bin
ls /bin/
这两者意义不一样,/bin是链接文件
查看二进制
hexdump -c file
xxd file
strings :查看二进制中的可见字符
4、文件时间属性
mtime 修改时间 modify :改变文件内容
atime 访问时间 Access:最后一次读文件内容的时间(读了时间不变:版本5之后加入了一个属性,relatime‘延迟读时间,不会马上改变时间’-->触发时间更新:超过一天;修改时间比访问时间新;file读文件会更新文件的atime)
ctime 改变时间 Change:元数据发生改变 stat filename查看元数据
5、通配符
* 匹配零个或多个字符
?匹配任何单个字符(汉字也算一个)
~ 匹配用户家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 数字范围,范围内一个数字,倒着不行
[a-z] 字母范围,aAbBcC...
[A-Z]
[vincent] 匹配列表中的任何一个字符
[^abc] 匹配除了列表中字符以外的字符
预定义的字符类:amn 7 glob
[:digit:] 任意数字
[:lower:] 任意小写字母
[:upper:] 任意大写字母
[:alpha:] 任意大小写字母
[:alnum:] 任意数字或字母
[:space:] 水平或垂直空白符
[:punct:] 标点符号
[:print:] 可打印字符
[:praph:] 图形字符
6、文件创建
> 清空已存在文件
>>
touch
文件存在则刷新时间戳
文件不存在则创建文件
-a 仅改变atime和ctime
-d
-c 如果文件不存在则不予创建
-t 时间 :设置时间 年月日时分.秒
7、文件复制(CP)cp过程中会丢数据
type -a cp
\cp 直接使用原始命令
cp -r /etc/sysconfig/ /app/zzz
-r 递归 cp /etc/sysconfig /app/zzz
-P 复制软连接本身,
-i 交互式模式,复制时出现提示
-r,-R 递归复制目录及内部的所有内容
cp -r /tmp/ /root/tmpdir 如果tmpdir存在则将/tmp复制到/tmpdir,不存在则创建并复制到目录下
-a 归档,相当于-dR --preserv=all
cp -a /dev/sda1 /app 保留原属性
cp /dev/zero /app/ 打印0
-d 不复制源文件,只复制链接名 --no-dereference --preserv=links
--preserv=mode 权限
=ownership 属主属组
=timestamp
=links
=xattr
=context
=all
-p 等价于--preserv=mode,ownership,timestamp
-v --verbose 冗余,看到操作过程
-f --force 存在一个打不开的文件,删除在自建,在自己家目录下的文件,可以对其做任何操作,覆盖,删除等
-s : 复制成软连接;但是只能将其他目录的文件复制链接到当前目录;只能操作文件。
利用cp备份:cp /etc/passwd{,.bak}--->/etc/passwd /etc/passwd.bak
cp aa bb cc /etc/yyy
cp 文件夹 /app/xxx 出错,文件夹复制到文件中肯定是不行的
远程复制:
scp /etc/centos-release wang@172.18.0.200:/home/wang/bin
echo magedu | passwd --stdin wang
8、 移动和重命令文件
|-------------------------------|
| mv |
| alias rm="mv -t /app" |
|-------------------------------|
rename '.txt' '.txt.bak' *.txt :将以.txt结尾的文件改名为.txt.bak文件
rename '.bak' '' *.bak :改回来
9、目录操作
tree 显示目录树
-d 只显示目录
-L level 指定显示的层级数目
-P pattern 只显示由指定pattern匹配到的路径
mkdir 创建目录
-p 存在不报错,且可自动创建所需要的各目录
-v 显示详细信息
-m MODE 创建目录是直接指定权限
rmdir 删除空目录
-p 递归删除父空目录
-v
rm -rf
安全删除:
shred -zuvn5 1.txt
n:覆盖几次
z:最后一次使用0覆盖,之前的使用随机数覆盖
u:删除文件名
v:显示过程
实例:
dd if=/dev/zero of=/boot/test bs=1 count=600
rm -rf /root/test
df -h 你发现空间利用率并没有减少
lsof /boot/test 查看谁在使用
正确快速方法:> /boot/test 先清空文件,在删除
rm -rf /boot/test
10、软硬链接
硬链接:对同一数据起了个其他名字,删除其中一个,另外一个不受影响,属性完全一样。不能对目录创建硬链接。不能跨分区、跨设备。创建硬链接会增加额外的记录项以引用文件;对应于同一文件系统上的一个物理文件;创建时连接数增加,当连接数为0时。该文件被删除。多个节点号指向同一数据。可对设备文件使用(同一分区)
ln /f1 /tmp/f11
对目录而言,节点号>=2,因为在目录下有一个.目录代表当前目录,所以是2个,3个则是目录下还有子目录 ,子目录中有..目录代表父目录
硬链接之间没有必然联系
软连接:相当于Windows中的快捷方式;链接数不会增加,不是同一个文件;删除原文件,链接文件不能用。可以跨设备,可对目录使用。软连接的大小取决于文件名的大小。
ln -s /root/anaconda-ks.cfg /tmp/a
ln -s ../../root/Desktop/ /etc/sysconfig/D 相对路径,相对于软连接D的目录
查找软连接的原始文件
readlink /bin
readlink /etc/redhat-release
> /app/linkfile :如果>后面跟一个软连接文件,则会冲掉文件内容
11、索引节点(inode)
切割日日志文件-->日志滚动
目录存放的是文件名和文件的节点号,不算在inode table(存放指向数据的指针信息)中,一个目录是目录下的文件名和文件inode号之间的映射
whath -n1 df -i -n:每秒看一下df -i
每个命令都是有显示上限的,太多会报提示错误
file命令,查看文件夹类型(每个文件头部会存放这个文件的模数信息,文件格式说明)
file读文件会更新文件的atime
-b 列出文件辨识结果,不显示文件名称
-f 列出文件中文件名的文件类型
file -f filelist(filelist中放置了你要检查的文件)
-F 指定分隔符 -F"==="
-L 查看软连接对应文件的文件类型
tune2fs -l /dev/sda1
fd file discreption:文件描述符
12、df使用
-T :可显示文件系统类型
-i :可显示磁盘inode节点的使用情况
13、标准输入输出
程序=指令+数据
标准I/O设备
标准输入--> 0
标准输出--> 1
标准错误输出--> 2
|---------------------------------------|
|人为创建指定描述符号 |
| cd /proc |
| echo $$ |
| exec 8<>/root/a.txt 设置文件描述符 |
| exec 8>&- 关闭句柄 |
|---------------------------------------|
I/O重定向
> 标准输出追加覆盖;1>
>>标准输出追加不覆盖
2>标准错误输出
<
<<
多行重定向:cat <<abc :以abc结尾
ls /err /boot >/app/all 2>&1
ls /err /boot &> /app/all.txt 标准对错输出
ls /err /boot &>> /app/all.txt 累加
(ls;hostname) > /app/1.txt
> /dev/sha3 /dev/sha3 只是设备的名
文件内容会被覆盖
>| file:强制覆盖
set -C 禁止覆盖已有文件;ls /boot >| /app/ls.log 强行覆盖
set +C 关掉禁止覆盖,
14、把输出和错误重新定向到文件
stdout和stderr可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把stdout重定向到文件
2> 把stderr冲顶向到文件
&> 把所有输出重定向到文件
14、tr字符替换
-s 压缩多余字符,只留一个;去重复 aaa-->a
-dc 除了什么都删除
-v 垂直制表符
tr ‘abcd’ ‘xyz’ :用z替换d
tr -d abc </etc/issue :删掉abc字母
tr '\n' ' ' <d1
tr -d '\n' <d1
tr 'a-z' 'A-Z' >f2 < /etc/issue
tee
ls | tee f1 ,既在屏幕显示,也写入到文件f1中
|---------------------------------------------------------------------------------|
|发邮件命令:mail -s "Help Me!" magedu |
| hi |
| how are you! |
| . #结束符 |
| EOT |
| mail -s "Help Me!" magedu <<a 以a结束邮件书写,不在用.来结束 |
|---------------------------------------------------------------------------------|
15、管道符
|-----------------------------------------------|
|ls /boot /err 2>&1 | tr '[a-z]' '[A-Z]' |
|ls /boot /err |& tr '[a-z]' '[A-Z]' 两者等价|
|-----------------------------------------------|
以上是关于linux基础的主要内容,如果未能解决你的问题,请参考以下文章