Linux的基本指令+权限+基础开发工具

本文我来介绍Linux的一些基础用法,本文包含了linux的基本指令、权限、还有基础开发工具,我也会展示代码案例以及结果

1、基本指令

1.1ls指令:
ls指令的用法为:ls [选项] [目录/文件]。
功能:对于目录,该命令列出该目录的所有子目录和子文件。并展示出所有内容和信息。

常用附加选项
-a:列出该目录下的所有文件,包含用.开头的隐含文件


-d:将目录像文件一样显示,而不是显示其下的文件,如ls-d指定目录

-i:输出文件的i节点的索引信息,如ls-ai指定文件

-k:以k字节的形式表示文件大小。ls -alk指定文件

-l列出文件的详细信息

-n用数字的UID、GID代替名称

-F在每个文件名后附上一个字符说明文件类型 "*"表示可执行的普通文件,"/"表示目录。"@"表示符号链接;"|"表示FIFOs,"="表示套接字。

-r对目录进行反向排序

-t以时间排序

-s在l文件名后输出此文件大小。

-R列出所有子目录下的文件

-l一行只输出一个文件

1.2pwd命令

显示用户当前所在的目录

路径的存在意义是为了保证快速定位查找指定文件,且路径具有唯一性
1.3cd指令

功能:改变工作目录,将当前工作目录转到指定的目录下

1.4touch指令
语法touch。。。文件。。。

功能:touch命令参数可修改文档或目录的日期时间,包括存储时间和更改时间,或者新建不存在的文件

-a :change the access time

-c:chagne the modificantion time


1.5mkdir指令

此指令勇于创造新的目录,mkdir xx 就是创造一个名为xx的目录


1.6rmdir && rm指令

rmdir指令是删除命令,remove。

rmdir [-p] [xxx]

rm命令可以同时删除文件或录像

rm [-f-i-r-v] [dirName/dir]

适用对象:所有使用者

功能:删除文件或目录

-f即使文件为只读,也直接删除

-i删除前逐一询问确认

-r删除目录及其下所有文件

1.7man指令

-k根据关键字联机帮助,num在第num章节查找

-a将所有章节都显示出来,比如man printf它缺省从第一张开始搜索。知道就停止,用a选项,按q退出。

1.8cp指令

cp源文件或目录,目标文件或目录

-f 强行复制,-i覆盖之前先询问的用户,-r递归处理,将目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,一律视为普通文件处理


1.9mv指令

用来移动文件或者更改文件名,经常用来备份文件或目录

mv命令中第二个参数类型的不同。mv命令将文件重命名或将其移动到一个新目录中

1.10cat指令

-b对空输出行编号,空行不做编号

-n对输出的所有行编号

-s不输出多行空行




1.11more指令

-n指定结果行数,q退出

1.11less指令

less可以随意浏览文件,而More只能向前移动,不能向后移动。

-i忽略搜索时的⼤⼩写

• -N显⽰每⾏的⾏号

• /字符串:向下搜索"字符串"的功能

• ?字符串:向上搜索"字符串"的功能

• n:重复前⼀个搜索(与/或?有关)

• N:反向重复前⼀个搜索(与/或?有关)

• q:quit

1.12head指令

head命令打印响应文件的开头10行

1.13tail指令

用来显示指定文件的末尾内容,不指定文件时,作为输入信息进行处理,常用于查看日志文件

-f循环读取,-n显示行数



1.14date指令

指定格式显示时间 date +%Y:%m:%d

时间相关

%H:小时(00~23,24 小时制)

%M:分钟(00~59)

%S:秒(00~61)

%X:时间简写,等价于 %H:%M:%S

日期相关

%d:日(01~31)

%m:月份(01~12)

%Y:完整年份(0000~9999)

%F:日期简写,等价于 %Y-%m-%d

常用组合速记

完整时间:%X = %H:%M:%S

完整日期:%F = %Y-%m-%d

日期 + 时间:%F %X(最常用格式)

bash 复制代码
date -s "01:01:01 2008-05-23"   // 设置全部时间
date -s "01:01:01 20080523"     // 设置全部时间
date -s "2008-05-23 01:01:01"   // 最常用、最标准
date -s "20080523 01:01:01"     // 设置全部时间
bash 复制代码
date -s          // 设置当前时间(交互方式)
date -s 20080523  // 设置日期为 2008-05-23,时间自动置为 00:00:00
date -s 01:01:01  // 设置时间为 01:01:01,不修改日期

1.15cal指令

功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份和年份

-3:显示上月、当月、下月三个月月历

-j:显示当天是当年第几天(从 1 月 1 日开始计数)

-y:显示全年一整年份的日历

1.16find指令

⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)

-name按文件名查找文件

1.17which && whereis指令

搜索系统指令的命令

whereis:用于找到程序的源,二进制文件或手册

1.18alias指令

是指命令别名

grep指令

在⽂件中搜索字符串,将找到的⾏打印出来

zip/unzip指令

将目录或文件压缩为zip形式/解压

bash 复制代码
zip test2.zip test2/* 
unzip test2.zip -d /tmp

rzsz这个工具时windows和linux机器通过xshell传输文件,安装后通过拖拽即可传文件

tar指令

-c:创建压缩文件(create)

-x:解压压缩文件

-t:查看压缩包内文件列表

-z:启用 gzip 压缩 / 解压

-j:启用 bzip2 压缩 / 解压

-v:显示压缩 / 解压过程详情

-f:指定压缩包文件名,f 必须放在参数最后

-C:解压到指定目录

bash 复制代码
tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
bash 复制代码
tar -ztvf /tmp/etc.tar.gz

bc指令

bc命令可以很⽅便的进⾏浮点运算
uname -f指令

功能:uname⽤来获取电脑和操作系统的相关信息。

补充说明:uname可显⽰linux主机所⽤的操作系统的版本、硬件的名称等基本信息。

关机重启 shutdown 命令

语法:shutdown [选项]

常用选项:

  • -h:停止系统服务后立即关机
  • -r:停止系统服务后重启
  • -t sec:指定延迟秒数,多少秒后执行关机/重启

2、权限

lInux分为两种用户,超级用户和普通用户

超级用户:用由最高权限,可以做任何事

普通用户:做有限的事情

超级用户命令提示符为# 普通用户为$

命令su

bash 复制代码
su user
su root

linux权限管理,文件访问者的分类,文件和文件目录的所有者 u---User

文件和文件目录的所有者所在组的用户:g--Group领导者

其他用户:o--Other(外来者)

d:文件夹(目录)

-:普通文件

l:软链接(类似 Windows 快捷方式)

b:块设备文件(硬盘、光驱等)

p:管道文件

c:字符设备文件(串口、屏幕等设备)

s:套接字文件

文件权限表示与chmod命令

一、文件权限值表示方法

  • 字符表示方法
  • 八进制数值表示方法

二、文件访问权限设置

1. chmod 命令

功能:设置文件访问权限

格式:chmod [参数] 权限 文件名

常用选项:

  • -R:递归修改目录及内部所有文件权限

说明:仅文件所有者和root用户可修改文件权限

2. chmod 权限格式(字符模式)

用户表示符 +/-/= 权限字符

  • +:增加指定权限
  • -:取消指定权限
  • =:赋予设定权限,覆盖原有权限
  • 用户符号:后续可搭配权限字符使用

用户符号说明

  • u:文件拥有者
  • g:同组用户
  • o:其他用户
  • a:所有用户

权限示例

  • chmod u+w /home/abc.txt 给拥有者增加写权限
  • chmod o-x /home/abc.txt 取消其他用户的执行权限
  • chmod a=x /home/abc.txt 给所有用户统一设置为仅执行权限

chown修改文件拥有者

bash 复制代码
chown user1 f1
chown -R user1 filegroup1

chgrp

修改文件或目录的所属组

bash 复制代码
chgrp users /abc/f2

umask

umask 文件掩码 查看与修改

  • 作用:查看或修改文件默认权限掩码
  • 新建文件默认原始权限:0666
  • 新建目录默认原始权限:0777

实际权限规则:

创建文件/目录时,会受 umask 掩码影响

实际权限计算公式:
实际权限 = 默认权限 & ~umask

file指令

功能说明:辨识⽂件类型。

常用选项

  • -c:详细显示指令执行过程,便于排错或分析程序执行情况

  • -z:尝试解读压缩文件的内容

    目录权限作用说明

  • 可执行权限:目录若无执行权限,无法使用 cd 进入该目录

  • 可读权限:目录若无可读权限,无法用 ls 查看目录内文件

  • 可写权限:目录若无写权限,无法在目录中新建、删除文件

目录权限总结

  1. 目录的可执行权限(-x) :代表能否在该目录下执行命令、能否cd进入目录。
  2. 目录无 -x 权限 :即便有读权限 -r,也无法 cd 进入目录,无法对目录执行任何操作。
  3. 目录有 -x 权限、无 -r 权限 :可以 cd 进入目录,能执行命令,但无法用 ls 查看目录内文件列表

基础开发工具

1-3 yum 具体操作

1-3-1 查看软件包

命令:yum list

作用:列出系统中所有可安装、已安装的软件包。

用法:

由于软件包数量极多,通常配合 grep 筛选指定软件。

bash 复制代码
yum list | grep 软件名
yum list | grep nginx
yum list | grep java
yum list | grep mysql

通过yum,我们可以通过很简单的⼀条命令完成gcc的安装.

bash 复制代码
sudo apt install -y lrzsz

Linux 软件安装 重要规则总结

  • 安装软件需要向系统目录写入内容,必须使用 sudo 或切换到 root 账户才能执行。
  • yum / apt 安装软件串行执行:只能等一个安装完成后,再装另一个。
  • 如果正在执行 yum/apt 安装,同时再开一个终端执行安装,yum/apt 会直接报错(进程互斥)。
bash 复制代码
sudo yum install -y epel-release

卸载命令

bash 复制代码
sudo apt remove [-y] lrzsz

注意事项,必须保证主机畅通,可通过ping指令认证

vim编辑器

vi/vim这两个的区别还是有的,虽然都是多模式编辑器,只不过vim是vi的升级版,兼容vi的指令,同时包含新特性。
vim的三个模式

命令模式,插入模式,底行模式

普通模式:正常控制光标的移动,字符或行的删除

插入模式:做文字的输入

末行模式:文件保存或退出没业绩而已进行文件替换 ,找字符串,列出行号等操作

vim的基本操作

输入vim后,就会进入全屏幕编辑画面

vim要切换到插入模式才能输入文字

正常切换到插入模式

输入a,输入i.输入o

插入模式想切换到正常:只能ESC推到正常再修改

正常切换到末行

shift+;其实就是输入:

退出vim

:w保存当前文件

:wq保存并退出

:q!不存盘强制退出

Vim 正常模式命令集(干净格式化版)

一、正常模式 → 插入模式(最常用)

命令 功能说明

i 从光标当前位置进入插入模式

a 从光标下一个位置进入插入模式

o 在光标下方新建一行,从行首进入插入模式

I 直接跳转到行首并进入插入模式

A 直接跳转到行尾并进入插入模式

O 在光标上方新建一行,从行首进入插入模式

二、正常模式 → 退出 / 保存

命令 功能说明

:w 保存文件

:q 退出文件(未修改时可用)

:wq 保存并退出

:q! 强制退出(不保存)

ZZ 快速保存并退出(不用输冒号)

三、正常模式 → 光标移动

命令 功能说明

h 左移

j 下移

k 上移

l 右移

0 跳转到行首

$ 跳转到行尾

gg 跳转到文件第一行

G 跳转到文件最后一行

2-4 vim 正常模式命令集

一、插入模式

  • i 切换进入插入模式,从光标当前位置开始输入文字
  • a 进入插入模式,从光标所在位置的下一个位置开始输入文字
  • o 进入插入模式,在光标下方插入新的一行,从行首开始输入文字

二、从插入模式切换为命令模式

  • ESC 键退回正常命令模式

三、移动光标

  • 正规 Vim 使用 hjkl 控制光标:左、下、上、右移动一格
  • G:移动到文章最后一行
  • $:移动到光标所在行的行尾
  • ^:移动到光标所在行的行首
  • w:光标跳到下个单词的开头
  • e:光标跳到下个单词的字尾
  • b:光标回到上个单词的开头
  • #l:光标移到该行第 # 个位置,例:5l、56l
  • gg:跳转到文本第一行开头
  • shift+g:跳转到文本末尾
  • ctrl+b:屏幕向后翻一页
  • ctrl+f:屏幕向前翻一页
  • ctrl+u:屏幕向后移动半页
  • ctrl+d:屏幕向前移动半页

四、删除文字

  • x:每按一次,删除光标所在位置的一个字符
  • #x:例 6x,删除光标位置往后(包含自身)6 个字符
  • X:大写 X,每按一次删除光标前面一个字符
  • #X:例 20X,删除光标前面 20 个字符
  • dd:删除光标所在整行
  • #dd:从光标所在行开始,向下删除 # 行

五、复制

  • yw:复制光标所在处到单词字尾的内容到缓冲区
  • #yw:复制 # 个单词到缓冲区
  • yy:复制光标所在整行到缓冲区
  • #yy:例 6yy,从当前行往下复制 6 行文字
  • p:将缓冲区内容粘贴到光标所在位置,所有 y 系列复制命令都需配合 p 完成粘贴

六、替换

  • r:替换光标所在处单个字符
  • R:进入连续替换模式,按 ESC 结束替换

七、撤销与恢复

  • u:撤销上一步操作,可多次按 u 多级撤销
  • ctrl+r:恢复被撤销的操作

八、更改

  • cw:修改光标所在单词从当前位置到字尾
  • c#w:例 c3w,连续更改 3 个单词

九、跳至指定行

  • ctrl+g:查看光标当前所在行号
  • #G:例 15G,直接跳转到文章第 15 行行首

2-5 vim 末行模式命令集

进入末行模式:先按 ESC 进入正常模式,再按 :(冒号) 即可进入末行模式。

显示行号

  • set nu:在文件每一行前显示行号

跳转到指定行

  • :加数字回车,例如 :15,直接跳转到文件第 15 行

查找字符

  • /关键字:从光标位置向下 正向查找关键字,按 n 继续往下匹配
  • ?关键字:从光标位置向上 反向查找关键字,按 n 继续往上匹配

查找区别

/ 是从上往下搜索;? 是从下往上搜索,按下 n 都会沿着当前搜索方向继续查找下一个匹配内容。

保存文件

  • w:保存当前文件

退出 Vim

  • q:正常退出 Vim
  • q!:强制退出,不保存修改内容
  • wq:保存文件并退出 Vim

3. 编译器 gcc/g++

3-1 编译器gcc/g++ 背景知识

程序从源码到可执行文件分为四大步骤:

  1. 预处理

    进行宏替换、去除注释、条件编译、头文件展开等操作

  2. 编译

    将预处理后的代码翻译成汇编代码

  3. 汇编

    把汇编代码转为机器可识别的二进制目标代码

  4. 链接

    将多个目标文件、系统库文件合并,生成最终可执行文件或库文件

    预处理指令

    预处理功能主要包括宏定义,⽂件包含,条件编译,去注释等。

    • 预处理指令是以#号开头的代码⾏。

    • 实例:gcc --E hello.c --o hello.i

    • 选项"-E",该选项的作⽤是让gcc在预处理结束后停⽌编译过程。

    • 选项"-o"是指⽬标⽂件,".i"⽂件为已经过预处理的C原始程序。

    汇编

    把编译阶段生成的.s转为目标文件

    在此可使用选项-c就可以看到汇编代码已转化为.o的二进制代码了gcc --c hello.s --o hello.o

    连接

bash 复制代码
gcc hello.o --o hello

静态库与动态库

静态库是指编译链接时,把库⽂件的代码全部加⼊到可执⾏⽂件中,因此⽣成的⽂件⽐较⼤,但在运

⾏时也就不再需要库⽂件了。其后缀名⼀般为".a"

3-2 gcc 其他常用选项(了解即可)

  • -E

    只激活预处理,不生成文件,需要把结果重定向到输出文件中

  • -S

    编译到汇编语言,不进行汇编和链接

  • -c

    编译到目标代码(只编译不链接)

  • -o 文件

    将输出内容输出到指定文件

  • -static

    对生成的文件采用静态链接

  • -g

    生成调试信息,GNU 调试器可使用该信息

  • -shared

    尽量使用动态库,生成文件较小,需要系统提供动态库

  • 优化级别

    • -O0 没有优化
    • -O1 默认优化级别
    • -O2 更高优化
    • -O3 优化级别最高
  • -w

    不生成任何警告信息

  • -Wall

    生成所有警告信息

4-5适度扩展语法

bash 复制代码
# 定义变量
BIN = proc.exe   # 最终生成的可执行文件
CC  = gcc        # 指定编译器

# 获取当前目录下所有 .c 源文件
SRC = $(wildcard *.c)

# 将 .c 替换为 .o,生成目标文件列表
OBJ = $(SRC:.c=.o)

# 编译 & 链接选项
LFLAGS = -o      # 链接选项
FLAGS  = -c      # 编译选项
RM     = rm -f   # 删除命令

# 最终目标:生成可执行文件
$(BIN): $(OBJ)
	@$(CC) $(LFLAGS) $@ $^
	@echo "linking ... $^ to $@"

# 模式规则:由 .c 生成 .o
%.o: %.c
	@$(CC) $(FLAGS) $<
	@echo "compling ... $< to $@"

# 伪目标:清理文件
.PHONY: clean
clean:
	$(RM) $(OBJ) $(BIN)

# 伪目标:测试打印变量
.PHONY: test
test:
	@echo $(SRC)
	@echo $(OBJ)

进度条

5-1补充-回⻋与换⾏

• 回⻋概念

• 换⾏概念

• ⽼式打字机的例⼦

• \r&&\n

git

Git 引入背景

不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种文档时,为了防止文档丢失、更改失误,在出现失误后可以恢复到原来的版本,我们不得不手动复制文档副本,例如:

"报告-v1"

"报告-v2"

"报告-v3"

"报告-确定版"

"报告-最终版"

"报告-究极进化版"

安装git

bash 复制代码
yum install git
$ git --version
git version 1.8.3.1

git add

bash 复制代码
git add [⽂件名]

提交移动到本地

bash 复制代码
git commit -m "XXX"

同步到远端服务器上

bash 复制代码
git push

7. 调试器gdb/cgdb使⽤

cpp 复制代码
#include <stdio.h>
int Sum(int s, int e)
{
 int result = 0;
 for(int i = s; i <= e; i++)
 {
 result += i;
 }
 return result;
}
int main()
{
 int start = 1;

 int end = 100;
 printf("I will begin\n");
 int n = Sum(start, end);
 printf("running done, result is: [%d-%d]=%d\n", start, end, n);
 return 0;
}

预备

程序的发布方式

程序的发布方式主要有两种:debug 模式 和 release 模式。

debug 模式

调试模式,包含调试信息,方便开发者调试程序,不会对代码进行优化,运行速度较慢。

release 模式

发布模式,去掉调试信息,编译器会对代码进行优化,运行效率更高,体积更小,用于正式上线使用。

相关推荐
一拳一个娘娘腔1 小时前
红队与蓝队视角:现代网络安全攻防中的Linux命令深度解析
linux·安全
daino2 小时前
国内 PyPI 常用镜像源汇总(HTTPS 版)
运维
以太浮标2 小时前
华为eNSP模拟器综合实验之- MGRE多点GRE隧道详解
运维·网络·网络协议·网络安全·华为·信息与通信
杨云龙UP3 小时前
ODA运维实战:Oracle 19c YJXT PDB表空间在线扩容全过程_20260503
linux·运维·服务器·数据库·oracle
郝学胜-神的一滴3 小时前
跨平台动态库与头文件:从原理到命名的深度解析
linux·c++·程序人生·unix·cmake
yyuuuzz4 小时前
aws 基础认知与实践注意点
运维·服务器·网络·云计算·github·aws
Rust语言中文社区4 小时前
【Rust日报】2026-05-02 Temper - 用 Rust 编写的 Minecraft 服务器项目发布 0.1.0 版
运维·服务器·开发语言·后端·rust
吠品4 小时前
高性能JS数组操作:何时选用push、unshift、splice或扩展运算符?
linux·服务器·数据库
fish_xk5 小时前
Linux中的指令和权限
linux·运维·服务器