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基础的主要内容,如果未能解决你的问题,请参考以下文章

编程基础 linux基础入门--linux为何物?

linux具体要学点啥,基础要学啥?

linux入门基础——linux用户基础

Linux基础篇--linux基础和帮助用法

Linux基础(03)常用基础指令和操作

Linux操作基础