ubuntu的学习与总结
参考
linux的文件结构
它只有根目录,多用户都在home文件夹下面组织目录结构。并没有跟windows一样的盘符的文件结构。
如下可以通过AI快速的查到
Linux主要目录速查表如下:
- /:根目录,Linux下有且只有一个根目录,所有的文件和目录都是从这里开始的。
- /bin 和 /usr/bin:存放可执行二进制文件目录,如常用的命令ls、tar、mv、cat等。其中,/bin目录存放着最经常使用的命令;而/usr/bin目录通常存放着一些不常用的命令。
- /boot:存放Linux系统启动时用到的一些文件,如Linux的内核文件(如/boot/vmlinuz)和系统引导管理器(如/boot/grub)。
- /dev:存放Linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备。
- /etc:系统配置文件存放的目录,包含系统主要的配置文件,如/etc/inittab、/etc/fstab、/etc/init.d等。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都会存放在这里。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,但重要数据不可放置在此目录下。
- /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
- /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常用命令的一部分,每个命令都支持多种选项和参数以实现更多功能。
注意:
在看文档的时候,[]代表可选的意思,如下图
关于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. 可以让远程服务器记住我们的公钥
使用别名登陆ssh服务器
在文件内~/.ssh/config添加如下内容便可
Host mac
HostName ip地址 #IP地址换成服务器的地址
User itheima #远程主机的用户名
Port 22 #远程主机的端口
#接下来就可以直接通过
ssh mac #来直接连接远程主机了
用户和权限
权限名称 | 数字代号(八进制) | 二进制表示 |
---|---|---|
读(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)。
用户组及权限
在类Unix系统(如Linux、macOS)中,你可以通过命令行终端进行用户组的管理。以下是一些常用的组管理命令:
创建新组
groupadd [groupname]
例如,创建名为
developers
的新组:sudo groupadd developers
查看现有的组
cat /etc/group
或者,查找特定组名:
grep ^[groupname]: /etc/group
删除组
groupdel [groupname]
删除名为
developers
的组:sudo groupdel developers
添加用户到组
usermod -a -G [groupname] [username]
将用户
john
添加到developers
组中:sudo usermod -a -G developers john
查看用户所在的组
groups [username]
查看用户
john
所在的组:groups john
注意:大部分涉及系统管理的命令(如创建、删除组,添加用户到组)需要超级用户权限(sudo)。
为文件赋值组权限
chgrp -R dev (+文件名)
创建用户/设置密码/删除用户
好的,以下是整理后的生成表格:
命令序号 | 命令 | 作用 | 说明 | |
---|---|---|---|---|
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 | 查看当前登录用户账号名称 |
直接id就是显示当前用户的信息
路径/etc/passwd
查看用户配置信息
用户主组及附加组
如上图,id zhangsan
就没有附加组权限,而python
用户是有附加组权限的,它可以使用sudo
命令执行root
的权限
如使用zhangsan
进行sudo 创建用户,结果如下
修改用户的主组及附加组的命令如下
具体查看用户有什么主组及附加组,可使用命令
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之后,才会出现如下效果
如果不修改的话,效果是如下的,很难看。