Linux基础

 下载ubuntu镜像

https://cn.ubuntu.com/download/alternative-downloads

安装与分区参考教程

VirtualBox安装Ubuntu虚拟机超详细教程!!!_安装virtual box,导入配置好环境的ubuntu虚拟机-CSDN博客

一、Linux下的文件系统

  1. 文件目录没磁盘概念,只有一个根目录

二、常用命令

  • ls                                                查看当前文件夹下的内容
    • ls参数使用
      • .开头的文件为隐藏文件,需要用-a参数才能显示,例:ls -a
      • -l,以列表方式显示文件的详细信息
      • -h,配合-l以人性化的方式显示文件大小
        • 参数可组合使用,例:ls -al
    • ls通配符使用(通配符来代表其他符号达到筛选部分文件的效果)
      • *代表任意个数个字符,例:以1结尾的文件,ls *1.txt,扩展名不可忽略;或包含1的文件,ls *1*
      • ?代表任意一个字符,仅一个字符,例:a?c.txt
      • []表示可以匹配字符组中的任意一个字符,例:含2或3开头,结尾为4的txt文件,ls [23]4.txt
      • [abc]匹配a、b、c中的任意一个
      • [a-f]匹配从a到f范围内的任意一个,例:ls [1-4]23.txt
  • pwd                                            查看当前路径
  • cd [目录名]                                 切换路径
    • 常用参数
      • cd 切换到当前用户的主目录(/home/用户目录)
      • cd ~ 切换到当前用户的主目录(/home/用户目录)
      • cd . 保持当前目录不变
      • cd .. 切换到上一级目录
      • cd - 可以在最近两次工作目录之间来回切换
      • 绝对路径,相对应根目录开始的路径,从/开始
      • 相对路径,相对当前目录开始的路径,不需要从/开始
  • touch [文件名]                            创建文件(文件不存在)或修改文件时间(文件已存在)
    • ​编辑
  • vi [文件名]                                  编辑文件(aeiou都可切换到插入模式,esc返回命令模式)
    • :wq 保存退出
    • :q! 强制退出
  • nano [文件名]                             编辑文件(相较vi/vim,对文件进行简单编辑时个人觉得更容易操作和使用)
    • ctrl+x--y--enter 保存退出
  • mkdir [目录名]                            创建一个新的目录,同一级目录,目录与文件名不可重复
    • -p 递归创建目录,例:在当前目录创建a目录,a目录中创建b目录,b目录中创建c目录,c目录中创建d目录,mkdir -p a/b/c/d
  • rm [文件名]                                 删除指定文件,删除后不能恢复
    • -f 强制删除,忽略不存在的文件,无需提示
    • -r 递归删除目录下的内容,删除目录也需要带此参数
    • ls中可使用的通配符在此适用,例:rm *1.txt
  • tree[目录名]                                以树状图列出文件目录结构,可直接带路径,例:tree ~
    • -d 只显示目录不显示文件
  • cp 源文件 目标文件                    复制或覆盖文件或目录,例:移动到当前目录不修改名称,cp ~/d/abc.txt .;移动到当前目录并修改名称,cp ~/d/abc.txt ./123.txt
    • -i 覆盖文件前提示
    • -r 若给出的源文件是目录文件,则将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名;复制目录也需要带此参数
  • mv 源文件 目标文件                   移动文件或目录/文件或目录重命名,移动目录也不需要使用任何参数
    • -i 覆盖文件前提示
  • clear                                           清屏
  • command --help                         帮助,例:mkdir --help
  • man(manual)                              手册,例:man mkdir
    • 空格 下一屏
    • enter滚动一行
    • b 回滚一屏
    • f 前滚一屏
    • q 退出
    • /word 搜索word字符串

三、查看文件

  • cat 文件名                                   查看文件内容、创建文件、文件合并、追加文件内容等
    • -b 对非空输出行编号(nl命令和cat -b效果等价)
    • -n 对输出的所有行编号
  • more 文件名                                分屏显示文件内容
    • 操作健与man相似
  • grep 搜索文本文件名                   搜索文本文件内容(查找的文本有空格需要使用“”包住)
    • 参数
      • -n 显示匹配行及行号
      • -v 显示不包括匹配文本的所有行(相当于求反)
      • -i 忽略大小写
    • 常用的两种模式
      • ^a 行首,搜寻以a开头的行
      • ke$ 行尾,搜寻以ke结束的行

四、其他命令

1、echo和重定向

  • echo 在终端中显示参数指定的文字,通常会和重定向联合使用
  • 重定向 将本应显示在终端上的内容输出或追加到指定文件中
    • > 表示输出,会覆盖文件原有内容
    • >> 表示输出,会将内容追加到已有文件的末尾

2、管道

  • | 允许将一个命令的输出可以通过管道作为另一个命令的输入,| 左侧输入,右侧输出
  • 常见命令
    • more 分屏显示内容
    • grep 在命令执行结果的基础上查询指定的文本

3、远程命令

  • shutdown 选项 时间(now表示现在) 关机/重启,不指定选项和参数,默认表示1分钟之后关闭电脑
    • -r 重新启动
    • 例:shutdown now --立即关机
      • shutdown -r now --立即重启
      • shutdown 13:20 --在当天13:20关机
      • shutdown +10 --十分钟后关机
      • shutdown -c --取消指定的关机计划
  • ifconfig 查看/配置计算机当前的网卡配置信息(windows对应命令为ipconfig)

  • ping ip地址 检测到目标 ip地址 的连接是否正常

4、which 查看执行命令所在位置

5、查找文件

  • find [路径] -name '*.py' 查找指定路径下扩展名为.py的文件,包括子目录
    • 如果省略路径,表示在当前文件夹下查找
    • 通配符在find命令中可同时使用
  • find -perm 777 在当前目录查找权限为777的文件
  • find -amin -5 在当前目录查找5分钟内被访问的文件
    • -amin +n 表示在n分钟前被访问过,-amin -n 表示在n分钟内被访问过
    • -atime +n 表示在n天前被访问过,-atime -n 表示在n天内被访问过
    • -anewer file 表示在指定文档最后一期访问时间后被访问过
  • find -mtime -1 在当前目录下查找在1天之前被修改过的文件
    • -min +n 表示在n分钟前被访问过,-min -n 表示在n分钟内被访问过
    • -mtime +n 表示在n天前被访问过,-mtime -n 表示在n天内被访问过
    • -mnewer file 表示在指定文档最后一期访问时间后被访问过

6、软连接

  • ln -s 被链接的源文件路径 链接文件名(类似于windows下的快捷方式)
    • 注:
      • 没有-s选项简历的是一个硬连接文件
      • 路径需要使用绝对路径不能使用相对路径

7、打包和压缩

①打包与解包

tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件

  • 打包:tar -cvf 打包文件.tar 被打包的文件/路径 
  • 解包:tar -xvf 打包文件.tar 
    • -c 生成档案文件,创建打包文件
    • -x 解开档案文件
    • -v 列出归档解档的详细过程,显示进度
    • -f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
②压缩与解压缩
  • gzip:tar与gzip命令结合可以实现文件打包和压缩
    • tar只负责打包文件,但不压缩
    • 用gzip压缩tar打包后的文件其拓展名一般用xxx.tar.gz
    • -z 可以调用gzip

#压缩文件

tar -zcvf 打包文件.tar.gz 被打包的文件/路径

#解压文件

tar -zxvf 打包文件.tar.gz

#解压缩到指定路径,-C指定路径且必须为已存在路径

tar -zxvf 打包文件.tar.gz -C 目标路径

  • bzip2,与gzip类型的另一种压缩格式,扩展名为xxx.tar.bz2,通过-j选项调用

#压缩文件

tar -jcvf 打包文件.tar.bz2 被打包的文件/路径

#解压文件

tar -jxvf 打包文件.tar.bz2

8、软件安装

  • 安装:sudo apt install 软件包
  • 卸载:sudo apt remove 软件名
  • 更新已安装的包:sudo apt upgrade

9、配置软件源(ubuntu18.04.6)

五、SSH学习

1、SSH基础

优点:

①数据传输是加密的,可以防止信息泄露

②数据传输是压缩的,可以提高传输速度

  • 常见服务端口号:
    • SSH服务器 22
    • Web服务器 80
    • HTTPS       443
    • FTP服务器 21

2、SSH客户端的简单使用

ssh [-p port] user@remote

  • user是在远程机器上的用户名,如果不指定的话默认为当前用户
  • remote是远程机器的地址,可以是IP/域名,或者是别名
  • port是SSH Server监听的端口,如果不指定就默认为22

关于在安装过程中遇到的主机与虚拟机ping的过程遇到的问题对应解决:

①两边都ping不通:

修改虚拟机的网络为nat+onlyhost方式,修改配置文件将onlyhost的ip修改与电脑wifi同一网段,在虚拟机ping百度尝试

  • 虚拟机中的网卡设定

  • 在ubuntu中修改ip(我的版本是18,也是在yaml文件中修改配置)

sudo nano /etc/netplan/01-network-manager-all.yaml

#打开文件后编辑:

network:

    version: 2

    ethernets:

   #nat网卡名

    enp0s3:

        dhcp4: true

    #only-host网卡名

    enp0s8: 

        dhcp4: false

        addresses: [192.168.X.X/24]------此处使用的网段与主机可上网网段一致,24指的是子网掩码为255.255.255.0

        nameservers:

            [192.168.X.1]

#修改后ctrl+x,y,回车后保存成功,可通过cat命令检查是否成功

#重启网络: sudo netplan apply

②修改ip后安装ssh发现无法解析cn.archive.ubuntu.com,需要添加dns

1、sudo nano /etc/resolv.comf #添加以下行

nameserver 8.8.8.8

nameserver 8.8.4.4

nameserver 127.0.0.1

保存后退出

2、sudo systemctl restart systemd-resolved#重启systemd-resolved服务

3、检查是否重启也正常在resolv.comf文件中添加成功

③安装ssh

1、sudo apt update #更新包列表

2、sudo apt-get install openssh-server

(此时报错有一些软件包无法被安装。其中有一个依赖为openssh-client

根据报错安装对应的版本

sudo apt-get install openssh-client=1:7.6p1-4)

成功后再执行安装openssh服务器软件包就能成功

3、检查ssh服务状态

sudo systemctl status ssh

4、启动服务

sudo systemctl start ssh

3、scp命令,secure copy

是在Linux下用来进行远程拷贝文件的命令,与ssh不同的是指定端口时-P使用大写

#把本地当前目录下的01.py文件复制到远程家目录下的Desktop/01.py

#注意,‘:’后面的路径如果不是绝对路径,则以用户的家目录作为参照路径

scp -P portNo 01.py user@remote:Desktop/01.py

(scp -P 22 01.py yan@192.168.1.2:Desktop/01.py----SSH服务传输文件使用默认端口号22;下载FileZilla使用FTP服务传输文件为21)

#把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py

scp -P portNo user@remote:Desktop/01.py 01.py

#加上-r参数可以传送文件夹,递归复制该目录下的所有子目录和文件

#把当前目录下的demo文件复制到远程家目录下的Desktop

scp -r demo user@username:Desktop

#把远程家目录的Desktop复制到当前目录下的 demo文件夹

scp -r user@username:Desktop demo

4、SSH高级

注:关于SSH配置信息都保存在用户家目录下的.ssh目录下

①免密码登录

  • 配置公钥
    • 执行ssh-keygen即可生成SSH钥匙,一路回车即可
  • 上传公钥到服务器
    • 执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥

②配置别名

#用ssh mypc 代替ssh -p port user@remote ,在~/.ssh/config 中追加:

#(若没有config文件,则先使用touch命令创建)

1.touch config

2.gedit config(sudo nano)

3.在文件中追加内容

Host mypc

        HostName ip地址

        User username

        Port 22

配置完成后,ssh、scp命令都可使用 

#ssh mypc

#scp -r ~/Desktop mypc:Desktop/demo

六、用户权限

1、文件/目录的权限

  • 读:r-4
  • 写:w-2
  • 执行:x-1(excute)【执行语句:./文件名】

下图:第一部分:是否为目录,是为d,不是为-

第二部分:对应文件拥有者的权限

第三部分:对应组的权限

第四部分:其他用户的权限

2、修改权限(ch)

  • chown 修改拥有者

#修改文件/目录的拥有者

chown 用户名 文件名/目录名

  • chgrp 修改组

#递归修改文件/目录的组

chgrp -R 组名 文件名/目录名

  • chmod 修改权限

#命令:chmod +/-rwx 文件名/目录名,直接修改文件/目录的 读、写、执行权限,但不能精确到拥有者、组、其他用户的权限

#示例:减少权限

chmod -r 123.txt 

#注意,这里小写-r是指的文件权限中‘rwx’中的‘r’,与递归修改文件权限中的大写R区分

#示例:添加权限

chmod +w 123.txt

#-R递归修改文件权限,-R后3个数字分别代表拥有者、组、其他用户的权限,不带-R参数则只修改单个文件/目录

chmod -R 755 文件名/目录名

3、超级用户

  • 修改密码与切换用户,使用sudo命令执行输入密码后有5分钟有效期限,超过时间需要重新输入密码
    • sudo -i  直接进入root账号不需要密码
    • passwd 修改当前用户密码
    • su root  需要密码进入用户
    • exit  退出回到普通用户

七、组管理(需要使用sudo执行)

  • 添加组:groupadd 组名
  • 删除组:groupdel 组名
  • 确认组信息:cat /etc/group
  • 递归修改文件/目录的所属组:chgrp -R 组名 文件/目录名

八、用户管理

1、用户增、删

  • 添加新用户:useradd -m -g 组 新建用户名 (-m自动建立用户家目录;-g指定用户所在组,否则会建立一个和用户同名的组)
  • 设置用户密码:passwd 用户名(添加新用户时必须要使用该命令设置密码才能正常登录;普通用户可直接用该命令修改密码)
  • 删除用户:userdel -r 用户名(-r会自动删除对应用户家目录)

2、用户信息查看

  • 确认用户信息:cat /etc/passwd | grep
  • id [用户名] 查看用户UID和GID信息
  • who 查看当前所有登录的用户列表
  • whoami 查看当前登录用户的账户名

3、用户组设置

  • usermod 设置用户的主组/附加组
    • 主组:通常在新建用户时指定,在etc/passwd的第四列GID对应的组
    • 附加组:在etc/group中最后一列表示该组的用户列表,用户指定用户的附加权限(设置后需要重新登录才生效)

#修改用户的主组(passwd中的GID)

usermod -g 组 用户名

#修改用户的附加组

usermod -G 组 用户名

#修改用户登录 Shell(ubuntu默认用户使用的是dash,所以window在使用ssh连接用户时按↑键无法操作或文件颜色无差异、高亮等情况

usermod -s /bin/bash

#在ubuntu运行后重新在window登录后的效果

#ubuntu确认用户信息

九、系统信息

1、时间和日期

  • date                     查看系统时间
  • cal                       calendar查看日历,-y选项可以查看一年的日历

2、磁盘信息

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

3、进程信息

  • ps aux                    process status 查看进程的详细状况(默认只显示当前用户通过终端启动的应用程序)
    • a 显示终端上的所有进程,包括其他用户的进程
    • u 显示进程的详细状态
    • x 显示没有控制终端的进程
  • top                          动态显示运行中的进程并且排序
    • q退出
  • kill [-9] 进程代号     终止指定代号的进程,-9表示强行终止(只终止当前用户开启的进程,不要终止root身份开启的进程,否则可能导致系统崩溃)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值