Linux 学习(韩顺平Linux 教程学习笔记)一

654 阅读10分钟

Linux 学习笔记

最近重新开了一遍韩顺平老师B站的liunx教程,这里是一些比价的纪录。方便自己以后查看

Linux文件和目录管理

为了方便管理文件和目录,Linux 系统将它们组织成一个以根目录 / 开始的倒置的树状结构。Linux 中的目录,和 Windows 系统中的文件夹类似,不同之处在于,Linux 系统中的目录也被当做文件看待。

bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  src  srv  sys  tmp  usr  var
一级目录功能(作用)
/bin/存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/设备文件保存位置
/etc/配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liyf
/lib/系统调用的函数库保存位置
/media/挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定
/opt/第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
/sbin/保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空

Linux /usr目录

usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。

子目录功能(作用)
/usr/bin/存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/ 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。
/usr/lib/应用程序调用的函数库保存位置
/usr/XllR6/图形界面系统保存位置
/usr/local/手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share/应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src/源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
/usr/includeC/C++ 等编程语言头文件的放置目录

Linux /var 目录

/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。

Linux命令的基本格式

[root@localhost ~]# 命令 [选项] [参数]

  • Linux 的选项又分为短格式选项(-l)和长格式选项(--all)。短格式选项是英文的简写,用一个减号调用
ls -l
ls --all
  • 参数是命令的操作对象,一般文件、目录、用户和进程等可以作为参数被命令操作
ls -l /home

vi/vim

三种模式:一般模式、编辑模式、命令行模式

  • 正常模式:以vim打开一个档案就是直接进入了一般默认(这是正常的模式),在这个模式中,可以通过上下左右来移动光标,你也可以使用【删除字符】【删除整行】,也可以使用【复制】【粘贴】来处理你的文件数据;

  • 编辑模式:按下i,l,o,O,a,R,r等任意一个字母之后才会进入编辑模式,一般情况按下i即可

  • 命令行模式:在这个模式当中,可以提供你相关指令,完成读取,存盘,替换vim,显示行号等操作是在此模式下完成的

stateDiagram-v2

一般模式 --> 编辑模式
编辑模式 --> 一般模式
一般模式 --> 命令行模式
命令行模式 --> 一般模式
执行动作所在模式具体快捷键操作
1.拷贝一般模式拷贝当前行== yy ; 拷贝当前行向下5行 ==5yy ; 黏贴用 p
2. 删除一般模式删除当前行 dd ; 删除当前行向下5行 5dd
3.文件中查找一般模式 、命令行模式/关键字 ; 回车 查找; n 下一个;
4. 设置行号命令行模式:set nu ; :set nonu ;
5. 撤销一般模式u = 撤销
6. 快速定位一般模式gg=首行 ; G = 末行 ;
7.快速定位某行一般模式20 , shift + g == 快速定位到20行

开机重启、用户登录与注销

开机和重启

# shutdown 
 shutdown - Halt(停止), power-off(关机) or reboot(重启) the machine
执行动作所在模式
shutdown -h now立刻进行关机
shutdown1分钟后会关机(等同下面)
shutdown -h 11分钟后会关机
shutdown -r now现在重新启动计算机
halt关机,作用和上面一样
reboot现在重新启动计算机
sync将内存数据同步到磁盘

用户登录和注销

# su切换用户
[tom@VM-0-8-centos ~]$ su liyf
# 显示当前登录用户
[liyf@VM-0-8-centos tomHome]$ whoami
liyf
# 注销用户
[liyf@VM-0-8-centos tomHome]$ exit
exit
[tom@VM-0-8-centos ~]$

用户管理

用户操作

1.添加用户

  • 语法: useradd 用户名
  • useradd -d 给创建的用户指定家目录
  • useradd -g 指定用户组
[root@VM-0-8-centos milan]# useradd milan
[root@VM-0-8-centos milan]# cd /home/milan/
[root@VM-0-8-centos milan]# useradd -d /home/milanHome milan2
[root@VM-0-8-centos ~]# su milan2
[milan2@VM-0-8-centos root]$ cd ~
[milan2@VM-0-8-centos ~]$ pwd
/home/milanHome

2.指定/修改密码

基本语法:passwd 用户名

3.删除用户

  • userdel 用户名 删除用户但保留家目录
  • userdel -r 用户名 删除用户同时删除用户的家目录
[root@VM-0-8-centos ~]# userdel milan
[root@VM-0-8-centos ~]# userdel -r milan2
[root@VM-0-8-centos home]# ls /home
liyf  milan  tomHome

4.查询用户信息

id 用户名

[root@VM-0-8-centos home]# id root
uid=0(root) gid=0(root) 组=0(root)

用户组

1.增加用户组

groupadd 组名

2.删除用户组

groupdel 组名

用户相关的文件

1.用户的配置文件:/etc/passwd

learn:x:1002:1003::/home/learn:/bin/bash
tom:x:1004:1005::/home/tomHome:/bin/bash

2.口令的配置文件:/etc/shadow

learn:$1$YcRGecOO$nEBZRAFqT4t1k3me2Lhpi0:18943:0:99999:7:::
tom:!!:18956:0:99999:7:::

3.组的配置文件:/etc/group

FE:x:1006:
RD:x:1007:

运行级别

运行级别:

  • 0:关机
  • 1:单用户
  • 2:多用户状态没有网络服务
  • 3:多用户状态有网络服务
  • 4:系统未使用
  • 5:图形界面
  • 6:系统重启 常用运行级别:3和5

init [0123456] 切换不同的运行级别

帮助命令

man 查看帮助信息

文件目录

cd

切换目录

pwd

显示当前路径

ls

查看目录下文件

mkdir

创建目录

rmdir

删除空目录

touch

创建文件及修改文件时间戳

ln

建立链接(硬链接和软链接)文件 ln -s target link_name

cp

复制文件和目录

cp source dest
# -r 递归赋值整个文件夹

rm

删除文件或目录

选项:
-r 递归的删除
-f 强制删除   

mv

移动文件或改名

mv source dest

cat

查看文件内容

# cat 文件名
# -n 显示行号
# 通常与管道指令 | 一起使用

more

以全屏的方式按页显示文件内容 more 文件名

操作说明
空格键向下翻一页
Enter键向下翻一行
q退出
ctrl + F向下滚动一屏
ctrl + B返回上一屏
=输出当前的行号
:f输出文件名和当前的行号

less

分屏查看文件内容 比more指令更加强大 less 文件

操作说明
空格键向下翻一页
pagedown向下翻一页
pageup向上翻页
q退出
/字符串向下搜寻「字符串」的功能:n向下查找,N向上查找
?字符串向上搜寻「字符串」的功能:n向下查找,N向上查找

echo

输出内容到控制台

head 指令

用于显示文件开头的内容
head 文件 查看文件头10行的内容
head -n 5 文件 查看文件头5行的内容

tail

用于显示文件尾部的内容
tail 文件 查看文尾部10行的内容
tail -n 5 文件 查看文件末尾5行的内容
tail -f 实时跟踪文件的所有更新

> 指令和 >> 指令

>输出重定向
>> 追加

时间和日期相关指令 p34

date

显示当前日期 date -s 时间字符串 设置时间

[liyf@VM-0-8-centos ~]$ date
20211129日 星期一 22:39:38 CST
[liyf@VM-0-8-centos ~]$ date +%Y
2021
[liyf@VM-0-8-centos ~]$ date +%m
11
[liyf@VM-0-8-centos ~]$ date +%d
29
[liyf@VM-0-8-centos ~]$ date '+%y-%m-%d %H:%M:%S'
21-11-29 22:39:17

cal

查看日历 不加选项显示本月情况 cal 2021 显示整年日历

查找指令

find

从指定目录向下递归的遍历各个子目录,将满足条件的文件或目录显示在终端
find是很强大的查找命令,但是花费的时间多,每一次查询都要直接去硬盘进行查找。

find [搜索范围] [选项] 1.与时间有关的参数

-mtime n: n 为数字,意思是几天之前的"一天之内"被更改过的文件

-mtime +n: 列出n天之前(不包含n本身)被更改过的文件名

-mtime -n: 列出n天之内(包含n本身)被更改过的文件名

-nerer file: file为存在的一个文件,列出比file还要新的文件名

2.与用户或用户组有关的参数

-uid n:n 为数字,就是用户的UID,记录在/etc/passwd文件中与用户名对应的数字
-gid n: n 为数字,就是用户组的UID,记录在/etc/group文件中与用户组名对应的数字
-user name: name 是用户账号的名称
-group name: name 是用户组的名称
-nouser: 寻找文件的所有者不在/etc/passwd的文件
-nogroup: 寻找文件的用户组不在/etc/group的文件

3.与文件权限有关的参数

-name filename:查找文件名为filename的文件
-size [+-]SIZE:查找比SIZE还要大(+)或小(-)的文件,SIZE的规格:
            c:代表byte k:代表1024byte,查找比50kb还大的文件就是"-size +50k"
-type TYPE: 查找文件类型为TYPE的文件,类型一般有:
            一般正规文件(f)、设备文件(b、c)、目录(d)、socket(s)等
-perm mode: 查找文件权限正好是mode的文件,这个mode为类似chomd的属性值,下同
-perm -mode:查找文件权限“必须全部包含mode的权限”的文件,当我们要查找一个权限为"-rwxr--r--",
            即0744的文件,使用-perm -0744 ,当一个文件为"-rwsr-xr-x",即0755时也会被列出来,因为"-rwsr-xr-x"的属性已经包含了"-rwxr--r--"的属性
-perm +mode:查找文件权限“包含任一mode的权限”的文件

locate

locate可以快速定位文件路径

依赖于事先构建的索引,在文件系统上查找符合条件的文件;

手动更新索引数据库:

  • updatedb 使用方法: locate [OPTION] KEYWORD
//查找etc目录下以sh开头的文件
locate etc/sh

whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s) 。如果省略参数,则返回所有信息。同locate一样,查询数据库(/var/lib/locatedb)文件。所以和locate一样,查找新增加的文件前,需要先使用updatedb命令,手动更新数据库。

$whereis [选项] [程序名]

[liyf@VM-0-8-centos ~]$ whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz
[liyf@VM-0-8-centos ~]$ whereis -b find
find: /usr/bin/find
[liyf@VM-0-8-centos ~]$

which

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

 which passwd
/usr/bin/passwd

grep

过滤查找通常和管道符一起使用 -n 显示行号 -i 忽略大小写

压缩和解压

gzip/gunzip

用于压缩和解压文件

[liyf@VM-0-8-centos ~]$ gzip test.txt
[liyf@VM-0-8-centos ~]$ ls
test.txt.gz 
[liyf@VM-0-8-centos ~]$ gunzip test.txt.gz
[liyf@VM-0-8-centos ~]$ ls
test.txt

zip/unzip

zip用于压缩文件 unzip用于解压文件

zip [选项] xxx.zip 要压缩的内容 unzip [选项] xxx.zip zip常用选项:

  • -r 递归压缩 即压缩目录 unzip xxx.zip -d [] unzip常用选项:
  • -d 指定解压后文件的存放目录

tar

tar指令是打包语句,最后打包后的文件是.tar.gz文件

tar [选项] xxx.tar.gz 打包的内容

选项说明
-c产生.tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x捷报.tar文件
[root@VM-0-8-centos ~]# tar -zcvf a.tar.gz a.js b.js test/
a.js
b.js
test/
[root@VM-0-8-centos ~]# ls
a.js  a.tar.gz  b.js  test
# 解压到指定目录
[root@VM-0-8-centos ~]# tar -zxvf a.tar.gz -C ./dist/
a.js
b.js
test/
[root@VM-0-8-centos ~]# ls
a.js  a.tar.gz  b.js  dist  test
[root@VM-0-8-centos ~]# cd dist/
[root@VM-0-8-centos dist]# ls
a.js  b.js  test

鸟叔的Linux私房菜

LINUX-TUTORIAL

笔记参考

笔记参考