Table of Contents
前言
Linux的历史可以追溯到1991年,当时一位芬兰大学生Linus Torvalds开始编写一个新的操作系统内核。他受到了Unix操作系统的启发,但受限于Unix的高昂价格,他希望创建一个免费的、开放源代码的替代品。因此,他着手开发一个用于个人计算机的新操作系统内核,最终诞生了Linux内核。
请记住这个大学生的名字Linus Benedict Torvalds中文名(林纳斯·贝内迪克特·托瓦兹),linux就是以他的名字命名的,林纳斯是个暴脾气,他曾毫不客气的怒怼C++,称 “C++ 真是一门很烂的语言!". 还有一次这位大牛在芬兰的阿尔托大学所主办的一次活动时称Nvidia是他所接触过的“最烂的公司”。
林纳斯创建了linux这个免费开源的操作系统,他是开源运动的引领者。同时他也是全世界最牛X的黑客之一。除了我们熟知的linux,还有一个所有程序员都家喻户晓的工具git也是林纳斯的作品。在此做为开源软件的受益者向大佬致敬。
一、学习linux的意义
对于一个程序员来说,学习Linux是必要的。这是因为:
广泛应用:Linux是世界上最常用的服务器操作系统之一,几乎所有的云计算平台、服务器、网络设备等都在使用Linux。因此,熟悉Linux操作系统可以为程序员提供更广泛的就业机会和职业发展空间。
开放源代码:Linux的开放源代码性质使得程序员可以深入了解操作系统的工作原理,学习和参与开源项目的开发,提高自己的编程能力和经验。
自由定制:Linux操作系统的自由度非常高,可以根据需求进行定制和优化,适应各种不同的应用场景。掌握Linux可以让程序员更好地进行系统调优和性能优化。
开放协作:Linux社区是全球最大的开源社区之一,学习Linux意味着可以与全球顶尖的开发者和专家进行交流和合作,共同解决问题,提高自己的技术水平。
二、常用命令
下边一ubuntu为例介绍linux常用命令的使用
(1) 文件和目录操作命令
ls
列出目录内容
示例:ls
cd
更改目录
示例:cd /home/user
pwd
显示当前工作目录
示例:pwd
mkdir
创建新目录
示例:mkdir new_directory
rmdir
删除空目录
示例:rmdir empty_directory
rm
删除文件或目录
示例:rm file.txt, rm -r directory
cp
复制文件或目录
示例:cp source.txt destination.txt
mv
移动或重命名文件或目录
示例:mv oldname.txt newname.txt
touch
创建新文件
示例:touch newfile.txt
(2)文件内容查看和编辑命令
cat
显示文件内容
示例:cat file.txt
less
分页查看文件内容
示例:less file.txt
more
分页查看文件内容
示例:more file.txt
head
显示文件开头部分
示例:head -n 10 file.txt
tail
显示文件末尾部分
示例:tail -n 10 file.txt
nano
轻量级文本编辑器
示例:nano file.txt
vim
强大的文本编辑器
示例:vim file.txt
(3)文件权限和所有权命令
chmod
修改文件权限
示例:chmod 755 script.sh
chown
更改文件所有者
示例:chown user:user file.txt
chgrp
更改文件所属组
示例:chgrp group file.txt
(4)系统信息和管理命令
uname
显示系统信息
示例:uname -a
top
动态显示系统进程
示例:top
ps
显示当前进程
示例:ps aux
df
显示磁盘使用情况
示例:df -h
du
显示目录空间使用情况
示例:du -sh directory
free
显示内存使用情况
示例:free -h
uptime
显示系统运行时间和负载
示例:uptime
hostname
显示或设置系统主机名
示例:hostname, hostname newname
whoami
显示当前用户
示例:whoami
(5)软件包管理命令
apt-get
Debian系包管理器,用于安装/升级软件
示例:sudo apt-get update, sudo apt-get upgrade, sudo apt-get install package
apt-cache
查询软件包信息
示例:apt-cache search package
(6) 网络管理命令
ping
测试网络连接
示例:ping google.com
ifconfig
显示或配置网络接口(需安装net-tools)
示例:ifconfig
ip
显示或配置网络接口
示例:ip addr show
netstat
显示网络状态和连接
示例:netstat -tuln
ssh
通过SSH连接远程服务器
示例:ssh user@hostname
scp
通过SSH复制文件
示例:scp file.txt user@hostname:/path
wget
从网络下载文件
示例:wget http://example.com/file.txt
curl
从网络获取或发送数据
示例:curl http://example.com
(7) 压缩和解压缩命令
tar
处理tar文件(打包/解包)
示例:tar -czvf archive.tar.gz directory, tar -xzvf archive.tar.gz
gzip
压缩文件
示例:gzip file.txt
gunzip
解压文件
示例:gunzip file.txt.gz
zip
压缩文件
示例:zip archive.zip file1 file2
unzip
解压文件
示例:unzip archive.zip
用户和组管理命令
adduser
添加新用户并创建用户目录
示例:sudo adduser username
useradd
添加新用户(不创建用户目录)
示例:sudo useradd username
passwd
设置或更改用户密码
示例:sudo passwd username
usermod
修改用户属性
示例:sudo usermod -aG groupname username
deluser
删除用户及其主目录
示例:sudo deluser username
userdel
删除用户(不删除主目录)
示例:sudo userdel username
chage
更改用户密码有效期
示例:sudo chage -l username
addgroup
添加新组
示例:sudo addgroup groupname
groupadd
添加新组
示例:sudo groupadd groupname
delgroup
删除组
示例:sudo delgroup groupname
groupdel
删除组
示例:sudo groupdel groupname
gpasswd
管理/etc/group中的组成员
示例:sudo gpasswd -a username groupname
(8) 权限管理命令
ls -l
查看文件或目录的权限
示例:ls -l filename
chmod
修改文件或目录的权限
示例:
符号模式:chmod u+r filename
八进制模式:chmod 755 filename
三、用户和组管理
在Ubuntu系统上,用户和组管理是系统管理的重要部分,以下是一些常用的用户和组管理命令及其使用示例
(1) 用户管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
| adduser | 添加新用户并创建用户目录 | sudo adduser username |
| useradd | 添加新用户(不创建用户目录) | sudo useradd username |
| passwd | 设置或更改用户密码 | sudo passwd username |
| usermod | 修改用户属性 | sudo usermod -aG groupname username |
| deluser | 删除用户及其主目录 | sudo deluser username |
| userdel | 删除用户(不删除主目录) | sudo userdel username |
| chage | 更改用户密码有效期 | sudo chage -l username |
(2) 组管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
| addgroup | 添加新组(Ubuntu专有) | sudo addgroup groupname |
| groupadd | 添加新组 | sudo useradd username |
| delgroup | 删除组(Ubuntu专有) | sudo delgroup groupname |
| groupdel | 删除组 | sudo groupdel groupname |
| gpasswd | 管理/etc/group中的组成员 | sudo gpasswd -a username groupname |
(3) 用户和组信息查询命令
| 命令 | 描述 | 示例 |
|---|---|---|
| id | 显示用户和组的ID | id username |
| groups | 显示用户所属的所有组 | groups username |
| finger | 显示用户信息 | finger username |
| getent | 查询系统数据库中的用户和组信息 | getent passwd username, getent group groupname |
(4)用户和组相关文件
-
/etc/passwd:存储用户账户信息,每行记录一个用户
-
/etc/shadow:存储用户密码信息及密码有效期信息(只有root用户可读)
-
/etc/group:存储组信息,每行记录一个组。
(5)用命令示例
添加用户
adduser命令会交互式地提示输入新用户的密码和其他信息,并自动创建用户的主目录。
修改用户
将用户john添加到sudo组中,使其具有管理员权限。
删除用户
删除用户john及其主目录。
添加组
创建一个名为developers的新组。
添加用户到组
将用户john添加到developers组中。
查询用户信息
显示用户john的UID、GID及所属组的信息。
显示用户john所属的所有组。
四、文件和目录权限管理
在Linux系统中,查看和修改文件或目录的读写权限是日常管理中的重要任务。以下是相关的常用命令及其使用方法:
(1)查看文件或目录的权限
使用 ls -l 命令
ls -l 命令可以显示文件或目录的详细信息,包括权限、所有者、所属组、大小和修改时间。
或
输出示例:
解释:
-
-rw-r–r–:文件权限,分为三部分,每部分各有三个字符。
-
第一个字符表示文件类型:-表示普通文件,d表示目录。
-
接下来的三个字符rw-表示所有者的权限:读(r)、写(w)、执行(x)。
-
中间的三个字符r–表示所属组的权限。
-
最后的三个字符r–表示其他用户的权限。
-
(2)修改文件或目录的权限
使用 chmod 命令
chmod 命令用于修改文件或目录的权限,可以使用符号模式或八进制模式。
符号模式
-
u:所有者 (user)
-
g:所属组 (group)
-
o:其他用户 (others)
-
a:所有用户 (all)
-
+:添加权限
-
-:删除权限
-
=:设置权限
示例:
八进制模式
-
读 (r) = 4
-
写 (w) = 2
-
执行 (x) = 1
每个权限段的值相加得到总权限值。
-
所有者权限在第一个位置
-
所属组权限在第二个位置
-
其他用户权限在第三个位置
示例:
(3)实用示例
查看文件权限
输出:
修改文件权限(符号模式)
修改文件权限(八进制模式)
查看目录权限
输出:
修改目录权限(符号模式)
修改目录权限(八进制模式)
相关文章
linux服务器管理工具哪家强?对比1panel和宝塔分类:教程
linux服务器管理工具介绍
阿里云使用github、pip、docker加速分类:教程
国内阿里云服务器github、pip、docker加速的方法
视频文章测试:YouTube 嵌入示例分类:教程
测试文章页面的 YouTube 视频嵌入能力:响应式、不自动播放、按需加载播放器。