linux基础

前言

Linux的历史可以追溯到1991年,当时一位芬兰大学生Linus Torvalds开始编写一个新的操作系统内核。他受到了Unix操作系统的启发,但受限于Unix的高昂价格,他希望创建一个免费的、开放源代码的替代品。因此,他着手开发一个用于个人计算机的新操作系统内核,最终诞生了Linux内核。
请记住这个大学生的名字Linus Benedict Torvalds中文名(林纳斯·贝内迪克特·托瓦兹),linux就是以他的名字命名的,林纳斯是个暴脾气,他曾毫不客气的怒怼C++,称 “C++ 真是一门很烂的语言!”. 还有一次这位大牛在芬兰的阿尔托大学所主办的一次活动时称Nvidia是他所接触过的“最烂的公司”。
林纳斯创建了linux这个免费开源的操作系统,他是开源运动的引领者。同时他也是全世界最牛X的黑客之一。除了我们熟知的linux,还有一个所有程序员都家喻户晓的工具git也是林纳斯的作品。在此做为开源软件的受益者向大佬致敬。

一、学习linux的意义

对于一个程序员来说,学习Linux是必要的。这是因为:

  1. 广泛应用: Linux是世界上最常用的服务器操作系统之一,几乎所有的云计算平台、服务器、网络设备等都在使用Linux。因此,熟悉Linux操作系统可以为程序员提供更广泛的就业机会和职业发展空间。
  2. 开放源代码: Linux的开放源代码性质使得程序员可以深入了解操作系统的工作原理,学习和参与开源项目的开发,提高自己的编程能力和经验。
    自由定制:Linux操作系统的自由度非常高,可以根据需求进行定制和优化,适应各种不同的应用场景。掌握Linux可以让程序员更好地进行系统调优和性能优化。
  3. 开放协作: Linux社区是全球最大的开源社区之一,学习Linux意味着可以与全球顶尖的开发者和专家进行交流和合作,共同解决问题,提高自己的技术水平。

对于想要成为一名优秀程序员的人来说,学习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显示用户和组的IDid username
groups显示用户所属的所有组groups username
finger显示用户信息finger username
getent查询系统数据库中的用户和组信息getent passwd username, getent group groupname
(4)用户和组相关文件
  • /etc/passwd:存储用户账户信息,每行记录一个用户
cat /etc/passwd
  • /etc/shadow:存储用户密码信息及密码有效期信息(只有root用户可读)
sudo cat /etc/shadow
  • /etc/group:存储组信息,每行记录一个组。
cat /etc/group
(5)用命令示例

添加用户

sudo adduser john

adduser命令会交互式地提示输入新用户的密码和其他信息,并自动创建用户的主目录。
修改用户

sudo usermod -aG sudo john

将用户john添加到sudo组中,使其具有管理员权限。

删除用户

sudo deluser john

删除用户john及其主目录。

添加组

sudo addgroup developers

创建一个名为developers的新组。

添加用户到组

sudo gpasswd -a john developers

将用户john添加到developers组中。

查询用户信息

id john

显示用户john的UID、GID及所属组的信息。

groups john

显示用户john所属的所有组。

四、文件和目录权限管理

在Linux系统中,查看和修改文件或目录的读写权限是日常管理中的重要任务。以下是相关的常用命令及其使用方法:

(1)查看文件或目录的权限

使用 ls -l 命令
ls -l 命令可以显示文件或目录的详细信息,包括权限、所有者、所属组、大小和修改时间。

ls -l filename

ls -l /path/to/directory

输出示例:

-rw-r--r-- 1 user group 1234 Jan 1 12:34 filename
drwxr-xr-x 2 user group 4096 Jan 1 12:34 directory

解释:

  • -rw-r–r–:文件权限,分为三部分,每部分各有三个字符。
    • 第一个字符表示文件类型:-表示普通文件,d表示目录。
    • 接下来的三个字符rw-表示所有者的权限:读(r)、写(w)、执行(x)。
    • 中间的三个字符r–表示所属组的权限。
    • 最后的三个字符r–表示其他用户的权限。
(2)修改文件或目录的权限

使用 chmod 命令
chmod 命令用于修改文件或目录的权限,可以使用符号模式或八进制模式。
符号模式

  • u:所有者 (user)
  • g:所属组 (group)
  • o:其他用户 (others)
  • a:所有用户 (all)
  • +:添加权限
  • -:删除权限
  • =:设置权限

示例:

chmod u+r filename    # 给所有者添加读权限
chmod g-w filename    # 移除所属组的写权限
chmod o+x filename    # 给其他用户添加执行权限
chmod a=r filename    # 设置所有用户只读权限

八进制模式

  • 读 ® = 4
  • 写 (w) = 2
  • 执行 (x) = 1
    每个权限段的值相加得到总权限值。
  • 所有者权限在第一个位置
  • 所属组权限在第二个位置
  • 其他用户权限在第三个位置
    示例:
chmod 644 filename    # -rw-r--r--
chmod 755 directory   # drwxr-xr-x
(3)实用示例

查看文件权限

ls -l example.txt

输出:

-rw-r--r-- 1 user group 1234 Jan 1 12:34 example.txt

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

chmod u+x example.txt   # 给所有者添加执行权限
chmod g+w example.txt   # 给所属组添加写权限
chmod o-r example.txt   # 移除其他用户的读权限

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

chmod 755 example.txt   # 设置文件权限为-rwxr-xr-x
chmod 600 example.txt   # 设置文件权限为-rw-------

查看目录权限

ls -ld /path/to/directory

输出:

drwxr-xr-x 2 user group 4096 Jan 1 12:34 directory

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

chmod u+rwx /path/to/directory   # 给所有者添加读、写、执行权限
chmod g+rx /path/to/directory    # 给所属组添加读、执行权限
chmod o-rwx /path/to/directory   # 移除其他用户的所有权限

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

chmod 755 /path/to/directory   # 设置目录权限为drwxr-xr-x
chmod 700 /path/to/directory   # 设置目录权限为drwx------
  • 36
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值