Linux基础命令

本文最后更新于:2022年6月30日 晚上

概览:Linux目录结构,Linux用户与用户组,文件目录操作命令,修改权限,文件查找以及压缩指令。

Linux下一切皆文件。

Linux的一般文件目录的颜色

我使用的是ubuntu-18.04.2

1
2
3
4
5
6
7
白色 -- 普通文件
绿色 -- 可执行文件
红色 -- 压缩文件
蓝色 -- 目录文件
青色 -- 链接文件
黄色 -- 设备文件
灰色 -- 其他文件

Linux目录结构

1
2
3
4
5
6
7
8
9
10
11
/root : Linux超级用户的家目录
/bin: binary,二进制文件,有许多可执行程序。
/dev: device,设备。硬盘显卡等设备被抽象成为文件。
/etc:存放配置文件(/etc/password 密码文件,/etc/group 当前有哪些用户组)
/home: linux操作系统所有用户的家目录。(/home/colorso 我的宿主目录)
/lib : Linux运行时会加载的一些动态库
/mnt : 手动挂载的目录,比如嵌入式挂载U盘。
/media : 外设的自动挂载目录
/usr : unix system resourse 资源目录。里面有个games文件夹😁
/opt : 安装的第三方应用程序
/tmp : 存放临时文件,重启电脑时目录会清空

安装Ubuntu的时候就接触了/etc这个目录🙃

文件或者目录的相关命令

  • ls – 查看文件与目录

ls命令可以查看一个文件夹之内的文件与目录。

常用命令:

1
2
ls [dir] 直接显示出dir目录下的文件与文件夹,默认以文件名进行排序。
ls -al [dir] 将dir目录下的文件,包括隐藏文件以及各个文件的属性显示出来。
  • ll 命令就是 ls -l 的简写,列出一长串数据,包含文件的属性和权限。

  • cd – 切换目录

    1
    2
    3
    4
    cd dir #直接进入对应的目录
    cd /home/用户名 #进入home目录
    cd ~ #进入home目录
    cd #进入home目录,什么也不加
  • cp – 复制文件或者目录。

    1
    2
    3
    4
    5
    6
    #cp 要拷贝的文件/目录 到达的位置/文件
    cp file file1(存在) #file将会覆盖掉file1
    cp file file1(不存在) #创建file1,将file中的内容拷贝到file1中
    cp file dir(目录、存在) #拷贝file到dir目录中
    cp dir(存在) dir1(存在) #将dir整个拷贝到dir1之中,也包括dir这一层目录
    cp dir(存在) dir1(不存在) #创建 dir1这个目录,然后把dir中的内容拷贝到dir1之中,不包括dir。
  • mv – 改名或者移动文件。

    1
    2
    3
    4
    5
    mv file(存在) file1(不存在) # file文件改名
    mv dir(目录) dir1(不存在) # dir目录改名
    mv file(文件) dir(存在目录) # 移动文件file到目录dir中
    mv dir(目录存在) dir1(目录存在) # 目录dir移动到dir1目录中
    mv file(文件存在) file1(文件存在) # file文件会覆盖file1文件,并且file文件会被删除掉
  • rm – 删除文件或者目录,删除目录时加上参数 -r

    1
    rm dir -r
  • pwd – 输出当前所在用户路径

  • mkdir – 创建目录

    1
    2
    mkdir dir #创建一个目录
    mkdir dir/dir1/dir2 #目录不存在或者创建多级目录时加上参数 -p

文件类型

使用 ll 命令时可以看到每一个文件对应的类型。

1
2
3
4
5
6
7
-  代表普通文件
d 代表目录
l 代表符号链接,linkfile,类似于windows的快捷方式
p 代表管道
s 代表套接字 socket
c 代表字符设备,例如鼠标键盘
b 代表块设备,例如U盘硬盘

用户与用户组

Linux之下一切都是文件,并且Linux是多用户多任务的系统。

通过用户身份、与该用户所支持的用户组的概念,可以帮助我们让多任务的Linux环境变得更容易管理。

1
2
3
user  -- 文件所有者
group -- 文件所属组用户
others -- 其他人

修改文件、目录权限

chmod – 文字设定法

1
2
3
4
5
6
7
chmod  who[+|-|=]mode  文件名

这里的who指三种身份:u--代表user,g -- group,o -- other,
a -- all,不写时默认就是all。
+-、=,三种操作见名知意
mode指修改的执行权限:r -- 读,w -- 写, x -- 执行
- -- 表示没有任何权限

上图表示去除test文件的文件所有者以及其他人的执行权限。

  • 并列的操作可以使用逗号进行分割:chmod u+x,g-x test.

chmod – 数字设定法

1
2
3
4
5
chmod  [+|-|=]mode  文件名

+-、=,三种操作见名知意
mode指修改的执行权限,只不过使用数字来代替:
r -- 4,w -- 2, x -- 1, - -- 0.
  • chmod 777 文件名 就表示为文件加满权限。

上图表示对test文件文件所有者加满权限,用户组和其他人只有执行权限。

  • 如果一个目录没有执行权限,那么这个目录就无法进入

chown – 修改文件所有者或所属组

  • chown 新的所有者 文件名
  • chown 新的所有者:新的组 文件名

chgrp – 修改文件所属组

  • chgrp 新的组 文件名

文件的查找和检索

find指令

  • 按照文件名进行查找

    1
    2
    3
    find [dir] -name "[names]"
    dir -- 表示查找的目录
    names -- 表示查找的文件名
  • 按照文件类型查找,linux一共就有7种文件类型

    1
    2
    3
    4
    find [dir] -type [types]
    dir -- 表示查找的目录
    types -- 表示查找的文件类型
    但是普通文件的对应符号不再是 ll 命令时看到的'-',而是'f',其余都相同

  • 按照文件大小进行查找

    1
    2
    3
    4
    5
    find [dir] -size +10M/-10k/10k
    dir -- 表示查找的目录
    +10M -- 表示查找大于10M的文件,
    -10k -- 表示查找小于10k的文件
    10k -- 表示查找等于10k的文件
    • 如何查找大于10k小于100k的文件–区间查找

      1
      find -size +10k -size -100k
  • 按照日期查找

    1
    2
    3
    4
    5
    6
    7
    find [dir] -atime -n/+n

    创建日期 -ctime -n/+n
    修改日期 -mtime -n/+n
    访问日期 -atime -n/+n
    -n 代表n天之内
    +n 代表n天之外

  • 根据目录深度搜索

1
2
3
4
find [dir] -maxdepth/mindepth 3
dir -- 表示查找的目录
maxdepth 3 -- 表示最多搜索三层目录
mindepth 3 -- 表示搜索目录从第三层开始更大的搜索

文本日志查找

grep指令 – 查找文件里的内容

1
2
3
4
grep -r "查找的内容" [dir] -n
-r 如果查询的范围内有目录就加上
dir 表示查找的目录
-n 会显示找出的文件的内容在对应文件的第几行

less指令 - 查看大文件的内容

1
less [参数] 文件 

我一般都是直接less xx.log文件

打开之后的命令:

1
2
3
4
5
6
7
8
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
F: 就会有类似 tail -f 的效果,读取写入文件的最新内容, 按 ctrl+C 停止。

同类型的还有More指令

压缩文件

Linux常见的压缩格式是 .gz.bzip2

.gz 是 gzip程序压缩的文件, .bzip2 是bzip2程序压缩的文件。

直接使用这两个程序可以进行压缩,但是功能不够强大(不能压缩目录)。

tar命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
参数:
c -- 创建压缩文件
x -- 释放压缩文件
v -- 打印提示信息(可不写)
f -- 指定压缩包的名字
z -- 使用gzip压缩文件,文件最好命名为:-xxx.tar.gz
j -- 使用bzip2压缩文件,文件最好命名为:-xxx.tar.bzip2

压缩
格式:tar [参数] [压缩包文件名] [原材料]
tar zcvf test.tar.gz test.txt

解压缩
格式:tar [参数] [压缩包文件名]
tar zxcf test.tar.gz
其后可接-C 解压目录,来指定解压放置的地点

rar命令

需要安装 sudo apt-get install rar

1
2
3
4
5
6
7
压缩:
rar a 压缩包名(不用指定后缀) 压缩内容
rar a test test.txt
如果压缩的内容包括目录,后面接 -r
解压缩
rar x 压缩包名 解压目录
rar x test aa/

zip/unzip命令

1
2
3
4
5
6
7
8
压缩
zip 压缩包名(不用指定后缀) 压缩内容
zip test test.txt
如果压缩的内容包括目录,后面接 -r
解压缩
unzip 压缩包名
unzip test.zip
解压至指定目录,后面接-d 指定目录

查看系统、进程状态命令

uname命令

显示系统的重要信息,例如内核名称、内核版本

1
uname -a

ps命令

1
ps -aux # 显示所有包含其他使用者的进程

-aux输出格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

来源:Linux ps 命令 | 菜鸟教程 (runoob.com)

top命令

top命令会默认按照CPU的占用情况,显示占用量较大的进程。

top命令可以看到总体的系统运行状态和cpu的使用率 。

%us:表示用户空间程序的cpu使用率(没有通过nice调度)

%sy:表示系统空间的cpu使用率,主要是内核程序。

%ni:表示用户空间且通过nice调度过的程序的cpu使用率。

%id:空闲cpu

%wa:cpu运行时在等待io的时间

%hi:cpu处理硬中断的数量

%si:cpu处理软中断的数量

%st:被虚拟机偷走的cpu