Linux基础学习笔记

内容目录

内容目录

前言

0 Linux发展历程

0* 常用命令速查表

1 终端命令格式

2 终端技巧

3 基础指令

3.1 两个常用指令

3.1.1 ls

3.1.2 cd

3.1.3 两类路径的辨析

3.2 目录、文件的创建与删除

3.2.1 touch

3.2.2 mkdir

3.2.3 rm

3.3 拷贝、移动文件

3.3.1 tree

3.3.2 cp

3.3.3 mv

3.4 查看文件内容

3.4.1 cat

3.4.2 more

3.4.3 cat、more对比

3.4.4 grep

3.5 其他

3.5.1 echo,>, >>

3.5.2 | — 管道

4 远程控制

4.1 shutdown

4.2 网卡、IP地址

4.2.1 ifconfig

4.2.2 ping

4.3 远程登录、文件复制

4.3.1 SSH介绍

4.3.2 SSH使用

4.3.3 scp

4.3.4 免密码登录

4.3.5 配置别名

5 用户与权限

5.1 用户与权限简介

5.1.1 详解ls -l

5.1.2 chmod

5.2 用户、组的管理

5.2.1 组的管理

5.2.2 用户的管理

5.2.3 查看用户信息

5.2.4 主组与附加组

5.2.5 文件权限修改·II

5.3 其他内容

5.3.1 which

5.3.2 bin与sbin

5.3.3 切换用户

6 系统信息

6.1 时间

6.1.1 date

6.1.2 cal

6.2 磁盘

6.2.1 df -h

6.2.2 du -h [directory]

6.3 进程

6.3.1 ps

6.3.2 top

6.3.3 kill

7 其他常用

7.1 find

7.2 ln

7.3 tar

7.4 apt

想说的话


前言

本篇文章是笔者基于MacOS系统学习Linux基础时撰写,原笔记在Notion上创作,复制到本地后进行了调整、美化,添加了大纲,并在命令速查表中添加了超链接,点击部分小标题可以跳转到相应的位置。受限于系统,关于Ubuntu、虚拟机的装配和Windows系统支持相关的内容均未涉及,如有需求还请劳烦ChatGPT。 ​ 为了保证阅读体验、起到更好的复习作用,内容相对比较详实,可以通过目录快速查看将要学习的内容,那么接下来,进入正题。


0 Linux发展历程

Unix — Ken Thompson & Dennis M.Ritchie 来自贝尔实验室,为了在实验室的电脑上玩游戏而开发(原本电脑系统并不能运行),Ken以汇编语言写出原型,基于BCPL语言,Ken设计出B语言,写出第一个UNIX操作系统。随着Dannis加入,他改造了B语言,优化其跨平台性,设计出C语言(BCPL的第二个字母,具有强大的移植性),最终Unix通过C语言开发完成 (1973)

Minux — Andrew S. Tanenbaum 后来Unix源代码私有化,出于教学目的,Andrew开发了为学生演示操作系统运作细节的新系统Minix。

Linux — Linus Benedict Torvalds 年仅21岁的Linus对Unix颇感兴趣,基于Minux开发了一套磁盘驱动和文件系统,为了便于从学校主机下载和读写文件,后来成为Linux系统的内核 (1991)


0* 常用命令速查表

命令对应英文功能
基础操作
lslist列出当前目录下内容
pwdprint work directory查看当前目录
创建、删除
cd [目录名]change directory切换目录
touch [文件名]touch如果文件不存在,新建一个
mkdir [目录名]make directory创建目录
rmremove删除指定文件
拷贝、移动
tree以树状图列出目录结构
cpcopy复制文件或目录
mvmove移动文件或目录;目录重命名
查看内容
catconcatenate查看内容、创建文件、文件合并、追加内容等
more分屏显示内容
grep搜索文本文件内容
其他
echo在终端显示参数指定的文字
重定向>>>将结果输出/追加到文件
管道 |
clearclear终端清屏
远程控制
shutdown控制电脑关闭
ifconfigconfigure a network interface查看、配置当前网卡配置信息
ping检测目标的ip地址链接是否正常
sshsecure shell关机、重启
scpsecure copy复制文件
ssh-keygenkey generate生成KEY文件
ssh-copy-idcopy the public id将公钥拷贝至远程设备,实现免密码
权限相关
chmodchange mod修改权限
chgrpchange group修改组信息
chownchange owner修改拥有者
sudosubstitute user do以root身份执行
组管理
groupadd添加组
groupdel删除组
cat /etc/group确认组信息
用户管理
useradd -m -g新建用户
passwdpassword设置密码
userdel -r删除用户
cat /etc/passwdgrep
id [username]查看用户UID,GID
who查看当前所欲登录的用户列表
whoami查看当前登录用户的账户名
usermod用于指定用户的主组、附加组、登录使用的Shell
用户切换
susubstitute切换用户
系统信息
date查看系统时间
calcalendar查看日历
df -hdisk free显示磁盘剩余空间
du -hdisk usage显示目录下文件大小
ps auxprocess status查看进程状态
top动态显示当前的进程情况,自动排序
kill
其他常用命令
find查找文件
lnlink创建软链接
tar文件压缩、解压缩
aptadvanced packaging tool安装、卸载组件


1 终端命令格式

终端就是Linux系统的“命令行”,是系统给出的解释器,通过输入各种命令可以实现计算机上任何图形界面能实现的功能。 命令 具有固定的格式:

command [-options] [parameter]

中括号代表该部分可选,每一部分之间需要用空格分隔开;

command命令名,相应功能的英文单词或单词缩写; options选项,可以对命令控制; parameter传给命令的参数;

  • 对任何终端命令,都可以用 cmd --help 和 man cmd 对命令详细使用方法进行查询。


2 终端技巧

可以打开终端设置,对窗口大小、文字大小、终端主题等进行自定义设计,网上有详细设置教程,此处便不多赘述。 终端使用也有些小技巧,如下给出:

  • 自动补全

    通过 Tab键 补全:对文件、目录、命令均可补全。 使用方法:输入前几个字母,单击Tab键将给出候选结果,包括当前目录下含有关键字的对象。若只有一个对象,单击Tab时就能补全。

  • 常用命令

    可以在使用过的命令间选择(有些shell不可用)。

  • 通配符(又称正则表达式,用于模糊搜索,在所有文件的表示当中均可使用)

    字符含义
    *代表任意个字符
    ?代表一个字符
    [], [abc]匹配一个字符组,给出某一个字符的可能取值,筛选出满足这些取值的结果
    [a-f]表示a-f都为可能取值


3 基础指令

本节介绍终端使用的基础指令,包括查看指令、文件与目录管理与操作指令等,这些指令大都使用频率较高,熟练使用将帮助你实现许多目标。

3.1 两个常用指令
3.1.1 ls

使用方法:ls Linux中文件或目录名称最长为256个字符,隐藏文件以.开头。 特殊符号:~代表当前用户目录;.代表当前目录;..代表上层目录。

-a 显示所有指定目录下的子目录、文件,包括隐藏文件 -l 列表显示目录下的文件详细信息 -h 配合-l,以人性化方式显示文件大小(用K,M,G表示较大数字)

  • 选项的 合并写法 :命令写成ls -l -hls -lh效果是相同的

  • pwd 命令用于打印当前目录

3.1.2 cd

使用方法:cd directory_path 所有名称和目录都 大小写敏感 ,需要注意!

命令含义
cdcd ~回到当前用户主目录
cd .保持当前目录不变
cd ..回到上级目录
cd -在最近两次工作目录之间切换
3.1.3 两类路径的辨析

绝对路径:从/~开始,文件在系统中的完整路径。 相对路径:并非从/~开始,代表文件相对当前所在的路径。

3.2 目录、文件的创建与删除
3.2.1 touch

使用方式:touch file 如果文件不存在,创建一个文件;如果文件存在,修改文件的末次修改日期。

3.2.2 mkdir

使用方式:mkdir directory

-p 递归创建嵌套目录:mkdir -p a/b/c/d

  • 不可创建和文件同名的目录!

3.2.3 rm

使用方式:rm file 文件将直接从磁盘上删除,无法恢复 ,使用需谨慎。

-r 递归删除目录、子目录与其中的文件 -f 强制删除文件,忽略任何提示

3.3 拷贝、移动文件
3.3.1 tree

使用方式:tree [path] 可以查看指定目录下的所有目录、文件的树状图。

-d 仅显示目录,隐藏文件

3.3.2 cp

使用方法:cp origen_file/directory target_file/directory 注:为方便阅读,后续将使用f/d代替file/directory

-i:当文件已存在时给出覆盖提示,提升安全性 -r:递归复制目录及目录下的所有子目录和文件,要求源路径必须是一个目录

3.3.3 mv

使用方法:mv target_f/d target path 可以更改文件或目录位置,由于本质上是修改指针,无需递归修改目录下子目录的指针,因此不需要-r命令。

-i 当文件已存在时给出覆盖提示,提升安全性

源文件与目标文件的位置相同,名称不同时即为 重命名

3.4 查看文件内容
3.4.1 cat

使用方法:cat file 用于查看内容、创建文件、文件合并、追加内容等多个功能,将 一次性显示 所有文本内容。

-b 对非空输出行进行编号 -n 对每一行进行编号

终端内 比较有用!

3.4.2 more

使用方法:more file 用于分屏显示文件内容,每次显示一页,浏览可操控:

␣ 、↩︎:翻页;滚动一行 b、f、q:上一屏;下一屏;退出

3.4.3 catmore对比

前者直接打印出文本全部内容;后者给出部分内容,可进一步分段查看。

3.4.4 grep

使用方法:grep + 关键词 + [目标文件] 实现文本搜索,允许进行 模式查找(正则表达式)

-n 显示行号 -v 显示不含关键词的行(取反搜索) -i 忽略大小写进行查找

常用的模式查找:

行首模式 ^a:搜索以 a 开头的行 行尾模式 ke$:搜索以 ke 结尾的行

3.5 其他
3.5.1 echo>, >>

使用方法:echo cmd > file echo能够显示命令传入的参数;重定向将echo命令执行的结果输出(>)或追加(>>)到指定文件当中。

换一种说法,输出是覆盖操作,追加是续写操作

值得一提的是,当使用echo对内容重定向到某一对象时,若该对象不存在将自动创建该对象,这意味着echo与重定向能在创建文件时写入文件内容

3.5.2 | — 管道

使用方法:cmd | cmd 允许将一个命令的输出作为另一个命令的输入,左端塞东西,右端读东西

ls -lha | more:执行结果分屏显示 ls -lha | grep Do:执行结果筛选显示


4 远程控制

Linux应用最广泛的是服务器,这意味着你将从个人(或是公司的)电脑连接到不知道在哪里的机房。前面学到的指令如果在本地设备,直接在图形界面上进行操作就可以了,用抽象的指令反而更加繁琐。但来到了服务器操控,窗口内的代码操作就显示出它的威力来。

4.1 shutdown

使用方法:shundown 控制远程设备安全关闭、重新启动。

-c 取消关机计划,输入关机命令的一分钟内有效 -r 重新启动

一般情况下都要使用 -r 选项,远程关闭设备不自启动的话会带来诸多麻烦。

支持更多参数:

 # now表示现在关机
 $ shutdown now
 ​
 # 可以指定关闭时间(今天)
 $ shutdown 19:20
 ​
 # 可以计时关机
 $ shutdown +15
 ​
 # 取消关机计划
 $ shutdown -c
4.2 网卡、IP地址

网卡为计算机提供网络通信能力,IP地址是每台联网电脑的 身份证

127.0.0.1称为本地回环/环回地址,用于测试本机网卡工作状态。

4.2.1 ifconfig

使用方法:ifconfig 可以查询电脑中网卡配置信息,一般是一个实体网卡+多个虚拟网卡,返回信息一般多且乱。

ifconfig | grep inet 可以快速查看到网卡对应的IP地址

4.2.2 ping

使用方法:ping IP_address 连接到其他设备,发送数据包进行通信,用于检测本机与远程连接的设备之间网络是否通畅,显示延迟时间、丢包率等信息。

ping 127.0.0.1 检测本地网卡是否工作正常

4.3 远程登录、文件复制
4.3.1 SSH介绍

SSH(Secure SHell)是一种协议,加密、压缩传输数据,有效防止远程管理过程中的信息泄露,安全性高,速度快。 ssh客户端使用ssh协议,需要在主机、远程设备安装SSH客户端,是常用的服务器管理软件。

域名:IP地址的别名,也就是常说的 网址 ,是一串用.分隔的名字,方便记忆。 端口号:访问服务器特定功能的标识号,IP地址决定设备,端口号决定设备上具体的应用程序。

4.3.2 SSH使用

登录方法:ssh [-p port] user@remote

user 是远程服务器上的用户名,默认是当前用户 remote 是远程服务器地址 port 是SSH Server的端口,默认值为22

exit断开连接

登录到其他设备,通过指令对远程连接的设备进行管理。 第一次连接时将 获取授权信息 ,创建一个文本文件记录对本机已知的设备。

  • 只能在Linux、Mac下使用,Windows需要第三方客户端代理(PuTTY,XShell)。

4.3.3 scp

使用方法:scp -P port 01.py user@remote:Desktop/01.py

基于SSH的文件远程拷贝,实现两台设备间的文件通信 使用格式与ssh差不多,但端口选项 -P 是大写;注意拷贝目录是以远程对象的user为参考的相对路径,并且要写冒号。

-r 递归复制目录 -P 指定端口

4.3.4 免密码登录

配置公钥流程:

  1. ssh-keygen创建密钥文件

  2. ssh-copy-id -p port user@remote将公钥文件传输到服务器

在此解释服务器加密原理:本地使用私钥加密、解密数据;服务器使用公钥加密、解密数据,即采用非对称加密算法:公钥加密的数据需要私钥解密,私钥加密的数据需要公钥解密。当服务器存有本地公钥文件,进行命令操作时服务器将调取秘钥直接授权,就不再需要手动输入了。

4.3.5 配置别名

可以用一个别名替代user@remote,使用时更加简便

 # 在~/.ssh/config文件追加(echo >>)如下内容:
 Host mac
     Hostname remote
     User username
     Port 22

5 用户与权限

5.1 用户与权限简介

每个系统中 至少拥有一个账号 ,不同的账号对于不同系统资源的使用权限不同。管理每个用户的权限较为繁琐,可以定义不同的 ,组和用户一样可以被赋予、剥夺对系统资源的使用权限。配置好不同级别的组的权限后,将用户放入不同的组中就可以直接授予用户不同级别的权限。

在Linux中可以指定每一个用户对文件或目录的权限:

权限缩写数字代号
readr4
writew2
executex1
5.1.1 详解ls -l

使用这个命令将显示一系列信息,现在可以解释这些信息的具体含义了:

 -rw-r--r--@  1 tj.  staff    873653  6 29 16:31 急诊单.docx
 -rw-r--r--@  1 tj.  staff     28941  6 26 11:17 自变量正确.png
 drwxr-xr-x@ 20 tj.  staff       640  6 25 01:46 未命名文件夹
 -rw-r-----@  1 tj.  staff     29184 12  6  2022 最新软件下载.xls

@前面依次是文件类型标识符+用户权限+组权限+访客权限; 后面依次是硬链接数,用户名,组,对象大小,创建时间,名称

5.1.2 chmod

使用方法:chmod +/- [rwx] 文件名/目录名 最常用的修改文件权限命令

目录的可执行权限为操作、查看目录的权限

5.2 用户、组的管理

由于不同的用户有不同权限,当需要以很高权限执行命令时,系统支持 sudo 命令(Super User DO)作为命令语句起始,代表以root用户身份执行,放在Windows系统中相当于Admin了。需要注意,用户需要在sudo附加组中才可以使用本命令,附加组的概念后续将会提到。

另外,每次使用sudo都需要输入密码,输入后有五分钟的有效期限。

5.2.1 组的管理

组的创建方法:sudo groupadd group_name

groupadd 新建组 groupdel 删除组

用命令 cat /etc/group 查看组信息,配合grep过滤显示想找的目标信息

修改组 的命令使用方法如下: chgrp -R 组名 文件名/目录名修改目录或文件的组

5.2.2 用户的管理

使用方法:useradd -m -g 组 新建用户名

-m将自动建立用户家目录,一般必选! -g指定用户所在的组,否则建立一个同名的组

如下指令可以对用户进行其他管理:

passwd 创建、修改用户对应的密码 userdel -r 删除用户,选项-r自动删除对应家目录

用命令 cat /etc/passwd 查看用户是否被添加

5.2.3 查看用户信息

id [username]

查看用户UID,GID 命令 cat /etc/passwd 可以查看设备上所有用户的具体信息。

passwd文件以如下格式记录用户信息: username;password(x);UID;GID;fullname/locao account;/home/username;shell

who 查看当前所有登录的用户列表 whoami 查看当前登录用户的账户名称

5.2.4 主组与附加组

主组在新建用户时指定,是/etc/passwd里GID对应的组 附加组在/etc/group的最后一列表示,指定用户的附加权限

用户的主组、附加组与登录默认shell用命令usermod设置。 使用方法如下:

主组:usermod -g group username 附加组:usermod -G group username 设置默认Shell:usermod -s /bin/bash username

5.2.5 文件权限修改·II

除了之前提到的chgrp,chmod,还有一个命令chown。

使用方法:chown username f/d 用于修改文件、目录的拥有者。

对chmod命令进行扩展,更加常见的用法如下: chmod -R xxx 文件名/目录名

三个x分别是拥有者、组、其他用户的权限

按r, w, x=4, 2, 1分别计算权限 数值总和 ,填入对应位置进行设置,例如:

 # 这几个例子均为常用权限设置
 777 → u=g=o=rwx
 755 → u=rwx g=o=rx
 644 → u=rw g=o=r
5.3 其他内容
5.3.1 which

which用于查看某一执行命令的所在位置,比如学过的lsmkdir等,输出可执行命令文件位置。

  • cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置

5.3.2 bin与sbin

Linux 中,绝大多数可执行文件都保存在 /bin/sbin/usr/bin/usr/sbin 中。

/binbinary)是二进制执行文件目录,主要用于具体应用 /sbinsystem binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理

/usr/binuser commands for applications)后期安装的一些软件 /usr/sbinsuper user commands for applications)超级用户的一些管理程序

5.3.3 切换用户

使用方法:su [-] username

从当前用户切换到另一个用户,使用exit命令回到切换前的用户下。 如果不加username将切换到root用户下,但容易误操作,不太安全。

- 在切换用户时cd到用户家目录

6 系统信息

6.1 时间
6.1.1 date

查看当前系统时间

6.1.2 cal

查看当前月的日历

-y 查看近一年的日历

6.2 磁盘
6.2.1 df -h

查看磁盘剩余空间

6.2.2 du -h [directory]

显示目录下文件大小

6.3 进程
6.3.1 ps

不加选项时只能看到当前用户正在运行的进程,只显示没有控制终端的进程;但全部显示又会生成非常繁杂的信息,所以使用这个命令时需要按需求选用选项,也可以配合grep筛选得到的结果。

a 显示终端上所有进程,包括其他用户 u显示进程详细状态 x显示非终端控制的进程

  • 这个命令的选项不需要-!!

6.3.2 top

动态显示当前系统进程,自动排序,可以一目了然占用较高的内存

q 直接退出进程监视

6.3.3 kill

使用方法:kill PID 需要知道进程的PID,用来结束进程

-9 强行终止无法kill的进程

  • 使用时要谨慎!!


7 其他常用

列举了几个常用但不属于如上内容分类的代码,

7.1 find

使用方法:find [path] -name "keyword" 查找符合条件的文件,默认路径为当前目录

  • 可使用通配符进行高级检索!

7.2 ln

使用方法:ln -s origin_path linked_file

-s创建软链接,类似于windows系统下的快捷方式。 如果没有-s选项将创建一个硬链接文件,二者占用相同大小的硬盘空间,实际使用极少。

创建时使用的路径是绝对路径! 如果创建时使用相对路径,创建的链接文件移动位置后将失效:文件定向出现问题。

  • 硬链接数与软连接数辨析

linux的文件名与文件数据分开存储,类似指针,文件名指向数据

硬链接直接创建指向文件数据的文件名;软链接创建一个新文件,数据指向链接源文件。

linux中文件的硬链接数==0时才会被删除。

7.3 tar

常用的打包工具,能将一系列文件打包到一个大文件中,同样支持逆过程,本身没有压缩功能。如果想要实现压缩,需要调用gzip或者bzip2组件,只需使用对应的选项即可。

需要文件后缀.tar:tar -cvf 123.tar

-c 生成档案文件,创建打包文件 -x解开档案文件 -v列出归档接档详细过程与进度 -f指定文件名称,需要放在选项的最后 -C支持解压缩到指定目录,目录必须存在

gzip

tar命令中增加-z选项直接调用gzip 文件后缀.gz:tar -zcvf 123.tar.gz

bzip2

用法与gzip相同,扩展名为.bz2,调用选项-j

7.4 apt

Linux下常用的一款安装包管理工具,支持在终端中方便地安装、卸载、更新软件包,从软件源获取资源进行下载,软件源可以进行配置。

命令有install remove upgrade,需要使用sudo

想说的话

这是学习CS以及Markdown写下的第一篇完整的学习笔记,算是记录了一个开始,文章尽可能做到了写下的内容都是正确的,如有谬误敬请指正。后面如果学习接触到可以补充的地方我也会订正、增加内容。接下来再接再厉!

--2023.7.7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值