首页 > 系统相关 >Linux学习笔记(一)(以Ubuntu为例)

Linux学习笔记(一)(以Ubuntu为例)

时间:2024-06-20 16:58:51浏览次数:14  
标签:文件 为例 用户组 Ubuntu 用户 语法 命令 Linux 权限

Linux操作命令的笔记(一)(Ubuntu)

其实Linux不同发行版的基础命令区别不大。

Linux命令基础格式

命令通用格式:command [-options] [parameter]

  • [] 表示可选的意思
  • command:命令本身
  • -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
  • parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等

提示:Linux命令,它们的本体是一个个二进制可执行程序

Linux命令行快捷键

  1. Ctrl + c 强制停止(某些命令执行的中断、命令输错的重新输入)
  2. Ctrl + d 退出登出(退出登出某些特定程序的专属页面)ps:不能用于退出vi或vim
  3. history 查看历史命令
  4. ! 命令前缀,自动匹配上一个命令
  5. Ctrl + r 搜索历史命令
  6. Ctrl + a | e 光标移动到命令开始或结束
  7. Ctrl + ← | 左右跳单词
  8. Ctrl + lclear 命令清屏

包管理工具安装软件

安装软件方式:

  1. 下载安装包自行安装

    • Windows:exe、msi等
    • Mac:dmg、pkg等
    • CentOS:rpm
    • Ubuntu:deb
  2. 系统的应用商店内安装

    • Windows:Microsoft Store商店
    • Mac:AppStore商店
    • CentOS:yum
    • Ubuntu:apt

包管理工具在线下载

CentOS和Ubuntu包管理工具在线下载(用于自动化安装配置Linux软件,并可以自行解决依赖问题)。包管理工具安装软件需要root权限,可以su切换到root用户或使用sudo提权:

CentOS中,使用yum命令联网管理软件下载

语法:yum [-y] [install | remove | search] 软件名称

参数:

  • 选项:-y,自行确认,无需手动确认安装或卸载过程
  • install:安装
  • remove:卸载
  • search:搜索

Ubuntu中,使用apt命令联网管理软件下载

语法:apt [-y] [install | remove | search] 软件名称

参数:

  • 选项:-y,自行确认,无需手动确认安装或卸载过程
  • install:安装
  • remove:卸载
  • search:搜索

路径

相对路径和绝对路径

  • 绝对路径:以根节点做起点,描述路径的方式,路径以 / 开头
  • 相对路径:以当前目录做起点,描述路径的方式,路径不需以 / 开头

特殊路径符

  • . 表示当前目录,比如 cd .cd ./Desktop
  • .. 表示上一级目录,比如 cd ..cd ../..
  • ~ 表示用户的HOME目录,比如 cd ~cd ~/Desktop
  • 提示cd ~ 相当于回家

环境变量

用途:在Bash shell中设置环境变量意味着你在Bash会话中定义了变量,这些变量可以被运行在该会话中的程序和脚本访问。环境变量是一种向不同程序传递配置信息的机制。设置环境变量通常通过在启动时执行的脚本文件来完成,这样设置的变量将会应用到用户的所有会话中。

案例:当安装Java JDK时,需要设置 JAVA_HOME 环境变量来指定JDK的安装路径,以便于Java程序知道从哪里找到JDK。同样,还需要将JDK的 bin 目录添加到 PATH 环境变量中,这样就可以在任何目录下执行 java 命令了。

描述:系统级/etc/profile 和用户的 ~/.bashrc 文件都是在Bash shell中设置环境变量的脚本文件。

  1. 系统环境变量 /etc/profile:系统级别的配置文件,对所有用户生效。当任何用户登录时,系统会读取这个文件,并执行里面的命令。这是系统级别的初始化文件,对所有使用Bash的用户生效。它在登录时执行。

  2. 用户环境变量 ~/.bashrc:用户级别的配置文件,只对当前用户生效。它在每次新的shell会话开始时加载。这是用户级别的初始化文件,仅对当前用户生效。它在每次启动一个新的非登录Bash会话时执行。

案例:配置Java环境变量(/etc/profile~/.bashrc 文件)

# 配置Java环境变量
export JAVA_HOME=/usr/lib/jvm/jdk8_391
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib

# 执行命令重新加载环境变量
source /etc/profile

Linux权限管控信息

认知权限信息

通过 ls -l 可以以列表的形式查看目录内容并显示权限细节。

在这里插入图片描述
在这里插入图片描述

序号1的权限细节:

在这里插入图片描述

权限的具体含义

  • r(读权限):
    • 针对文件:可以查看文件内容。
    • 针对文件夹:可以查看文件夹内容,如执行 ls 命令。
  • w(写权限):
    • 针对文件:表示可以修改此文件。
    • 针对文件夹:可以在文件夹内创建、删除、改名等操作。
  • x(执行权限):
    • 针对文件:表示可以将文件作为程序执行。
    • 针对文件夹:表示可以更改工作目录到此文件夹,即 cd 进入。

管道符

  • | 管道符:将管道符左边命令的结果作为右边命令的输入

source命令

  • 用途:在当前shell环境中执行指定的文件里的命令。
  • 描述:source是一个shell内置命令,执行的脚本不会启动新的shell,它在当前shell中运行,这意味着所有的变量和函数将在当前shell中定义,并且对当前会话立即生效。

tar命令

  • 用途:解压 tar 压缩文件到当前目录中。
  • 参数:
    • -x:表示解压文件。
    • -z:表示使用gzip解压。
    • -v:表示显示详细的解压过程,即verbose模式。
    • -f:表示后面跟着要解压的文件名。
  • 案例:tar -xzvf 文件名.tar.gz

文件和目录管理

创建和删除操作

  • mkdir 命令:创建新目录。

    • 语法:mkdir [-p] [Linux路径]
    • -p 选项表示自动创建不存在的父目录。
  • touch 命令:创建文件。

    • 语法:touch [Linux路径]
  • rm 命令:删除文件或文件夹。

    • -r:递归删除目录。
    • -f:强制删除,无需确认。

文件内容查看和复制

  • cat 命令:查看文件内容。

    • 无选项,参数为文件路径。
  • more 命令:分页显示文件内容。

    • 使用空格键翻页,q 退出查看。
  • cp 命令:复制文件或文件夹。

    • -r 选项用于复制目录。
  • mv 命令:移动或重命名文件或文件夹。

    • 无特别选项,参数为源路径和目标路径。

权限和所有权修改

  • chmod 命令:修改文件或文件夹的权限。

    • 示例:chmod u=rwx,g=rx,o=x [文件或文件夹名]
  • chown 命令:修改文件或文件夹的所属用户和组。

    • 语法:chown [用户][:][组] [文件或文件夹名]
    • -R 选项适用于递归操作。

系统和网络管理命令

用户和用户组管理

  • useradd 命令:创建新用户。

    • -g 指定用户组,-d 指定用户主目录。
  • groupaddgroupdel 命令:创建和删除用户组。

  • usermod 命令:修改用户所属组。

    • -aG 添加用户到指定组。

系统服务管理

  • systemctl 命令:管理系统服务(启动、停止、自启管理等)。

    • start, stop, enable, disable 等选项用于控制服务。
  • sudo 命令:为普通用户执行命令提供临时的root权限。

    • 配置需要编辑 /etc/sudoers 文件。

su命令

  • 用途:用于账户切换的系统命令(Switch User)
  • 语法:su [-] [用户名]
  • 参数:
    • - 符号是可选的,表示是否在切换用户后加载环境变量,建议带上。
    • 参数:用户名,表示要切换的用户,用户名也是可以省略的,省略表示切换到root用户。
  • 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:Ctrl + d
  • 提示:使用普通用户切换到其他用户需要输入密码,如切换到root用户;使用root用户切换到其他用户,可以无需密码直接切换。

特权命令

  • sudosu 命令用于权限提升和用户切换。
    • sudo [命令] 执行需要管理员权限的命令。
    • su - [用户名] 切换到指定用户。

高级命令和工具

查找和过滤命令

  • find 命令:查找文件和目录。

    • 语法:find [起始路径] -name "文件名"
    • -size 参数可以按文件大小查找,例如 -size +100M 查找大于100MB的文件。
  • grep 命令:从文件中过滤含有特定关键字的行。

    • 语法:grep [选项] [关键字] [文件路径]
    • -n 选项显示匹配行的行号。

统计命令

  • wc 命令:统计文件的行数、单词数、字节数。
    • 语法:wc [-lwm] [文件路径]
    • -l 行数,-w 单词数,-m 字符数。

输出和重定向

  • echo 命令:输出文本到标准输出或重定向到文件。
    • 语法:echo [文本] > [文件路径]
    • > 覆盖写入文件,>> 追加到文件。

文件尾部内容查看

  • tail 命令:查看文件的尾部内容。
    • -f 用于实时跟踪文件更新。

文本编辑器

  • vi/vim 命令:命令行下的文本编辑器。
    • 进入命令模式,输入模式和底线命令模式。
    • 命令模式下,键入 i 进入插入模式,: 进入底线命令模式进行保存(w)或退出(q).

用户和用户组管理

  • id 命令:查看用户的UID和所属的组。
  • useradd, userdel, usermod 管理用户账号和属性。
  • groupadd, groupdel 管理用户组。

文件和目录权限修改

  • chmodchown 命令用于改变文件和目录的权限及所有权。
    • chmod 755 [文件名]chown 用户名:用户组 [文件名]

系统服务管理

  • systemctl 命令用于管理系统服务。
    • 示例:systemctl start [服务名], systemctl enable [服务名]

特权命令

  • sudosu 命令用于权限提升和用户切换。
    • sudo [命令] 执行需要管理员权限的命令。
    • su - [用户名] 切换到指定用户。

其他常用命令

which命令

  • 用途:查找命令的程序文件位置
  • 语法:which [要查找的命令]
  • 案例:which java

find命令

  • 用途:查找指定(文件名或大小)的文件
  • 语法:
    • 按文件名查找文件:find [起始路径] -name "被查找文件名"
    • 按文件大小查找文件:find [起始路径] -size +|-n[kMG]
  • 案例:
    • 查找小于10KB的文件:find / -size -10k
    • 查找大于100MB的文件:find / -size +100M
    • 查找大于1GB的文件:find / -size +1G

grep命令

  • 用途:从文件或管道符输入中通过关键字过滤匹配行
  • 语法:grep [-n] [关键字] [文件路径]
  • 参数:
    • -n:显示匹配的行的行号
    • 关键字,建议使用引号包围
  • 文件路径,可作为管道符的输入,不写该参数

wc命令

  • 用途:统计文件或管道符输入的行数、单词数量、字节数、字符数等
  • 语法:wc [-c -m -l -w] [文件路径]
  • 参数:
    • -c 字节数
    • -m 字符数
    • -l 行数
    • -w 单词数

echo命令

  • 用途:在命令行内输出指定内容
  • 语法:echo [输出的内容]
  • 参数:
    • 无需选项,只有一个参数,表示要输出的内容
    • 复杂的内容可以用引号包围

反引号(飘号)`

  • 用途:用反引号包围的内容会被当做命令执行,而非普通字符

重定向符

  • 用途:将左侧命令的结果写入到符号右侧指定的文件中
    • 覆写>:覆盖写入到符号右侧指定的文件中,清空旧内容
    • 追加>>:追加写入到符号右侧指定的文件中

tail命令

  • 用途:查看文件尾部内容,跟踪文件的最新修改
  • 语法:tail [-f -num] [Linux路径]
  • 参数:
    • -f:持续跟踪
    • -num:查看尾部多少行,不填默认10行

vi和vim命令行文本编辑器

  • 用途:用于在命令行下对文本文件进行编辑
  • 语法:vi [文件路径]vim [文件路径]

vi/vim编辑器的三种工作模式:

在这里插入图片描述

  1. 命令模式(Command mode):命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。

    • 命令模式快捷键
      在这里插入图片描述
      在这里插入图片描述
  2. 输入模式(Insert mode):可以对文件内容进行自由编辑。进入编辑模式后,任何快捷键都没有作用,就是正常的输入文本模式,通过ESC键可以退回命令模式。

  3. 底线命令模式(Last line mode):以:开始,通常用于文件的保存、退出。

    • 底线命令模式快捷键
      在这里插入图片描述

root用户(超级管理员)

描述:root用户拥有最大的操作系统权限,而普通用户在许多地方的权限是受限的。

普通用户的权限,一般在其HOME目录内是不受限的,一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。

用户和用户组

查看当前系统中有哪些用户

语法:getent passwd

查询解释:共7份信息,分别是:用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

查看当前系统中有哪些用户组

语法:getent group

查询解释:共3份信息,分别是:组名称:组认证(显示为X):组ID

用户组管理(需以root用户执行)

在这里插入图片描述

  • 用途:Linux中关于权限管控级别有2个级别:用户、用户组

  • 介绍: Linux系统中可以:
    配置多个用户。
    配置多个用户组。
    一个用户可以加入多个用户组中。

  • Linux中关于权限的管控级别有2个级别:
    针对用户的权限控制。
    针对用户组的权限控制。

  • 创建用户组

    语法:groupadd 用户组名

  • 删除用户组

    语法:groupdel 用户组名

用户管理(需以root用户执行)

  • 创建用户

    语法:useradd [-g -d] 用户名

    参数:

    • -g 指定用户的组,不指定则创建同名组并自动加入
    • -d 指定用户HOME路径,不指定则默认在 /home/用户名
  • 删除用户

    语法:userdel [-r] 用户名

    参数:

    • -r 删除用户的HOME目录,不使用-r则删除用户时HOME目录保留
  • 查看用户所属组

    语法:id [用户名]

    参数:用户名(可选),不提供则查看自身

  • 修改用户所属组

    语法:usermod -aG 用户组 用户名

chmod命令和chown命令

chmod命令:修改权限信息

用途:修改文件、文件夹的权限信息(change mode)

注意:只有文件、文件夹的所属用户或者root用户可以修改

语法:chmod [-R] 权限 文件或文件夹

参数:

  • 选项:-R 对文件夹内的全部内容应用同样的操作
  • -R 用法1:u=rwx,g=rx,o=x,其中:u表示user所属用户权限,g表示group组权限,o代表other其它用户权限
  • -R 用法2:777,权限的数字序号表示法,r记为4,w记为2,x记为1。计算方法:每组权限顺序为rwx,三位二进制表示,有权限标记为1,转换为十进制0-7

示例:

chmod u=rwx,g=rx,o=x hello.txt # 将文件权限修改为:rwxr-x--x

systemctl命令

用途:Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启,能够被systemctl管理的软件一般也称之为:服务

语法:systemctl start | stop | restart | status | enable | disable | reload 服务名

参数:

  • start:启动
  • stop:关闭
  • restart:重启
  • status:查看状态
  • enable:开启开机自启
  • disable:关闭开机自启
  • reload:重新加载配置文件

系统内置的服务比如:

  • NetworkManager:主网络服务
  • network:副网络服务
  • firewalld:防火墙服务
  • sshd:ssh服务

说明:除了内置的服务外,部分第三方软件安装后也可以使用systemctl进行控制,如:

yum install -y ntp # ntp程序可以通过ntpd管理

示例操作:

# 启动 `sshd` 服务
sudo systemctl start sshd

# 停止 `sshd` 服务
sudo systemctl stop sshd

# 重启 `sshd` 服务
sudo systemctl restart sshd

# 查看 `sshd` 服务状态
sudo systemctl status sshd

# 启用 `sshd` 服务开机自启
sudo systemctl enable sshd

# 禁用 `sshd` 服务开机自启
sudo systemctl disable sshd

# 重新加载 `sshd` 服务配置文件
sudo systemctl reload sshd
  • 【未完待续…】

标签:文件,为例,用户组,Ubuntu,用户,语法,命令,Linux,权限
From: https://blog.csdn.net/m0_73464010/article/details/139743555

相关文章

  • linux修改shell导致无法登录
    linux修改shell导致无法登录我之前在切换shell的时候执行了chsh-sbashroot结果后面就无法登录系统了,当时不知道怎么一回事,只能先放到一边了。今天没什么事,突然福至心灵,为什么不试试进到单用户模式里面修改shell呢?然后我就得到了这样的提示:chsh:PAM:Authenticationfailure......
  • linux 内存和cpu信息
    free#free[root@VM-0-14-centos~]#freetotalusedfreesharedbuff/cacheavailableMem:101482027236082932512659528577780Swap:000#-h以合适......
  • 在Linux中,什么是中间件?什么是jdk?
    在计算机科学中,中间件(Middleware)和Java开发工具包(JDK)是两个不同的概念,它们在软件开发和运行环境中扮演着不同的角色。1.中间件(Middleware)中间件是位于客户端和服务器之间的软件层,它提供了通信和数据管理的服务。中间件使得不同的应用程序能够通过标准的通信协议进行交互,而不必......
  • 在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
    Tomcat和Resin是两种流行的Java应用服务器,用于运行JavaServlet、JSP(JavaServerPages)和其他基于Java的Web应用程序。下面是它们的一些区别和特点:Tomcat开发者:由Apache软件基金会开发和维护。特点:开源免费,拥有庞大的社区支持。轻量级,主要设计用于Servlet和JSP......
  • 在Linux中,什么叫网站灰度发布?
    网站灰度发布是一种软件发布策略,用于在全面推出新版本之前,逐步向用户群体推送更新。这种方法可以降低新版本引入的潜在风险,同时收集用户反馈以优化产品。以下是灰度发布的一些关键概念和步骤:用户分群:首先,将用户群体按照某种标准(如地理位置、用户行为、设备类型等)分成不同的组别......
  • 在Linux中,什么是CDN?
    在Linux中,CDN(ContentDeliveryNetwork,内容分发网络)是一种特殊的网络架构,用于优化和加速网络内容的分发。CDN通过在全球各地部署服务器节点(也称为边缘服务器或CDN节点),将内容(如图片、视频、网页文件等)缓存到这些节点上,使得用户能够就近获取所需的内容,从而显著提高了内容的访问速度......
  • 在Linux中,Tomcat8005、8009、8080三个端口的含义?
    在Linux系统中,Tomcat的8005、8009和8080这三个端口分别承担着不同的职责和功能。以下是这三个端口的详细解释:8005端口:用途:用于处理TomcatWeb服务器的SHUTDOWN命令。当需要关闭Tomcat服务器时,可以通过向该端口发送SHUTDOWN命令来实现。访问限制:默认情况下,此端口只能在本地访......
  • Linux一键DD纯净系统
    默认密码:MoeClub.org重装为CentOS:以下命令中的-c后面为CentOS版本号,-v后面为64位/32位,可根据需求进行替换。#CentOS6.1064位:bash<(wget--no-check-certificate-qO-'https://www.moeelf.com/attachment/LinuxShell/InstallNET.sh')-c6.10-v64-a#CentOS6.......
  • 转:重磅原创)冬之焱: 谈谈Linux内核的栈回溯与妙用
     unwind.c//SPDX-License-Identifier:GPL-2.0-only/**arch/arm/kernel/unwind.c**Copyright(C)2008ARMLimited**StackunwindingsupportforARM**AnARMEABIversionofgccisrequiredtogeneratetheunwind*tables.Forinformationab......
  • linux常见特殊符号介绍
    ${}、$[]、$()的区别${}Shell中使用一个已经定义过的变量,只要在变量名前面加美元符号$即可。变量名外面的{}是可选的,只是为了帮助解释器识别变量的边界。str="java"echo"Iam$str"echo"Iam$s{str}Script"$[]是运算操作符,用于对整数进行数学运算echo$[3*5]#......