基础命令的理解与使用
文件分类
1 | ls |
-
- 表示普通文件
- 数据文件、压缩包
- 媒体文件、图片、音频、视频
- 二进制目命令
d:目录directory
b:块设备block,/dev/sda1
c:字符设备char,例如/dev/zero(无穷的0)、/dev/null(黑洞)、/dev/urandom
1
2
3
4
5
6
7
8# 通过/dev/zero 生成一个10G文件
dd if=/dev/zero of=10g.txt bs=1M count=10000 # 从/dev/zero输入内容输出到10g.txt文件,每次传1M,传10000次
# dd
# if inputfile 输入文件
# of outputfile 输出文件
# bs blocksize 每次读取多大
# count 总共读取的次数l:软链接link
p:命名管道pipe
s:套接字socket
文件的inode
1 | [root@localhost ~]# ll -i |
df -i(diskfree inode):查看文件系统的inode信息,可以看出每个文件系统inode数量是有限的,当inode用完时,硬盘将无法写入数据,所以要避免小文件数量过多。
eg:硬盘无法写入的原因也可能是inode号不够用了,又或者是磁盘空间不够用了
inode大致意思:linux系统采用分解式目录管理方法,文件名保存在目录中,文件(linux一切皆文件)的其他属性保存在inode中。要访问某个文件,先在文件目录中找到该文件的索引节点,在以索引节点号inode作为索引到inode表找到文件的其他信息,包括文件内容在外存的位置。
如下图是硬链接与软连接的inode区别
1 | [root@localhost ~]# ll -ai *test* |
文件的重定向
注:linux一切皆文件,都是在对文件操作,当然显示的终端界面也是,把它当做文件。
其中每个进程(运行中的命令)都有一张打开文件的文件描述符表:
0:stdin标准输入
1:stdout标准输出,不存在,创建文件
2:stderr标准错误
每个进程(运行中的命令)的如图:
> : stdout标准输出重定向到输入文件,覆盖输入
1
echo test > myfile.txt # > echo进程的标准输出重定向到向myfile.txt文件的输入,默认标准输出是到终端
>>:stdout标准输出重定向到输入文件,追加输入
1
echo test >> myfile.txt # 在myfile.txt文件底行新一行追加
2>:stderr标准错误重定向到输入文件,覆盖输入
1
find / -name test 2> /dev/null # 将这条命令的标准错误stderr重定向到/dev/null黑洞,也就是不到终端显示,只留正确stdout的输出
2>:stderr标准错误重定向到输入文件,追加输入
1
find / -name test 2>> noMatchFile.txt # 正确的stdin的1保持输出到终端,stderr的2定向到noMatchFile.txt
&>:stdout和stderr都重定向文件,覆盖1
find / -name test &> findAns.txt # 把目录的stdout、stderr匹配成功和不成功的信息都定向到findAns.txt文件
2>&1:与
&>作用一样1
find / -name test > findAns.txt 2>&1
&>>:追加
| :将标准输入stdin重定向到stdout标准输出
1
cat test.txt | less # cat进程(运行的命令)读取test.txt的标准输出stdout重定向到less进程(运行的命令)标准输入stdin; (less test.txt从test.txt标准输入处理)
tee:为重定向内容开一个保存文件的路口,并正常输出,你可以加一个|又继续输入处理,如果为空,输出屏幕
1
echo test | tee myfile.txt # 将重定向输出test的内容另开一个路口以覆盖方式输入到myfile.txt并正常输出test到终端
tee -a:追加方式
1
echo test | tee -a myfile.txt # 将重定向输出test的内容另开一个路口以追加方式输入到myfile.txt并正常输出test到终端
具体tee如下图
虚拟机与window主机文件交互
1 | yum install -y lrzsz |
软件安装管理方式
这里示例是centos,redhat是dnf,yum也是link的dnf
常用的三种方式
- yum安装:yum install package
- rpm安装:rpm -ivh package.rpm
- 编译安装
关系:
- yum基于rpm构建,自动解决依赖关系,并从配置的软件仓库(repository)中下载所需包,支持从多个远程仓库
- rpm (redhat package manager)直接操作单个.rpm软件包文件(管理本地),用于安装、查询、更新、卸载软件包,需要手动处理依赖
yum(dnf)
1 | yum install 包名 # 下载并安装 |
例:
1 | yum search python # 本地缓存/var/cache/yum/ |
只下载rpm不安装
1 | yum install --downloadonly vim --downloaddir=/root/ |
rpm
本地包管理,下载的软件包本地有rpm数据库管理
1 | rpm -q # 查询软件包,名称-版本-架构 |
- i:-qi中的i是info,-ivh的i是install
- q:query
- f:file
- i:info
- l:list
- c:configure
- d:document
- p:package
- v:verbose
- h:hash,50个#显示过程
提取rpm软件包内容
1 | rpm2cpio 软件包 # 将rpm包转换为cpio归档文件输出 |
cpio:
- -i:从标准输入中提取文件
- -d:从当前工作目录创建子目录
- -m:保留文件修改时间
- -v:显示详细过程
- -t:列出归档内容








