Linux_01_基础

Posted LastCoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux_01_基础相关的知识,希望对你有一定的参考价值。

1.内核及发行版

1)内核(kernel):运行程序和管理硬件的核心程序,提供了一个在裸设备和应用程序之间的抽象层。

2)发行版:提供了人机交互界面。

 

2.Linux的文件结构

Linux没有Windows那样的盘符概念,只有一个根目录/,所有的文件都在它下面。/下的home目录为每个用户私有。

 

3.Linux图形界面

Liunx发行版提供了图形界面。

 

4.为什么要使用终端命令?

  • 实际工作中,大量的服务器维护工作都是在远程通过SSH客户端完成,并没有图形界面。
  • 作为后端开发程序员,掌握一些常用的Linux命令是必需的。

 

5. Linux终端命令的格式

格式:command [-options] [-parameters] 

命令帮助: command --help; man command.

 

6. 文件和常用命令

6.1 查看目录内容

1)实用技巧:

自动补全:tab键

曾使用命令:上箭头和下箭头

2)ls命令说明:

 

参数 含义
-a 显示指定目录下所有文件,包括隐藏文件(以.开头)
-l 以列表方式显示文件详细信息
-h 配合-l以人性化方式显示文件大小

 

 

 

 

 

 

 

3)ls通配符的使用

通配符 含义
*  代表任意个字符
?   代表任意1个字符
[] 表示可以匹配定义字符数组中的任意1个元素
[abc] 匹配abc中的任意1个
[a-f] 匹配a到f范围内的任意一个字符

 

 

 

 

 

 

 

 

 

6.2 切换目录

1)cd命令的常用参数

参数 含义
cd 切换到当前用户的主目录(/home/用户目录)
cd~ 切换到当前用户的主目录(/home/用户目录)
cd. 保持当前工作目录不变
cd.. 切换到上级目录
cd- 可以在最近两次工作目录之间来回切换

 

 

 

 

 

 

 

 

2)相对路径和绝对路径

绝对路径:在输入路径时,最前面是/或者~,表示从根目录/家目录开始的具体目录位置。

相对路径:在输入路径时,最前面不是/或者~,表示从当前目录开始。

 

6.3 创建和删除操作

1)touch::创建文件或者修改文件时间(如果文件已存在,就修改文件的末次修改时间)。

2)mkdir:添加参数 -p 就可以实现创建递归目录

注意同意目录下,文件和目录不能重名。

3)rm:使用该命令删除的文件,会直接从磁盘上消失。

-f 强制删除,忽略不存在的文件
-r 递归地删除目录下的内容,删除文件夹时必须加此参数

 

 

 

6.4 拷贝和移动文件

序号 命令 英文 作用
01 tree [目录名] tree 以树状图列出文件目录结构
02 cp 原文件 目标文件 copy 复制文件或目录
03 mv 源文件 目标文件 move 移动文件或者目录/文件或者目录重命名

 

 

 

 

 

1)tree:  树状图列出指定目录的文件目录结构

-d 只显示目录

 

 

2)cp: 复制文件或目录

-i 如果发生覆盖,会提示
-r 如果要复制目录就必须添加该选项。该选项可以递归地复制目录下的文件和目录。

 

 

 

3)mv:移动文件/目录;重命名文件/目录

-i 如果发生覆盖,会提示。

 

 

 

6.5 查看文件内容

cat 文件名1 文件名2  concatenate  查看文件内容
more 文件名 -     分屏展示文件内容
grep 文本内容 文件名 grep 搜索指定文件中的包含指定文本的行

 

 

 

 

1)cat:查看文件内容

-b 给每个非空行加上编号
-n 给每行加上编号

 

 

 

2)more:分屏展示文件内容

3)grep:搜索指定文件的包含指定文本的行

-n 显示行号
-v 显示不包含指定文本的行
-i 忽略大小写
常用的两种搜索模式  
^a 搜索以a开头的行
ke$ 搜索以ke结尾的行

 

 

 

 

 

 

 

 

6.6 echo、重定向和管道

echo  xxx 将文字内容显示到终端,通常和重定向联用
xxx > 文件 将指定文本输出到指定文件,覆盖已有内容
xxx >> 文件 将指定文本追加到指定文件
| 允许将一个命令的输出作为另一个命令的输入

 

 

 

 

 

1)echo:

echo  hello linux > file.txt

2)重定向<和>>:

  • Linux允许将命令的执行结果重定向到一个指定文件中(该文件不存在将新建一个)
  • 将本应显示在终端的内容输出/追加到指定文件中(该文件不存在将新建一个)

3)|:

Linux允许将一个命令的输出通过管道作为另一个命令的输入

例如: ls ~ | grep .vim

 

7. 远程管理常用命令

7.1 关机/重启 

shutdown 选项 时间 关机/重启
-r 重启选项

 

 

 

不指定选项和时间,默认1分钟之后关机。

远程维护服务器时,最好不要关闭系统,而应该重启系统。

实例: 

shutdown -r now 立刻重启

shutdown now 立刻关机

shutdown 20:30 系统在20:30关机

shutdown +10 系统十分钟之后关机

shutdown -c 取消关机

 

 

7.2 查看或配置网卡信息

ifconfig 查看/配置计算机当前的网卡配置信息
ping ip地址 检测到目标ip地址的连接是否正常

 

 

 

 

 7.3 远程登陆和复制文件


ssh 用户名@ip secure shell 关机/重新启动
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件
 
   

 

 

 

 

 

 

1)ssh基础(重点)

在linux中ssh是非常常用的工具,通过ssh客户端可以远程访问运行了SSH服务器的机器。

 

端口号:

常见服务器端口号:  

  • SSH服务器:22
  • web服务器:80
  • https:443
  • ftp服务器:21

如果是默认端口号,在连接的时候可以省略。

 

2)SSH客户端的简单使用

命令格式: ssh [-p port] user@remote

user:在远程机器上的用户名,如果不指定的话默认为当前用户

remote:远程机器的地址,可以是ip/域名,或者是后面会提到的别名

port:SSH Server监听的端口,如果不指定,就为默认的22

注意:使用exit退出当前用户的登陆

 

3)scp(掌握)

  • scp就是secure copy,是一个在linux下用来进行远程拷贝文件的命令
  • 它的地址格式与ssh基本相同,需要注意的是,在指定端口时用的是大写的-P而不是-p
#把本地文件复制到SSH服务器下
#注意:后的路径如果不是绝对路径,则以home目录作为参考路径
scp -P 22 1.py  user@remote: 1copy.py

# 把SSH服务器下的文件复制到本地
scp -P 22 user@remote:Desktop/1copy.py 1.py

##############################

# 把SSH服务器下的目录复制到本地

scp -P 22 user@remote:Desktop/dir newdir

 

如果在windows中使用PuTTY,可以使用pscp命令行工具进行文件拷贝:

S1. 将pscp.exe放到C盘Windows\\System32目录下,这样就可以在任何地方使用pscp命令。

S2. 打开命令行,执行 pscp -P 22 user@remote:xxx xxx 就可以将SSH服务器中的文件拷贝到windows系统的指定目录下。

 

4)fileZilla(简单)

 

5)两个Linux设备之间设置SSH免密码登陆的步骤:

S1. 配置公钥:执行 ssh-kengen即可生成SSH密钥,一路回车即可

S2. 从客户端上传公钥到服务器:执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

 

 

6)配置别名

在~/.ssh/config文件中追加:

Host 别名
  HostName ip地址
  User  远程用户名
  Port   22

保存之后,即可使用 ssh 别名实现远程登陆。

 

 

8. 用户权限相关命令

  • 用户权限的基本概念
  • 用户管理终端命令
  • 组管理终端命令
  • 修改权限终端命令

8.1 用户 和 权限 的基本概念

1)基本概念

  • 用户是linux系统工作中重要的一环,用户管理包括用户管理
  • 在linux系统中,可以指定每个用户对不同的文件或目录的不同权限
  • 对文件/目录的权限包括:
权限 英文 缩写 数字代号
read r 4
write w 2
执行 execute x 1

 

 

 

 

 

2)组

为了方便管理,将拥有同样权限的用户划分为组。在实际应用中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而直接管理组的权限。

 

3)通过ls -l查看文件权限:

目录 拥有者权限 组权限 其他用户权限
- r w x r w x r - -
d r w x r w x r - x

 

 

 

 

 

4)chmod简单使用(重要)

  • chomd可以修改用户/组文件/目录的权限
  • 命令格式如下:
chmod +/-rwx 文件名|目录名

 

5)超级用户

  • linux系统中的root账号通常用于系统的维护和管理,对操作系统内的所有资源具有所有权限
  • 在linux安装的过程中,系统会自动创建一个用户账号,这个默认的用户称为“标准用户”
  • sudo表示 substitute user do ,表示使用root用户的身份执行

6)组管理 终端命令

创建/删除组的终端命令都需要通过sudo执行
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp -R 组名 文件/目录名 修改文件/目录所属组

 

 

 

 

 

 

9. 用户管理相关命令

9.1 创建用户/设置密码/删除用户

useradd -m -g 组 新用户名 添加新用户
  • -m 自动建立用户家目录
  • -g 指定用户所在的组,否则会创建一个和用户同名的组
passwd 用户名 设置用户密码 如果是普通用户,直接用passwd修改自己的账户密码
userdel -r 用户名 删除用户
  • -r 自动删除该用户的家目录
cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在/etc/passwd文件中

 

 

 

 

 

 

 

提示:
创建用户时,如果忘记添加-m选项,最好删除重建。
创建用户时,默认会创建一个同名的组。
用户信息保存在/etc/passwd文件中。

 

使用useradd新建的用户的终端使用的shell是dash,可以通过
usermod -s /bin/bash 用户名 改成bash

 

9.2 查看用户信息

id [用户名] 查看用户UID和GID信息
who 查看当前所有登陆的用户列表
whoami 查看当前登陆用户的账户名

 

 

 

 

用户名:是否有密码:UID:GID::家目录

 

当只使用id时,查看的是当前用户所在的所有组。

 

9.3 usermod

  • usermod可以用来设置 用户 的 主组/附加组 和 登陆shell,命令格式如下:
#修改用户的主组(passwd中的GID)
usermod -g 组 用户名

#修改用户的附加组,重新登录后才能生效
usermod -G 组 用户名

#修改用户登陆的shell
usermod -s /bin/bash
  • 主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组
  • 附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限
注意:使用useradd添加的用户,默认是没有权限使用sudo以root身份执行命令的,可以使用

usermod -G sudo 用户名

将用户添加到sudo附加组中

  

9.4 切换用户

su - 用户名 切换用户,并切换目录 -可以切换到用户家目录,不添加-表示位置不变
exit 退出当前登陆账户  

 

 

 

  • su 不接用户名,可以切换到root,但不推荐使用,因为不安全
  • exit示意图如下:

 

9.5 修改文件权限

chown 修改拥有者
chgrp 修改组
chmod 修改权限

 

 

 

 

  • 命令格式如下
# 修改文件/目录的拥有者
chown 用户名 文件名|目录名

#递归修改文件/目录的组
chgrp -R 组名 文件名|目录名

#递归修改文件/目录权限,三个数字分别对应 拥有者/组/其他用户 的权限(r-4,w-2,x-1)。 
chmod -R 755 文件名|目录名

 

10 系统信息相关命令

本小节涵盖:

  • 时间(date)和日期(cal)
  • 磁盘(df)和目录空间(du)
  • 进程信息(ps,top,kill)

10.1 时间和日期

cal 查看日历 -y 可以查看一年的日历
date 查看系统时间  

 

 

 

 

10.2 磁盘信息

df -h df(disk free)显示磁盘剩余空间,-h以人性化的方式显示文件大小
du -h[目录名] du(disk usage)显示目录下的文件大小

 

 

 

 

10.3 进程信息

  • 所谓进程,就是当前正在执行的一个程序
ps 

process status 查看进程的详细状况

  • a 选项 显示终端上的所有进程,包括其他用户的进程
  • u选项 显示进程的详细信息
  • x选项 
top 动态显示运行中的进程并排序
Kill 进程代号

终止指定代号的进程

  • -9 选项 表示强制终止

 

 

 

 

 

 

 

 

 

 

11.其他命令

目标

  • 查找文件find
  • 软链接ln
  • 打包和压缩tar
  • 软件安装apt-get

11.1查找文件

find [路径] -name "*.py" 查找指定路径下扩展名是.py的文件,包括子目录

 

 

  • 如果省略路径,表示在当前文件夹下查找

 

11.2 软链接

软链接类似于windows下的快捷方式

ln -s 被链接的源文件 链接文件 建立文件的软链接

 

 

  • 注意,没有-s选项的话建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会用到
  • 源文件要使用绝对路径,不能使用相对路径,否则移动链接文件后,链接文件就不能再链接到源文件了

 

 

11.3 打包压缩

  • 打包压缩是日常工作中备份文件的一种方式
  • 在不同的操作系统中,常用的打包方式是不同的
  1. windows常用rar
  2. mac常用zip
  3. linux常用tar.gz

1)打包/解包

  • tar是linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件
  • tar的命令格式如下:
#打包文件
tar -cvf 打包文件.tar 被打包的文件/路径

#解包文件
tar -xvf 打包文件.tar

2)压缩/解压缩

gzip

  • tar与gzip命令结合使用可以实现 文件打包和压缩
  • tar只负责打包不压缩,gzip负责之后的压缩,打包并压缩的文件扩展名为xxx.tar.gz
  • 在tar命令中,有一个选项 -z 可以调用gzip,从而方便地实现压缩和解压缩
  • 命令格式如下:
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径

#解压缩文件
tar -zxvf 打包文件.tar.gz

#解压缩文件到指定目录,该目录必须存在
tar -zxvf 打包文件.tar.gz -C 目标路径

 

bzip2

  • bzip2的使用和gzip类似,不同之处在于:1)选项为-j;2)打包并压缩后的文件的后缀名为.tar.bz2

 

12 软件安装/卸载

12.1 通过apt安装/卸载软件

  • apt是 advanced packaging tool,是linux下的一款安装包管理工具
  • apt可以在终端中方便地 安装/卸载/更新 软件包
# 1.安装软件
sudo apt install 软件包

# 2.卸载软件
sudo apt remove 软件名

# 3.更新已安装的包
sudo apt upgrade

 

12.2 配置软件源

  • 如果希望在linux中安装软件更快,可以设置镜像源,镜像源是一个访问网速更快的服务器,可以提供软件的下载服务。

 

以上是关于Linux_01_基础的主要内容,如果未能解决你的问题,请参考以下文章

P1 01_01_Linux--计算机硬件基础

Linux初级知识_01 -- 基础命令

python课件-淘宝-目录.txt

LinuxDevOps两个月学习路线安排

Linux基础_李孟_新浪博客

为啥 GraphQL 片段在查询中需要 __typename?