天天看点

一篇文章讲完Linux基础

作者:Antonov

1、更新换源文件

第一步:下载我的 sources.list 文件 放到共享目录下

第二步:在终端中 共享目录下 找到sources.list 文件

第三步:进入linux 下的 /etc/apt 目录 执行以下指令

sudo rm sources.list

即删除 该目录下 的 换源文件 sources.list

注意:此时需要输入密码 并且密码输入是隐式的

第四步:进入共享目录下 再次找到 sources.list 文件后

执行以下指令 sudo cp sources.list /etc/apt

第五步:再次进入 /etc/apt 目录 查看 sources.list文件是否存在

即执行指令 ls 看文件是否存储

第六步:如果文件存在 则 执行以下指令换源

sudo apt-get update

注意:需要有网络才可以换源成功

2、安装 vim编辑器

注意:请先进入共享文件夹下

首先测试自己的vim编辑器是否可用

测试方法:

vim 1.txt

可以看到 打开了一个文件

退出 请先按esc键 然后 输入 :wq 即可退出

安装方式 即执行以下指令即可: sudo apt-get install vim

3、获取联机帮助

linux下提供了两种联机帮助的方式

3.1、man

功能最强大 最专业 最齐全的 在线帮助手册

使用方式: man 页码 指令or函数

退出:使用q键即可退出

ex: 比如 linux的ls这条命令 不会用 直接 man ls就可以查到他的用法

ex: 在我们学习的 C语言中 有部分函数 不会使用 malloc 不会用 man malloc 即可

关于页码是可以缺省的

一般情况下 系统的命令在第1页

ex: man 1 ls

标准库函数 是在 第3页

ex: man 3 printf

系统函数 一般是在 第2页

ex: man 2 read

3.2、info

使用方式 和 man是相同的 但是内容没有man齐全

使用q退出

ex: info printf

4、基本系统维护命令

4.1、reboot

重启命令 如果提示你没有权限 则需要添加 sudo

即: sudo reboot

4.2、shutdown

关机命令 如果提示没有权限则添加 sudo

使用方式如下:shutdown -n now 可以设置多久之后关机

关于关机指令还有其他指令:half power off

ex: shutdown 2 now 表示 2minutes 后关机

4.3、sudo

切换到高级用户 即root用户 可以理解为给权

ex: sudo apt-get install vim

有一个权限 可以更新获取安装vim编辑器

ex: sudo -s

即切换到高级用户,s表示的是 super user 即超级用户 拥有一切权限

如何退出 超级用户 使用 exit即可

注意访客是不可以切换的

sudo在一个终端中如果输入了一次密码则无需再次输入

4.4、echo

即输出的意思

echo "字符串"

即将字符串输出到 终端

ex: echo "hello world!"

屏幕将输出 hello world!

echo 也可以 定向输入到文件中

ex: echo "hello world" >> 1.txt

将输出的结果输出到 1.txt这个文件中

注意 :如果这个文件不存在则创建

4.5、date

输出当前的时间和日期

ex: date

4.6、cal

输出所有的日历,当前日期使用阴影部分表示

也可以带参数输出

ex: 如果要查看 2018年的日历 那么输入命令 cal 年份

cal 2018

ex: 如果要指定某一年的某一月 那么输入命令 cal 月份 年份

cal 2 2022

4.7、clear 清屏命令

注意其并不是清屏 应该说是新开一屏

原因:之前输入的内容和输出的命名行 上翻即可看到

4.8、反号

按键位于 esc键的下面 就是~号这个按键

其在shell 脚本中有一个非常关键的作用 就是引用另一个命令的输出

作为当前命令的输入

ex: echo `date`

即echo 输出 date的输出

date命令的 输出结果作为了 echo命令的输入

这个输入可以理解为命令参数

4.9、>> 叫做流向符

即将结果流向到那个位置

ex: echo "hello" >> 1.txt

5、用户组信息文件及用户管理命令

5.1、用户组信息文件

位于 /etc/group 文件中 我们可以使用vim编辑器打开这个文件

命令格式:

vim /etc/group

文件信息如下:

root:x:0:

adm:x:4:syslog,gec

以上的信息其实分为四部分 使用的是 :隔开

第一部分 叫做用户组名

root 就是root用户组

adm 就是adm用户组

第二部分 x

加密口令

一般情况下 linux系统下的用户都存在口令

如果该字段为空则表示 这个用户组没有密码

第三部分:即小组编号

0 4 都表示第几组

第四部分:组内的用户

4组有两个用户

syslog system login 系统登录用户

5.2、基本用户管理命令

5.2.1添加用户:

adduser 用户名

ex: adduser zacoh

如果有提示没有权限加sudo

5.2.2删除用户:

userdel 用户名

5.2.3修改用户密码:

passwd 用户名

ex: passwd zacoh

5.2.4创建用户组:

addgroup 用户组名

ex: addgroup my

5.2.5删除用户组:

groupdel 用户组名

ex: groupdel my

6、linux下的进程管理

6.1、linux下进程的几种基本状态

D: 不可中断的进程

R: 正在执行的进程

S:静止的进程 或者 已经被中断的进程

T:暂停执行的进程

Z:将是进程

< 高优先级的进程

N 低优先级的进程

W 没有足够运行内存的进程 即资源不足的进程

L 正在分配内存的进程

什么是进程:就是你自己写的程序的执行过程就是进程

./a.out 就是创建一个进程执行程序

6.2、如何查看进程及其状态

6.2.1 ps 查看当前终端下的进程

ps 不加任何后缀 将出现以下内容

(进程号 系统启动时的终端设备 运行的时间 进程的名字)

PID TTY TIME CMD

2385 pts/2 00:00:00 bash

3340 pts/2 00:00:00 ps

ps -f 表示后面可以加后缀

f的取值如下:

-aux 查看进程的装填 可以看到CPU和内存的利用率

ex: ps -aux

-ef 详细查看进程的信息

ex: ps -ef

UID PID PPID C STIME TTY TIME CMD

用户ID 进程号 父进程号 进程的声明周期 开始运行的时间 系统启动时的终端设备 运行多久了 进程的名字

即哪一个进程

创建的他

死循环一直在执行 你想结束 我们一般是按 ctrl+ c

结束 你不小心按了ctrl+z 将会让这个正在运行的程序停止

接下来查看这个进程 看它的状态是什么

ps -aux

glc 3388 5.0 0.0 2024 276 pts/2 T 01:20 0:01 ./a.out

进程状态为 T 表示 暂停执行的进程

那如何干掉这个进程呢?使用以下指令

6.2.2 kill 即 发送一个信号给一个指定的进程

使用方法:

kill -信号 进程号

ex: kill -9 3385

就是给 3385 这个进程发送一个信号9,9表示杀死

6.2.3 top

实时并且按照CPU的占用率查看进程 相当于 windows下的 任务管理器

按q可以退出

6.2.4 pstree

以进程树的方式查看进程

ex: pstree

相当于以族谱的方式

按q键退出

7、linux基本操作指令

7.1、pwd

获取当前路径的 绝对路径名

使用方法: pwd

绝对路径:从根目录出发的路径,根目录以 / 表示,绝对路径就是以 /打头的

相对路径:从当前目录出发的,当前目录一般是以.表示,所以当前目录以.打头 也可以缺省

ex: /mnt/hgfs 这就是linux下的临时挂载目录

从 /即根目录出发 有一个mnt文件夹下又有一个hgfs文件夹

我们共享目录就在这个文件夹下

因为是将windows下的文件夹挂载在 linux下 这是一个绝对路径

./.. 这个表示当前目录的上一级目录 就是一个相对路径

相对于当前路径 可以缺省 ./ ..即可表示上一级目录

7.2、cd

进入一个目录或者切换工作路径

使用方法:cd 文件路径名

路径名 可以使相对路径 也可以是绝对路径

ex: cd /mnt/hgfs

进入挂载目录

/ 表示根目录 就是计算机目录

~ 表示家目录 就是你所处的一个个用户目录

是 HOME目录即主文件夹 不是home(就是根目录下的home)

home下的用户名文件内才是我们的家目录

. 表示当前目录

.. 表示上一级目录

- 表示上次访问的目录

7.3、ls

列出当前文件夹下的所有文件

使用方法:ls options

注意:此处使用也可以不需要options,即直接使用ls

则功能是列出当前文件夹下的所有文件名 不包括隐藏文件

ex: ls

options 表示的意思是后缀操作,可以取以下几个值:

-l

ex: ls -l

表示列出当前文件夹下所有文件的具体信息 但是不包括隐藏文件

之后会看到 以下的内容:

-rwxrw-rw- 1 gcl gcl 84380262 Jul 10 2015 arm-2009q3.tar.bz2

分段处理

第一个字符表示文件的类型:

- 表示该文件是一个普通文件 即ASCII码组成的文件

d 表示这是一个目录文件 也就是文件夹

l 表示这是一个链接文件 即快捷方式

p 管道文件

c 字符设备文件

b 块设备文件

s 套接字文件

第二个字符 到第10个字符表示该文件的操作权限

rwxrwxrwx

rwx

r 表示可读

w 表示可写

x 表示可执行

那么如果没有改权限则 使用 -表示

第二个到第四个 表示文件所有者权限

ex: 你买了一袋洗衣粉 你就是这袋洗衣粉的所有者

-rwxrw-rw-

文件所有者 具有可读可写可执行的权限

第五个到第七个 表示文件所属用户组的权限

ex: 你买了一袋洗衣粉放到了宿舍,则宿舍内部成员就是用户组内

-rwxrw-rw-

文件所有者 具有可读可写可执行的权限

rw- 即可读 可写 但是 不可执行

第八个到第十个 表示其他用户权限

就是除了你宿舍的之外 也就是其他宿舍的

-rwxrw-rw-

rw- 可读可写但是不可执行

此处的 1 表示用户组号

之后的两个gec 分别表示 用户组名 和用户名

后面有一个数据 这个数据表示文件的大小

后面的就是创建文件的日期

再后面 就是文件名字

-a

ex: ls -a

将所有文件列出来包括隐藏文件 (隐藏文件:linux下所有以 .开头的都是隐藏文件

-lh 人性化显示

ex: ls -lh

并没有多人性化,只不过将大小给了一个单位而已

-t

ex: ls -t

以时间顺序显示

7.4、touch

用于创建一个新的空文本文件

ex: touch 1.txt

7.5、file

查看一个文件的类型

使用方法:file 文件名

ex: file 1.txt

7.6、cp

文本拷贝命令

使用方法:cp 文件名 目标路径

ex: cp 1.txt /mnt/hgfs/share

7.7、mkdir

创建一个文件夹

使用方式:mkdir 文件夹名字

ex:mkdir zzz

7.8、rm

删除文件的命令

使用方式:rm 文件名

ex: rm 1.txt

rm没有办法直接删除文件夹,如果需要则需要要添加一个后缀

rm zzzz -rf

7.9、rmdir

删除一个文件夹

注意:仅可以删除空文件夹

ex: rmdir zzzz

7.10、mv

移动文件 其本质就是剪切

使用格式:mv 文件名 路径名

ex: mv 1.txt zzzz

注意:如果后面的跟的不是路径名而是一个文件名,这条命令将不是移动而是重命名

ex: mv 1.txt 3.txt

将1.txt 重命名为 3.txt

8、显示普通文件的常用指令

8.1、cat

将文件的内容输出到标准输出 即屏幕或者终端 可以理解为预览

使用方式:cat options 文件名

options可以缺省 即直接输出文件信息

ex: cat 2.txt

options 可以取以下值

-n 加上行号显示

-b 只给有文本的行加上行号 即空行不需要行号

-s 将多个空行 合并为一个空行

注意:由于版本问题可能导致无法有正确的结果操作

8.2、tac

反向输出 即先输出最后一行 ..... 最后输出第一行

ex: tac 2.txt

8.3、more

是cat的升级版 可以分屏显示文本内容

回车 是一行行显示

空格 是一页页显示

= 显示当前显示的行号

. 执行上一次的操作

ctrl+B 显示上一页

q退出显示

8.4、less

是more的升级版 能够兼容上下键

q退出显示

回车 是一行行显示

空格 是一页页显示

= 显示当前行号

ctrl+B 显示上一页

8.5、head

显示文本的前10行

如果加上后缀则有以下

-n num 表示显示前 num行

-c num 表示显示前 num个字符

8.6、tail

显示文本的后10行

如果 加上后缀则有以下

-n num 表示显示后 num行

-c num 表示显示后 num个字符

9、软链接与硬链接

链接文件:使用 l来表示 即 link,链接文件分为两类:

9.1硬链接

相当于副本,即备份

ex: 在windows下的同一文件复制到当前文件,有一个副本产生 这个副本就是硬链接

在linux下的创建方式如下:

ln (target) (link-name 创建的名字)

ex: ln 1.txt xx

注意:不能跨文件系统创建硬链接

所以不能在共享目录下创建硬链接

因为共享文件夹是 windows的而创建链接是linux不能跨操作系统

对于硬链接文件的操作如下:

1、如果修改了 源文件则会影响到链接文件

2、如果修改了 链接文件 则也会影响到 源文件

3、如果删除 链接文件则 不会影响源文件

4、如果删除 源文件 那么链接文件将忘记自己是一个链接文件,从而成为一个新的普通文件

注意(硬链接文件本身就是一个普通文件 因为查看文件类型显示是一个普通文件)

9.2软链接:

相当于快捷方式

创建方式:ln -s (target) (link-name链接名字)

ex: ln -s 1.txt xxxx

注意:软链接文件不能跨系统创建但是可以跨系统链接

即我们创建的软链接文件可以拷贝到共享目录

对于 软链接文件的操作如下:

1、如果修改了源文件则会影响到链接文件

2、如果修改了 链接文件 则也会影响到 源文件

3、如果删除 链接文件则 不会影响源文件

4、如果删除 了源文件 链接文件将无法使用

简述硬链接与软链接的区别:

1、硬链接文件是对一个已存在文件进行备份

不允许经过任何目录创建硬链接文件(即硬链接与源文件必须在同一个文件夹下)

并且只能在同一个文件系统内创建(不能跨系统)

所以不能在 共享文件夹下创建硬链接

2、软链接可以再任意目录下 或者 跨路径创建

但是只能在同一文件系统中(即在同一个系统中创建)

但是可以跨路径使用

10、linux下的文件归档与压缩

linux下有两种压缩格式:

bzip 生成的文件后缀为 .bz2

gzip 生成的文件后缀为 .gz

在linux 下虽然 zip命令 可以很好的压缩文件但是

它不是标准的归档压缩指令 标准的归档压缩指令是 tar

使用方式:tar function [optins] obj1 obj2 ....

function 一般放到最开头的位置

有两个取值:

-j 表示使用tar生成归档压缩文件或者释放压缩文件格式为 bzip格式

-z 表示使用tar生成归档压缩文件或者释放压缩文件格式为 gzip

optins 有以下几个选项

-c 表示创建压缩文件 create

-x 表示释放一个压缩文件

-f 制定归档文件的内容 一般放到最后

-v 显示归档和压缩的具体系统

ex: 压缩文件:

tar -jcvf xx.bz2 1.txt 2.txt ...

使用tar命令 压缩 格式为 .bz2 生成一个压缩文件

xx.bz2 里面将压缩 1.txt 2.txt .. 等等文件

释放:

tar -jxvf xx.bz2

11、apt在线升级

APT是ubuntu中功能做强大最齐全的软件包管理工具

其是用于获取、安装、卸载、软件应用的工具,相当于是软件管家

实现原理:

ubuntu采用集中式的软件管理

将各种软件包分门别类的存储到哥哥软件库中进行有效的组织管理

管理方式类似于药房的管理:

然后将这些仓库防止于许多的镜像服务器中(服务器相当于医院)

并且保护基本一致(即看病取药的流程基本一致)

这样 ubuntu的用户就可以随时下载更新安装包 用于安装软件

由于每一位ubuntu用户(医生)所处的环境不一样(在不同的科室)

不可以随意的访问各个镜像服务器 并且每个镜像服务器中有哪些资源

也是不清楚的,那么就需要在每个服务器中找到一个一一对应的 表格

这个表格上面告诉你哪些软件包在那个位置,如果这个位置没有则去其他位置找!

这张表格就是我们所说的 sources.list 即换源文件

如果要更新这张表格 则 需要 执行以下语句

sudo apt-get update

首先软件包有很多 每个软件的功能不同所以需要分类

这类似于药房的管理:即药房对于药品而言否是分类管理的

每一类的药品可以存放到不同的镜像服务器

这里的镜像服务器相当于医院,医院有有很多

放了很多不同的药品

有人去看病 不能让病人直接拿药

所以药房和医院的用户 对应的医生

不同的医生在不同的科室对于药品的权限操作也是不同的

那么这些医生需要知道自己能够开什么药 这个就要有一张表格

sources.list 就是用于更新这张表格的

告诉医生 那些药在那个服务器中有

软件源的选择 就是看 sources.list 这个文件链接的是

那些镜像服务器中的源:

ex: 中科大

复旦

清华

阿里

.....

APT 提供了一些常用的命令

(重要)apt-get 用于软件的安装 卸载和升级

(重要)apt-cache 用于查询软件包信息

apt-proxy 用于搭建APT代理服务器 (自己搭建一个 apt服务器)

apt-show-versions 用于显示系统中软件包的版本信息

apt-confing 用于读取apt配置文件的简单工具

apt-cdrom 用于将CD-ROM加载刀刀如那件源配置文件中

apt-get 的用法:

格式:apt-get subcommand pagesname

subcommand 有以下的取值:

install 表示安装

update 更新

remove 卸载

source 下载源码仓 (对于开源的软件包)

build-dep 为源码包构建所需要的编译环境

dist-upgrade 发布升级 版本升级

clean 删除老版本的下载文件 即存储在下载区的临时文件

check 检查系统中的依赖关系的完整性

pagesname

软件包名字

ex: apt-get install vim //更新安装和更新vim编辑器的

apt-get update //更新 更新换源列表 后面不可以跟软件包参数

apt-get remove //软件包 用于卸载软件工具

apt-get source vim //下载vim的源码仓

apt-get build-dep vim //为vim源码搭建编译环境

apt-get clean 无需后缀软件包

apt-get check 无需后缀软件包

apt-cache 的使用:

格式:apt-cache subcommand pagesname

subcommand 可以取以下的值:

showsrc 获取源码包的详细信息

search 根据正则表达式检查软件包 //暂时无法使用

depends 获取源码包的依赖关系

pkgnames 列出所有已经安装的软件名

stats 获取源码包的统计数据

show 获取版本号和依赖关系

showpkg 获取依赖关系

ex: apt-cache showsrc vim

apt-cache depends vim

apt-cache pkgnames //无需后缀软件包

apt-cache stats vim

apt-cache show vim

apt-cache showpkg vim

12、vim编辑器的使用

vi/vim文本编辑器是linux下功能最强大的文本编辑器,也是最常用的文本编辑器

其有三个模式:

命令模式:键盘上所有的输入都会成为命令

输入模式:键盘上所有的输入都会当做文本写到到文件

末行模式:在命令模式下输入:后进入该模式

此时输入的所有字符显示在末行称之为末行模式

注意:vim 编辑器打开一个文件默认进入的是命令模式

命令模式进入输入模式:

a 光标向后偏移一个字节 进入

A 光标移动到行尾巴进入

i 光标位置不动进入

I 光标移动到行首进入

o 将会在光标所在行下一行新增一行进入,并且光标停留在新行的行首

O 将会在光标所在行上一行新增一行进入,并且光标停留在新行的行首

输入模式进入命令模式:按 ESC键即可

命令模式到末行模式:按 ESC键即可

输入模式到末行模式:先按 ESC键 再按:号

基本命令:必须在命令模式下敲

12.1文本删除操作:

x 删除光标后所处的字符 如果在前面加上一个数字n

则表示删除光标所处位置开始向后的n个字符,包括光标所在的字符

X 删除光标所处位置前面的字符 如果在前面加上一个数字n

则表示删除光标所处位置开始前的n个字符,不包括光标所在的字符

dd 删除光标所在的行

若在在前面加上一个数字n,则表示删除当前行以及之后的n-1行

D or d$ 删除光标位置到行尾的内容

d0 删除从光标位置到行首的内容

dw/dW 删除一个单词

若光标在某个单词的中间 则从光标位置之后开始删除到词尾

若在在前面加上一个数字n,则表示删除当前光标位置以及之后的 n-1个单词

注意 w 与 W 单词的划分方式不同:(w 比 W 划分单词更加严格

1、两个空格之间是一个词即 W 表示

2、英文单词 标点符号 和非字符符号之间的是一个词 w

d回车 删除当前行以及之后的一行,即删除两行

12.2文本复制操作:

注意:vim下面是不能够使用ctrl+c ctrl+v 复制的,只能用过命令行复制

Y 复制光标所在的行

若在其前面加上一个数字n 则表示复制光标所在的行及其之后的 n-1行

y$ 复制光标所在位置及行尾的内容

yw/yW 复制一个单词

若在其前面加上一个数字n 则表示复制光标所在的词及其之后的 n-1个词

注意 w 与 W 不同即单词的划分不同

y回车 表示复制当前行及其下一行的内容

p 表示粘贴到下一行

P 表示粘贴在 上一行

shift+p 表示粘贴到本行

12.3文本选择命令:

v:在命令模式下进行文本的选择

使用方法:在需要选择的文本处按下v

进入块选择模式移动光标到行尾(以字符为单位)

V: 在命令模式下进行文本的选择

使用方法:在需要选择的文本处按下V

进入行选择模式 移动上下键即可(以行为单位)

12.4复制粘贴操作:

1、使用文本选择命令选择文本 按下 Y/y 复制,在粘贴处按下p即

注意:Y 与 y有所不同, Y是整行对应 V , y整块对应 v

2、直接输入n行号co n 粘贴行

可直接复制但必须在末行模式下

12.5撤回命令:

u 撤回

ctrl+r 取消撤回

.表示继续执行上一条指令

12.6vim末行操作:

保存与退出

q 表示直接退出

q! 表示强制退出

x / wq 保存并退出

w 保存

w 文件名 就是另存为

wq! 保存并强制退出

$前往最后文件尾部

12.7查找文本指令:

/string 从光标后开始查找string字符串

查找的内容可以使用n N查看

n 下 N 上

12.8替换文本指令:

%s/ostring/nstring

将ostring替换为 nstring

后面可以跟后缀, c 表示一个个替换, g 表示替换所有的

继续阅读