skip to content
AI私塾

linux基础

AI私塾 / / 12 分钟阅读

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)实用示例

查看文件权限

输出:

修改文件权限(符号模式)

修改文件权限(八进制模式)

查看目录权限

输出:

修改目录权限(符号模式)

修改目录权限(八进制模式)

相关文章