linux常用命令

文件目录

pwd

显示当前所在目录的位置

image-20220425202118832.png

ls

ls 显示当前目录下的所有文件名(不含隐藏文件)

image-20220425164957360.png

ls -a显示所有文件名(含隐藏文件)

ls -l显示当前目录下的所有文件详细信息

示意图

image-20220425165340697.png

ls -s显示占用的磁盘块数

image-20220425165613018.png

磁盘块是什么呢?

我们从机械硬盘讲起,首先了解扇区的概念:

绿色部分为扇区

一圈灰色的部分叫做磁道

image-20220425170559136.png

存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

下图磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为: 6 7 12 * 512 = 258048字节

image-20220425170454096.png

硬盘的最小存储单位就是扇区了,而且硬盘本身并没有block的概念

文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。

df

df是磁盘管理命令,先来知道是哪种文件系统

df -T 显示文件系统的形式

image-20220425171020727.png

df -h更可读,采用M,G描述大小

image-20220425202014629.png

可见是ext4文件系统

sudo tune2fs -l /dev/vdb | grep "Block size"

image-20220425171109005.png

一个block是4K字节,也就是说我所使用的文件系统中1个块是由连续的8个扇区组成。

扇区是对硬盘而言,块是对文件系统而言。

tree

以树的形式显示目录,更加形象

image-20220425201054770.png

du

显示目录文件大小,单位kByte

-h 以M,G显示,更清楚,按照1024换算

image-20220425203847793.png

image-20220425205203044.png

cd

切换目录

cd 目录

image-20220425201737159.png

mkdir

创建目录

cp

拷贝文件,目录需要加-r

rm

删除文件,目录需要加-r

rmdir

等价于rm -r

mv

移动文件

find

用于在指定目录下查找文件

任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find / -name xxx全盘查找名称含是xxx的文件和目录,注意是全称匹配

此时已经了解了如何查看linux目录中有哪些文件,那么我们如何查看文件的具体内容呢?

文本查看

cat

image-20220425172002125.png

more

more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示

more /var/log/dmesg查看 内核日志

在boot阶段,所有的应用还没有启动,syslogd也未启动,这时内核日志是非常重要的信息。除了设备初始化日志、内核模块日志,它还会包含一些应用崩溃的相关信息记录,了解dmesg的使用对于调试程序相当重要。

实际上等同于 dmesg | more

image-20220425172024171.png

head

head –n 文件名 查看文件头几行,n是行数

image-20220425172724391.png

tail

tail –n 文件名 查看文件尾几行,n是行数

image-20220425172803448.png

echo

echo于在shell中打印shell变量的值,或者直接输出指定的字符串。

$号后面为变量名

输出环境变量

image-20220425192056254.png

输出转义

image-20220425191943431.png

image-20220425192147699.png

grep

grep 命令用于查找文件里符合条件的字符串,可以上述其他文本查看命令联合使用,中间用|号分割

grep 匹配字符 目标文件

-n显示所在行号

-A往后多显示几行

-B往前多显示几行

-r目标为目录时需要指定

image-20220425200727871.png

文本处理

wc

wc指令我们可以计算文件的Byte数、字数、或是列数

image-20220425212342573.png

wc -l 获取指定文件的行数

wc获取行数、单词数、字节数

awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具

将文件每行按空格或TAB分割,输出文本中的1、4项

awk '{print $1,$4}' 文件

结合使用wc和awk获取文件行数

wc获取行数为12、单词数12、字节数192

image-20220425212811341.png

![image-20220425212354754](C:\Users\qianqiu\AppData\Roaming\Typora\typora-user-images\image-20220425212354754.png

由于获取到的行数后面还有文件名,我们只需要第一项,故再结合awk,取第一个单词

image-20220425212621427.png

文件属性修改

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命令用于显示或设置网络设备

image-20220425174506633.png

errors指的是网卡接收异常统计,这个值是从网卡上读取到的,并否内核计数,因此具体含义需要参考网卡的技术说明书,可以认为是接收到异常包,接收异常错误统计的总和。

dropped统计了网卡丢包数同时也包括网卡dev层的内核丢包,比如内核发现网卡传递过来的包是不支持的协议类型,那么就会丢弃该包同时增加该计数。

overruns指的是fifo被填满了从而导致的丢包量,当内核申请内存给网卡使用,如果被填满后,内核还没有来得及读取和清空数据,那么就会触发overrun,从而把第一个包丢弃掉。

frame指的是帧格式错误计数,一般是帧不符合要求,比如长度未进行8字节对齐,2层帧中的crc校验错误等,很可能是网线或者网口异常引起。

设置环境变量

env

查看所有环境变量

image-20220425193426390.png

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进程

image-20220425193758797.png

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 命令名

image-20220425181457520.png

括号里的数字表示主题:
(1)用户命令
(2)系统调用
(3)库函数
(4)特殊文件
(5)文件格式
(6)游戏
(7)综合
(8)系统管理和特权命令
(9)内核接口(不是所有的linux发行版都包括)

可见chmod有1,2主题,我们现在查看主题1,使用如下命令

man 1 命令名

man 1 chmod

image-20220425181618547.png

info

文档树的形式显示帮助文档

info 命令名 # 直接查看指定命令的部分
info # 进入文档树

image-20220425181808985.png

用户管理

who

显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。

使用权限:所有使用者都可使用。

who显示当前登录系统的用户

image-20220425202435428.png

who -H 显示标题栏

image-20220425202515984.png

who -T

image-20220425202723775.png

关于 -T 选项的 ‘+、-、?’: ‘+’ 允许写入信息 ‘-‘ 禁止写入信息 ‘?’ 不能查找到终端设备

w

w命令用于显示目前登入系统的用户信息,与who类似

image-20220425203542184.png

系统管理

date

Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,

格式设定为一个+号后接数个标记

image-20220425211348381.png

image-20220425211522257.png

kill

发送信号

kill -l查看所有信号

image-20220425213356843.png

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 与相关信息列示出来

image-20220425214631542.png

ps -ef //显示所有命令,连带命令行
ps -ef | grep 进程关键字 //一般配合grep 进程关键字,用来找指定进程的pid

image-20220425214749631.png

问题

功能测试宏是什么?

image-20220425161427268.png

大小单位很奇怪?

4096实际上是目录文件的默认分配大小,并不是实际已经用的大小,也不是目录里的文件总大小,除非目录包含文件太多,才会大于此值
image-20220425205203044.png

image-20220425215128354.png

image-20220425215058005.png

stat -f与df看到的文件系统不同

/dev/下的文件所属文件系统很奇怪

stat中device是什么

stat命令其实是查看文件系统的inode信息
如果是普通文件,则是所在硬盘设备号,由主设备号+次设备号构成,后缀h/d分别代表十六进制hexadecimal和十进制decimalism
如fc02h则代表主设备号fc,次设备号02
file
通过df -T 命令查看当前文件所属文件系统为/dev/vda2
file
查看/dev/vda2的设备号,其中252,2正是此硬盘的主次设备号,用16进制表示为fc,02,合并起来则是fc02h,转为十进制则是64514d
file