系统学习Linux操作系统命令的笔记(Ubuntu为例)

以Ubuntu为例操作命令的笔记。

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

Linux命令基础格式

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

语法中的[],表示可选的意思

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

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

Linux命令行快捷键

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

包管理工具安装软件

安装软件方式:

1、下载安装包自行安装

Windowsexemsi

Macdmgpkg

CentOSrpm

Ubuntudeb

2、系统的应用商店内安装

WindowsMicrosoft Store商店

MacAppStore商店

CentOSyum

Ubuntuapt

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

  • 1、CentOS中,使用yum命令联网管理软件下载
  • 语法:yum [-y] [install | remove | search] 软件名称
  • 参数:
    • 选项:-y,自行确认,无需手动确认安装或卸载过程
    • install:安装
    • remove:卸载
    • search:搜索
  • 2、Ubuntu中,使用apt命令联网管理软件下载
  • 语法:apt [-y] [install | remove | search] 软件名称
  • 参数:
    • 选项:-y,自行确认,无需手动确认安装或卸载过程
    • install:安装
    • remove:卸载
    • search:搜索

路径

1、相对路径和绝对路径

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

2、特殊路径符

  • .表示当前目录,比如cd .cd ./Deaktop
  • ..表示上一级目录,比如cd ..cd ../..
  • ~表示用户的HOME目录,比如cd ~cd ~/Deaktop

tipscd ~相当于回家~

环境变量

用途:在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的权限细节:

rwx具体含义:

  • r代表读权限
  • w代表写权限
  • x表示执行权限

针对文件、文件夹的不同,rwx的含义有细微差别

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

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

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

source命令:执行指定的文件里的命令

用途:source 是一个shell内置命令,用于在当前shell环境中执行指定的文件里的命令。运行 source 命令时,shell会读取指定的文件,然后执行文件中的所有命令,就好像它们是在命令行中直接输入的一样。

描述:source 命令执行的脚本不会启动新的shell,它在当前shell中运行,这意味着所有的变量和函数将在当前shell中定义,并且对当前会话立即生效

tar命令:解压 tar 压缩文件

用途:解压 tar 压缩文件,解压该压缩文件到当前目录中,tar 是一个用于归档文件的命令行工具,通常与 gzip或者其他压缩算法结合使用来压缩文件或文件夹

参数:

  • -x:表示解压文件。
  • -z:表示使用 gzip 解压。
  • -v:表示显示详细的解压过程,即 verbose 模式。
  • -f:表示后面跟着要解压的文件名。

案例:

tar -xzvf 文件名.tar.gz

ls命令:查看指定文件夹(目录)的内容

用途:查看指定文件夹(目录)的内容。不给参数默认当前工作目录的内容

参数:

  • -a:展示出隐藏内容
  • -l:以列表形式展示内容,显示更多细节
  • -h:和-l搭配使用,以更加人性化方式显示文件的大小单位

cd命令:更改当前工作目录

用途:更改当前工作目录(change directory)

语法:cd [Linux路径]

参数:

  • cd命令无需选项,只有参数,表示要切换到哪个目录下
  • cd命令直接执行,不写参数,表示回到用户的HOME目录

pwd命令:查看当前所在工作目录路径

用途:查看当前所在工作目录路径(print work directory)

语法:pwd

参数:

  • pwd命令,无选项,无参数,直接输入pwd即可

mkdir命令:创建新目录(文件夹)

用途:创建新目录(文件夹)(make directory)

语法:mkdir [-p] Linux路径

参数:

  • 参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
  • -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

tips:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作,涉及权限问题,HOME外无法成功

touch命令:创建文件

用途:创建文件

语法:touch Linux路径

参数:

  • touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用

cat命令:查看文件内容,将内容全部显示

用途:查看文件内容,将内容全部显示

语法:cat Linux路径

参数:

  • cat没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用

more命令:更加灵活地查看文件内容,支持内容翻页显示

用途:比cat命令更加灵活地查看文件内容,支持内容翻页显示

翻页操作:使用空格翻页,使用q退出查看

语法:more Linux路径

参数:

  • 没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用

cp命令:复制文件\文件夹

用途:复制文件\文件夹(copy)

语法:cp [-r] 参数 参数2

  • -r选项,可选,用于复制文件夹使用,表示递归复制
  • 参数1,Linux路径,表示被复制的文件或者文件夹
  • 参数2,Linux路径,表示要复制去的地方

mv命令:移动文件、文件夹或者文件改名

用途:用于移动文件、文件夹或者文件改名(move)

语法:mv 参数1 参数2

  • 参数1,Linux路径,表示被移动的文件或文件夹
  • 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

rm命令:删除文件或者文件夹

用途:用于删除文件或者文件夹(remove)

语法:rm [-r -f] 参数1 参数2 ...... 参数N

参数:

  • -r选项,可选,文件夹删除
  • -f选项,可选,用于强制删除(普通用户删除不提示,超级管理员删除如果不使用-f会提示删除确认,-f一般用于root用户)
  • 参数,表示被删除的文件或文件夹路径,支持多个,空格隔开
  • 参数支持通配符*,用于做模糊匹配

tips:不要在root管理员用户下执行rm -rf /rm -rf /*

which命令:查找命令的程序文件位置

用途:查找命令的程序文件位置

语法:which 要查找的命令

参数:

  • 无需选项,只需要参数表示查找哪个命令

案例:

which java

find命令:查找指定(文件名或大小)的文件

用途:用于查找指定的文件

1、按文件名查找文件

语法:find 起始路径 -name "被查找文件名"

参数:

  • 被查找文件名支持使用通配符*做模糊匹配,通配符*表示匹配任意内容(包括为空)

2、按文件大小查找文件

语法:find 起始路径 -size +|-n[kMG]

参数:

  • +、-表示大于和小于
  • n表示文件大小数字
  • kMG表示文件大小的单位,k(小写字母)表示kb,M表示MB,G表示GB

案例:

  • 查找小于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 输出的内容
参数:

  • 无需选项,只有一个参数,表示要输出的内容,复杂的内容可以用""包围起来(带有空格或\等特殊符号建议使用双引号包围)

反引号(飘号)`:用反引号(飘号)包围起来的内容会被当做命令执行

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

>>>重定向符

用途:将左侧命令的结果写入到符号右侧指定的文件中

1、覆写>

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

2、追加>>

用途:将左侧命令的结果,追加写入到符号右侧指定的文件中

案例:

echo "Hello Linux" > "test.txt" # 覆盖旧内容
echo "Hello Linux" >> "test.txt" # 在旧内容之下继续追加

tail命令

用途:查看文件尾部内容,跟踪文件的最新修改

语法:tail [-f -num] Linux路径

参数:

  • 参数,Linux路径,表示被跟踪的文件路径
  • 选项,-f,表示持续跟踪
  • 选项,-num,表示查看尾部多少行,不填默认10行

vivim命令行文本编辑器

用途:用于在命令行下对文本文件进行编辑。如果文件路径表示的文件不存在,那么此命令会用于编辑新文件;如果文件路径表示的文件存在,那么此命令用于编辑已有文件

语法:vi 文件路径vim 文件路径

介绍:vimvi的加强版本,兼容vi的所有的指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性

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

viim编辑器的三种工作模式

进入流程:

进入vi编辑器会进入命令模式;

通过命令模式输入键盘指令,可以进入输入模式;

输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式。

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

    命令模式快捷键:

  • 2、输入模式(Insert mode):也就是所谓的编辑模式、插入模式、此模式下,可以对文件内容进行自由编辑。进入编辑模式后,任何快捷键都没有作用,就是正常的输入文本模式,唯一需要记住的是通过ESC键可以退回命令模式

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

底线命令模式快捷键:

## root用户(超级管理员)

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

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

su命令

用途:用于账户切换的系统命令(Switch User)

语法:su [-] [用户名]

参数:

  • -符号是可选的,表示是否在切换用户后加载环境变量,建议带上
  • 参数:用户名,表示要切换的用户,用户名也是可以省略的,省略表示切换到root用户
  • 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:Ctrl + d

tips:使用普通用户切换到其他用户需要输入密码,如切换到root用户;使用root用户切换到其他用户,可以无需密码直接切换。

sudo命令

用途:为了避免长期使用root用户可以带来的系统损坏的风险,使用sudo命令可以为普通的用户在执行不在权限范围的命令时,临时以root身份执行该命令

语法:sudo 其他命令

tips:在执行其他命令之前,带上sudo即可为这一条命令临时赋予root授权,但不是所有的用户都有权力使用sudo,需要为要使用sudo命令的普通用户配置sudo认证

配置sudo认证

  • 1、切换到root用户,执行visudo命令或者vim /etc/sudoers,会自动通过vi编辑器打开:/etc/sudoers
  • 2、在文件最后追加:用户名 ALL=(ALL) NOPASSWD: ALL,保存编辑结果
  • 3、切换回普通用户执行的命令均可添加sudo前缀以root权限执行

用户、用户组

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

介绍:

Linux系统中可以:

  • 配置多个用户;
  • 配置多个用户组;
  • 一个用户可以加入多个用户组中。

Linux用户、用户组

Linux中关于权限的管控级别有2个级别:

  • 针对用户的权限控制;
  • 针对用户组的权限控制。

比如:针对某个文件,可以控制用户的权限也可以控制用户组的权限

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

语法:getent passwd

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

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

语法:getent group

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

用户组管理

以下命令需以root用户执行

创建用户组

语法:groupadd 用户组名

删除用户组

语法:groupdel 用户组名

用户管理

以下命令需以root用户执行

创建用户

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

参数:

  • 选项:-g指定用户的组,不指定-g,会创建同名组并且自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名,指定就可以使HOME目录和用户名不一致

删除用户

语法:userdel [-r] 用户名

参数:

  • 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留,需自行删除

查看用户所属组

语法:id [用户名]

参数:

  • 参数:用户名,被查看的用户,如果不提供则查看自身

修改用户所属组

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

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记为1,w记为2,x记为1。计算方法:每组权限顺序为rwx,三位二进制表示,有权限标记为1,转换为十进制0-7

示例:

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

其中:u表示user所属用户权限,g表示group组权限,o代表other其它用户权限

chown命令:修改文件、文件夹的所属用户和用户组

用途:修改文件、文件夹的所属用户和用户组(change owner)

注意:普通用户无法修改所属为其他用户或组,所以此命令只能由root用户执行

语法:chown [-R] [用户][:][用户组] 文件或文件夹

参数:

  • 选项,-R,同chmod,对文件夹内全部内容应用相同的规则
  • 选项,用户,修改该文件、文件夹所属为该用户(不写则不修改)
  • 选项,用户组,修改该文件、文件夹所属为该用户组(不写则不修改)
  • 选项,:用于分隔用户和用户组

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

【未完待续…】

48 Likes

mark

1 Like

哇,感谢!!

1 Like

不错。 :face_with_peeking_eye:

1 Like

有所收获,感谢分享 :tieba_013:

1 Like

感谢教程

1 Like

学习了,:muscle:

2 Likes

:tieba_010:本论坛终于讨论linux了

3 Likes

什么?论坛居然有人搞linux?

1 Like

软件开发软件分享

1 Like

systemctl 不能 restart 吗?

2 Likes

基础很重要

1 Like

我当初刚学Linux的时候看到这个,就直接copy走了哈哈

1 Like

震惊,linuxdo居然讨论linux了

1 Like

mark

1 Like

有个开源项目 jaywcjlove/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集
我也部署了一个,有时忘了就来查查Linux命令搜索引擎

3 Likes

可以的!还有很多嘿嘿,感谢补充

2 Likes

终于看到一个Do linux的了

1 Like

我的天,我才知道,又收获个小工具,感谢佬分享

1 Like

:rofl:开整

1 Like