文件目录
pwd
显示当前所在目录的位置
ls
ls
显示当前目录下的所有文件名(不含隐藏文件)
ls -a
显示所有文件名(含隐藏文件)
ls -l
显示当前目录下的所有文件详细信息
ls -s
显示占用的磁盘块数
磁盘块是什么呢?
我们从机械硬盘讲起,首先了解扇区的概念:
绿色部分为扇区
一圈灰色的部分叫做磁道
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
下图磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为: 6 7 12 * 512 = 258048字节
硬盘的最小存储单位就是扇区了,而且硬盘本身并没有block的概念
文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。
df
df是磁盘管理命令,先来知道是哪种文件系统
df -T
显示文件系统的形式
df -h
更可读,采用M,G描述大小
可见是ext4文件系统
sudo tune2fs -l /dev/vdb | grep "Block size"
一个block是4K字节,也就是说我所使用的文件系统中1个块是由连续的8个扇区组成。
扇区是对硬盘而言,块是对文件系统而言。
tree
以树的形式显示目录,更加形象
du
显示目录文件大小,单位kByte
-h 以M,G显示,更清楚,按照1024换算
cd
切换目录
cd 目录
mkdir
创建目录
cp
拷贝文件,目录需要加-r
rm
删除文件,目录需要加-r
rmdir
等价于rm -r
mv
移动文件
find
用于在指定目录下查找文件
任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find / -name xxx
全盘查找名称含是xxx的文件和目录,注意是全称匹配
此时已经了解了如何查看linux目录中有哪些文件,那么我们如何查看文件的具体内容呢?
文本查看
cat
more
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
more /var/log/dmesg
查看 内核日志
在boot阶段,所有的应用还没有启动,syslogd也未启动,这时内核日志是非常重要的信息。除了设备初始化日志、内核模块日志,它还会包含一些应用崩溃的相关信息记录,了解dmesg的使用对于调试程序相当重要。
实际上等同于 dmesg | more
head
head –n 文件名 查看文件头几行,n是行数
tail
tail –n 文件名 查看文件尾几行,n是行数
echo
echo于在shell中打印shell变量的值,或者直接输出指定的字符串。
$号后面为变量名
输出环境变量
输出转义
grep
grep 命令用于查找文件里符合条件的字符串,可以上述其他文本查看命令联合使用,中间用|号分割
grep 匹配字符 目标文件
-n显示所在行号
-A往后多显示几行
-B往前多显示几行
-r目标为目录时需要指定
文本处理
wc
wc指令我们可以计算文件的Byte数、字数、或是列数
wc -l
获取指定文件的行数
wc
获取行数、单词数、字节数
awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具
将文件每行按空格或TAB分割,输出文本中的1、4项
awk '{print $1,$4}' 文件
结合使用wc和awk获取文件行数
wc
获取行数为12、单词数12、字节数192
![image-20220425212354754](C:\Users\qianqiu\AppData\Roaming\Typora\typora-user-images\image-20220425212354754.png
由于获取到的行数后面还有文件名,我们只需要第一项,故再结合awk,取第一个单词
文件属性修改
chown
chown 所属用户:所属组 文件/目录
- -v : 显示详细的处理信息
- -R : 递归处理处理指定目录以及其子目录下的所有文件
chgrp
与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
chgrp 组 文件/目录
chmod
修改文件的所有者:组:其他的权限
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
chmod 777 file
ifconfig
ifconfig
命令用于显示或设置网络设备
errors指的是网卡接收异常统计,这个值是从网卡上读取到的,并否内核计数,因此具体含义需要参考网卡的技术说明书,可以认为是接收到异常包,接收异常错误统计的总和。
dropped统计了网卡丢包数同时也包括网卡dev层的内核丢包,比如内核发现网卡传递过来的包是不支持的协议类型,那么就会丢弃该包同时增加该计数。
overruns指的是fifo被填满了从而导致的丢包量,当内核申请内存给网卡使用,如果被填满后,内核还没有来得及读取和清空数据,那么就会触发overrun,从而把第一个包丢弃掉。
frame指的是帧格式错误计数,一般是帧不符合要求,比如长度未进行8字节对齐,2层帧中的crc校验错误等,很可能是网线或者网口异常引起。
设置环境变量
env
查看所有环境变量
echo $PATH
查看具体某个变量值,如查看path变量
export
效果与env类似
export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。在当前命令行里新建bash,属于创建子进程,会继承环境变量
export -p //列出当前的环境变量值
export MYENV //定义环境变量
export MYENV=7 //定义环境变量并赋值
export -n MYENV //删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
export PATH=$PATH:你的路径 //特殊,新增path的值,因为path格式是路径1:路径2:路径3 export命令是对变量覆盖式赋值,因此注意先通过$PATH:把已有值取出,注意这种方式仅当前shell进程有效,每次ssh登陆会创建新的shell进程
declare
用于声明 shell 变量,export命令实质上是调用此命令
declare [+/-][rxi][变量名称=设置值] 或 declare -f
参数说明:
- +/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
- -f 仅显示函数。
- r 将变量设置为只读。
- x 指定的变量会成为环境变量,可供shell以外的程序来使用。
- i [固定变量类型]可以是数值,字符串或运算式,第一次赋值后,之后只能赋值同类型的值
注意:
declare命令可以声明普通变量,也可以声明环境变量
而export 变量
则相当于declare -x 变量
以上方法都是临时的
永久设置环境变量
- 修改profile文件:
vim /etc/profile
在里面加入:
export PATH="$PATH:新路径"
- 修改.bashrc文件:
vim ~/.bashrc
在里面加入:
export PATH="$PATH:新路径"
如果想立刻生效则需执行如下source命令
source
在当前Shell环境中从指定文件读取和执行命令,执行文件并从文件中加载变量及函数到执行环境
- 在一些工具的执行过程中,会把环境变量设置以"export XXX=XXXXXX"或"declare XXX=XXXXXX"的形式导出到 一个文件中,然后用source加载该文件内容到执行环境中。
- 读取和执行/root/.bashrc文件。
source ~/.bashrc
帮助文档
man
查看单独命令的帮助文档
man -k 命令名
括号里的数字表示主题:
(1)用户命令
(2)系统调用
(3)库函数
(4)特殊文件
(5)文件格式
(6)游戏
(7)综合
(8)系统管理和特权命令
(9)内核接口(不是所有的linux发行版都包括)
可见chmod有1,2主题,我们现在查看主题1,使用如下命令
man 1 命令名
man 1 chmod
info
文档树的形式显示帮助文档
info 命令名 # 直接查看指定命令的部分
info # 进入文档树
用户管理
who
显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
使用权限:所有使用者都可使用。
who
显示当前登录系统的用户
who -H
显示标题栏
who -T
关于 -T 选项的 ‘+、-、?’: ‘+’ 允许写入信息 ‘-‘ 禁止写入信息 ‘?’ 不能查找到终端设备
w
w命令用于显示目前登入系统的用户信息,与who类似
系统管理
date
Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,
格式设定为一个+号后接数个标记
kill
发送信号
kill -l
查看所有信号
kill -信号数字 进程pid
pid可以通过ps命令获取
kill -9 进程pid
常用来发送kill信号来强行杀死进程
ps
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
- -A 列出所有的进程
- -e:此选项的效果和指定"A"选项相同。
- u:以用户为主的格式来显示程序状况。
- -f:显示UID,PPIP,CMD与STIME栏位。
- -l或l:采用详细的格式来显示程序状况。
ps -l //将目前属于您自己这次登入的 PID 与相关信息列示出来
ps -ef //显示所有命令,连带命令行
ps -ef | grep 进程关键字 //一般配合grep 进程关键字,用来找指定进程的pid
问题
功能测试宏是什么?
大小单位很奇怪?
4096实际上是目录文件的默认分配大小,并不是实际已经用的大小,也不是目录里的文件总大小,除非目录包含文件太多,才会大于此值
stat -f与df看到的文件系统不同
/dev/下的文件所属文件系统很奇怪
stat中device是什么
stat命令其实是查看文件系统的inode信息
如果是普通文件,则是所在硬盘设备号,由主设备号+次设备号构成,后缀h/d分别代表十六进制hexadecimal和十进制decimalism
如fc02h则代表主设备号fc,次设备号02
通过df -T 命令查看当前文件所属文件系统为/dev/vda2
查看/dev/vda2的设备号,其中252,2正是此硬盘的主次设备号,用16进制表示为fc,02,合并起来则是fc02h,转为十进制则是64514d