ubuntu的学习与总结

简介: 在Ubuntu的学习中,了解了Linux的文件系统结构,所有内容都从根目录/开始,没有像Windows那样的盘符。

ubuntu的学习与总结

参考

https://www.bilibili.com/video/BV1ti4y1t7BF/?p=2&spm_id_from=pageDriver&vd_source=3a19778c413bfce870f654e021f103bc

image-20240314112744366

linux的文件结构

image-20240314154811127

​ 它只有根目录,多用户都在home文件夹下面组织目录结构。并没有跟windows一样的盘符的文件结构。

如下可以通过AI快速的查到

Linux主要目录速查表如下:

  1. /:根目录,Linux下有且只有一个根目录,所有的文件和目录都是从这里开始的。
  2. /bin/usr/bin:存放可执行二进制文件目录,如常用的命令ls、tar、mv、cat等。其中,/bin目录存放着最经常使用的命令;而/usr/bin目录通常存放着一些不常用的命令。
  3. /boot:存放Linux系统启动时用到的一些文件,如Linux的内核文件(如/boot/vmlinuz)和系统引导管理器(如/boot/grub)。
  4. /dev:存放Linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备。
  5. /etc:系统配置文件存放的目录,包含系统主要的配置文件,如/etc/inittab、/etc/fstab、/etc/init.d等。
  6. /home:系统默认的用户家目录,新增用户账号时,用户的家目录都会存放在这里。
  7. /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,但重要数据不可放置在此目录下。
  8. /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
  9. /usr:应用程序存放目录,其中/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行但却是许多程序运行所必需的一些函数库文件,/usr/local存放软件升级包等。

除了上述主要目录外,Linux系统中还有许多其他的目录,每个目录都有其特定的用途和存放的内容。熟悉这些目录的结构和用途,对于Linux系统的管理和维护非常重要。

常用Linux命令的基本使用

学习终端命令的技巧:

  • 不需要死记硬背,对于常用命令,用的多了,自然就记住了
  • 不要尝试一-次学会所有的命令,有些命令是非常不常用的,临时遇到,临时百度就可以

Linux发行版本的命令大概有200多个,但是常用的命令只有10多个而已

以下是部分常用Linux命令及其英文释义和基本使用的表格形式:

序号 命令 英文释义 功能描述 基本使用举例
1 pwd Print Working Directory 显示当前工作目录 pwd
2 ls List 列出目录内容 ls
ls -a(显示隐藏文件)
ls -l(详细信息列表)
3 cd Change Directory 改变当前目录 cd directory
cd ~(返回用户主目录)
cd ..(进入上级目录)
4 mkdir Make Directory 创建新目录 mkdir directory_name
5 touch Create or Update File Timestamps 创建新文件或更新文件时间戳 touch file.txt
6 cp Copy 复制文件或目录 cp source destination
cp -r source_dir target_dir(复制目录)
7 mv Move/Rename 移动或重命名文件或目录 mv file1 file2(重命名)
mv file directory(移动文件)
8 rm Remove 删除文件或目录 rm file.txt
rm -r directory(删除目录及其内容)
9 echo Output Strings 输出文本到屏幕或文件 echo "text"
echo "text" > file.txt(写入文件)
10 cat Concatenate 查看或连接文件内容 cat file.txt
cat file1.txt file2.txt > combined.txt(合并文件)
11 more / less Page Through Content 分页查看文件内容 more file.txt
less file.txt(支持上下翻页和搜索)
12 man Manual 查阅命令或程序的手册页 man command

这只是Linux常用命令的一部分,每个命令都支持多种选项和参数以实现更多功能。

注意:

在看文档的时候,[]代表可选的意思,如下图

image-20240315173626384

关于ubuntu server 设置为中文显示事情不建议

​ ubuntu server 本来就是稳定版本,很多组件是没有带的,所以不建议改为中文,也尝试过修改,发现也并不生效。

ubuntu server修改IP地址

​ Ubuntu20.04之后是通过netplan来管理网络,和之前得版本略有区别,Ubuntu18.04是需要编辑/network/interfaces来设置静态网络

示例

配置成DHCP

network :
    ethernets:
        ens33 :
            dhcp4: true
version: 2

配置完成之后要sudo netplan apply 应用配置

示例配置静态IP

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33: # 这里的ens33是网卡名称,需要替换为实际网卡名称
      dhcp4: no
      addresses: [192.168.1.100/24] # 静态IP地址和子网掩码
      gateway4: 192.168.1.1        # 网关地址
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4] # DNS服务器地址

配置完成之后要sudo netplan apply 应用配置

ssh连接至另一台主机及scp文件的示例

如使用如下进行连接

ssh -p 22 python@172.16.140.138

scp 是 Secure Copy 的缩写,是一个在 Linux 和类 Unix 系统中用于通过 SSH 安全地在本地和远程计算机之间复制文件和目录的命令。以下是一些 scp 命令的使用示例:

示例 1:从远程主机复制单个文件到本地主机

scp user@remote-host:/path/to/remotefile localfile

解释:这个命令将远程主机上的 /path/to/remotefile 文件复制到本地当前目录下,并重命名为 localfile

示例 2:将本地文件上传到远程主机

scp localfile user@remote-host:/path/to/destination

解释:这个命令将本地的 localfile 文件上传到远程主机的 /path/to/destination 路径下。

示例 3:使用指定端口号

scp -P 2222 localfile user@remote-host:/path/to/destination

解释:如果远程主机的 SSH 服务运行在非默认的 22 端口(例如这里是 2222),则使用 -P 参数指定端口号。

示例 4:递归复制整个目录

scp -r local_directory user@remote-host:/path/to/destination

解释:使用 -r 参数可递归地复制本地目录及其所有子目录和文件到远程主机。

示例 5:从远程主机下载整个目录到本地

scp -r user@remote-host:/path/to/remote-directory local_directory

解释:同样使用 -r 参数,可以从远程主机递归复制整个目录到本地指定目录。

示例 6:压缩传输以节省带宽

scp -C user@remote-host:/path/to/bigfile localfile

解释:使用 -C 参数会在传输过程中启用压缩,这对于大文件或慢速网络连接特别有用。

请确保替换上述命令中的 user 为远程主机的实际用户名,remote-host 为远程主机的 IP 地址或域名,以及正确的文件和目录路径。执行命令时可能需要输入远程主机的密码或使用 SSH 密钥对进行无密码登录。

ssh免密登陆

我们在A设备上生成密钥之的,再copy过去B设备,这样,我们以后在A设备上进行登陆B设备时就不再需要密码了。

在A设备上(客户端)执行如下步骤之后,便可以实现A访问B不再需要输入密码了。
●配置公钥
执行ssh-keygen 即可生成SSH钥匙,一路回车即可
●上传公钥到服务器
执行ssh-copy-id -p port user@remote. 可以让远程服务器记住我们的公钥

image-20240321173914474

使用别名登陆ssh服务器

在文件内~/.ssh/config添加如下内容便可

Host mac
    HostName ip地址   #IP地址换成服务器的地址
    User itheima     #远程主机的用户名
    Port 22            #远程主机的端口

#接下来就可以直接通过
ssh mac #来直接连接远程主机了

image-20240321180203683

用户和权限

权限名称 数字代号(八进制) 二进制表示
读(Read) 4 100
写(Write) 2 010
执行(Execute) 1 001

在实际应用中,文件或目录的权限通常按照所有者(Owner)、所属组(Group)和其他用户(Others)三类来划分,并且每一类都有各自的读、写、执行权限。下面是一个详细表格:

类别 读权限 写权限 执行权限 总权限(八进制)
所有者 r w x 4+2+1=7
所属组 r 4+0+0=4
其他用户 r 4+0+0=4

所以,一个文件或目录的权限可以用类似rwxr-xr--(即754)的方式来表示,这里的每一个字符位置分别对应所有者、所属组和其他用户的读、写、执行权限。

  • 第1、2、3位:所有者的权限(最高位到最低位依次为x、w、r)
  • 第4、5、6位:所属组的权限
  • 第7、8、9位:其他用户的权限

在上表的例子中,所有者拥有读、写、执行全部权限(7),所属组和其他用户都只有读权限(4)。

image-20240322102630843

用户组及权限

在类Unix系统(如Linux、macOS)中,你可以通过命令行终端进行用户组的管理。以下是一些常用的组管理命令:

  1. 创建新组

     groupadd [groupname]
    

    例如,创建名为developers的新组:

     sudo groupadd developers
    
  2. 查看现有的组

     cat /etc/group
    

    或者,查找特定组名:

     grep ^[groupname]: /etc/group
    
  3. 删除组

     groupdel [groupname]
    

    删除名为developers的组:

     sudo groupdel developers
    
  4. 添加用户到组

     usermod -a -G [groupname] [username]
    

    将用户john添加到developers组中:

     sudo usermod -a -G developers john
    
  5. 查看用户所在的组

     groups [username]
    

    查看用户john所在的组:

     groups john
    

注意:大部分涉及系统管理的命令(如创建、删除组,添加用户到组)需要超级用户权限(sudo)。

为文件赋值组权限

chgrp -R dev (+文件名)

image-20240322113216360

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

好的,以下是整理后的生成表格:

命令序号 命令 作用 说明
01 useradd -m-g 组 新建用户名
(sudo user add -M dev zhangsan)
添加新用户 -m 自动建立用户目录 -g 指定所在组,不指定则新建同名组
02 passwd 用户名 设置密码 普通用户可直接用 passwd 修改自己密码
03 userdel -r 用户名 删除用户 -r 删除用户目录
04 cat /etc/passwd \ grep 用户名 确认用户信息 查找用户名信息,新建后保存在该文件中

注意:以上表格中的“新建用户名”、“用户名”等为占位符,实际操作时需要替换为具体的用户名。

创建完用户之后,要修改用户登陆的shell才行,不然ubuntu默认是dash而不是bash

查看用户信息

序号 命令 作用
01 id [用户名] 查看 UID、GID 信息
02 who 查看当前已登录用户列表
03 whoami 查看当前登录用户账号名称

image-20240322160305594

直接id就是显示当前用户的信息

路径/etc/passwd查看用户配置信息

用户主组及附加组

image-20240322161812733

如上图,id zhangsan就没有附加组权限,而python用户是有附加组权限的,它可以使用sudo命令执行root的权限

如使用zhangsan进行sudo 创建用户,结果如下

image-20240322162035853

修改用户的主组及附加组的命令如下

具体查看用户有什么主组及附加组,可使用命令id来进行

usermod可以用来设置用户的主组/附加组和登录Shell,命令格式如下:

  • 主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组

  • 附加组:在etc/group 中最后-列表示该组的用户列表,用于指定用户的附加权限

命令格式 描述
usermod -g 组 用户名 修改用户的主组(passwd中的GID)
usermod -G 组 用户名 修改用户的附加组
usermod -s /bin/bash 修改用户登录Shell
usermod -G sudo 用户名 将用户添加到sudo附加组中

所以-g命令是修改用户的主组、而-G是修改用户的附加组(比如给用户添加sudo 附加组权限)

修改用户登陆的shell才行

要使用usermod修改用户登陆的shell

登录使用的Shell, 就是登录之后,使用的终端命令,ubuntu默认是dash,而不是bash所以要进行修改的

#修改用户登录Shell,注意这里参数是小写的-s
usermod -s /bin/bash 用户名

改变了shell之后,才会出现如下效果

image-20240322174847448

如果不修改的话,效果是如下的,很难看。

image-20240322174907944

目录
相关文章
|
4月前
|
存储 NoSQL Ubuntu
在Ubuntu上安装Redis并学习使用get、set和keys命令
在Ubuntu上安装Redis并学习使用get、set和keys命令
|
11月前
|
开发工具 git
学习视觉SLAM14讲ch4时,运行example工程,及所遇到的问题汇总(Ubuntu18.04)
学习视觉SLAM14讲ch4时,运行example工程,及所遇到的问题汇总(Ubuntu18.04)
96 0
|
机器学习/深度学习 Ubuntu 前端开发
数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题(以ubuntu-18.04.3为例)
数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题(以ubuntu-18.04.3为例)
618 0
数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题(以ubuntu-18.04.3为例)
|
Ubuntu Linux Shell
Linux学习 - Windows使用xshell连接ubuntu远程控制
Linux学习 - Windows使用xshell连接ubuntu远程控制
142 0
|
Ubuntu Linux 数据库
Linux 学习- Ubuntu 查看本机IP
Linux 学习- Ubuntu 查看本机IP
341 0
|
JavaScript Ubuntu 前端开发
Ubuntu Server搭建Hyperledger Fabric 2.1学习环境
Ubuntu Server搭建Hyperledger Fabric 2.1学习环境
269 0
Ubuntu Server搭建Hyperledger Fabric 2.1学习环境
|
Ubuntu Linux 数据安全/隐私保护
Linux学习之ubuntu文件系统
主要记录学习ubuntu的学习过程
248 0
Linux学习之ubuntu文件系统