C++Linux系统编程——Linux基本命令(究极全)

1.Linux常见目录介绍

  • **/:**根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入"/home",你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。

  • /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

  • /boot:**放置linux系统启动时用到的一些文件**,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。

  • /dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。

  • /etc系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。

  • /home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。

  • /lib: /usr/lib: /usr/local/lib 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。

  • **/lost+fount:**系统异常产生错误时,会将一些遗失的片段放置于此目录下。

  • /mnt:/media: 光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

  • /opt: 给主机额外安装软件所摆放的目录

  • /proc此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。

  • **/root:**系统管理员root的家目录。

  • **/sbin:/usr/sbin:/usr/local/sbin:**放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。

  • **/tmp**:**一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

  • **/srv:**服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。

  • /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。

  • /var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

2.Linux命令解释器

2.1shell命令解释器

Shell是一种命令行解释器,是用户和操作系统之间的接口,接收用户输入的命令并将其传递给操作系统进行执行,Shell可以运行在不同的操作系统上,并提供了一种交互式的方式来和计算机进行通信。

2.2Bash命令解释器

Bash是一种Shell的变种,它是基于一种早期的Unix Shell的重新实现,添加了一些新特性和改进,是大多数Linux和Unix系统上默认的Shell

3.Bash解释器常用快捷键

3.1 Tab键

  • 补齐命令

  • 补齐路径

  • 显示当前目录的所有目录

3.2 清屏

clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + L ( "L" 为字母 )。

~$ clear

3.3 中断

ctrl+c的作用就是中断中断的操作

3.4遍历输入的历史命令

推荐直接方向键上下即可

3.5 光标操作

  • 光标左移: ctrl + b (

  • 坐标右移: ctrl + f (

  • 移动到头部: ctrl + a(Home

  • 移动到尾部: ctlr + e(End

3.6 字符删除

  • 删除光标前边的字符:ctrl + h(Backspace)

  • 删除光标后边的字符:ctrl + d

    光标后边的字符即光标覆盖的字符

  • 删除光标前所有内容:ctrl + u

  • 删除光标后所有内容:ctrl + k

4.内建命令和外部命令

4.1内建命令

内建命令是指bash工具中集成的命令,一般会有一个与之同名的系统命令,比如bash中的echo命令和/bin/echo是两个不同的命令。

当在bash中键入一个命令时系统会先看他是否是一个内建命令,如果不是才会查看是否是系统命令或第三方工具。

4.2 外部命令

通常是由操作系统或者第三方开发者提供的

4.3 两者对比

内建命令要比系统论命令有比较高的执行效率。外部命令执行时往往需要fork出(产生出)一个子进程,而内建命令一般不用。同时内建命令的优先级也比外部命令高,所以在bash中键入echo命令实际上执行bash工具集中的bash命令也就是内建命令,而不是/bin/echo这个系统命令。

4.4 命令类型查看方式

可以使用type命令查看

格式:

type [-afptP] 名称 [名称 ...] 显示命令类型的信息。

可选参数说明:

-a:显示所有匹配命令,而不仅是第一个匹配的命令,如果有多个 -a选项会显示所有匹配项

-f:仅显示匹配的命令的路径,还将显示外部命令的完整路径

-p:仅显示匹配命令的路径,而不显示别名、函数或者内建命令

-t:显示匹配命令的类型,这将显示命令是外部命令、别名函数还是内建命令

-P:仅显示匹配的命令的类型,而不显示其他信息

5.帮助文档

man是Linux提供的一个手册,包含了绝大部分的命令、函数使用说明

使用格式:

man [选项] 命令名

man设置了如下的功能键:

功能键 功能
空格键 显示手册页的下一屏
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出man命令
h 列出所有功能键
/word 搜索word字符串

使用man手册时,最后指定章节号

man 1 ls 即代表查看第一章节

6.help

内部命令和外部命令的help不一样:

help + 内建命令

外部命令 --help

7.目录相关命令

7.1 pwd

使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。

7.2 cd

命令 含义
cd 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 切换到当前目录
cd .. 切换到上级目录
cd - 可进入上一个进入的目录

7.3 mkdir

mkdir [-mpv] 目录 [目录]

可以创建多个目录:mkdir dir1 dir2 dir3

-m:指定新创建目录的权限模式

例如:mkdir -m 755 dirname

-p:递归创建目录

例如:mkdir -p /path/to/new

-v:显示创建每个目录时的详细输出

7.4 rmdir

rmdir [选项]... 目录... 删除指定的空目录

可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。

8.文件类型

Unix/Linux对数据文件(.mp3、 .bmp),程序文件(.c、 .h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。

文件类型分类

1)普通文件

普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。

在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符"*",则可以查看当前目录下的所有文件的类型。

2)目录文件

Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。

目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。

每个目录文件至少包括两个条目,".."表示上一级目录,"."表示该目录本身。

3)设备文件

Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。

字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。

deng@itcast:~/share$ echo "hello world" > /dev/pts/22 hello world

4)管道文件

管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。

5)链接文件

似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。

9.文件相关命令

9.1 ls

ls常用参数:

参数 含义
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小

与DOS下的文件操作类似,在Unix/Linux系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。

通配符 含义
* 文件代表文件名中所有字符
ls te* 查找以te开头的文件
ls *html 查找结尾为html的文件
代表文件名中任意一个字符
ls ?.c 只找第一个字符任意,后缀为.c的文件
ls a.? 只找只有3个字符,前2字符为a.,最后一个字符任意的文件
[] ["和"]"将字符组括起来,表示可以匹配字符组中的任意一个。"-"用于表示字符范围。
[abc] 匹配a、b、c中的任意一个
[a-f] 匹配从a到f范围内的的任意一个字符
ls [a-f]* 找到从a到f范围内的的任意一个字符开头的文件
ls a-f 查找文件名为a-f的文件,当"-"处于方括号之外失去通配符的作用
\ 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。"?"和"*"处于方括号内时不用使用转义字符就失去通配符的作用。
ls *a 查找文件名为*a的文件

9.2 touch

touch [选项]... 文件...

  • 如果文件存在,更新文件时间

  • 如果文件不存在,则创建新文件

一般使用也就是用touch 文件名

9.3 cp

cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令 。

选项 含义
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 强制复制而不提示
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v 显示拷贝进度

示例:

复制代码
cp file dirs/ 把file文件复制到dirs目录下
cp file1 file2 dirs/ 把file1 file2文件拷贝到dirs目录下
cp -r dir1/ dir2/ 把dir1目录复制到dir2目录下
cp -a file dirs/ 把file文件复制到dirs目录下,保留文件的原来属性

9.4 rm

可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。

常用参数及含义如下表所示:

参数 含义
-i 以进行交互式方式执行
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹时必须加此参数

例如:

复制代码
rm file* 删除所有file打头的文件
rm -f [ab].txt 等价于rm -f a.txt b.txt 
rm -f [^ab].txt 删除除a.txt b.txt以外的所有?.txt
​

9.5 mv

用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。

常用选项说明:

选项 含义
-f 禁止交互式操作,如有覆盖也不会给出提示
-i 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v 显示移动进度

例如:

复制代码
mv -u dir1/* dir2/ 把dir1目录下所有文件移动到dir2目录下,并且根据文件时间来决定要不要移动

-u表示update,只会移动源目录中存在且目标目录中不存在的文件

10.文件内容查看命令

10.1 cat

cat 将文件内容一次性输出到终端。

缺点:终端显示的内容有限,如果文件太长无法全部显示。

复制代码
cat /etc/passwd 查看/etc/passwd内容
​
cat -n /etc/passwd 查看/etc/passwd内容,对输出的所有行编号
​
cat -b /etc/passwd 查看/etc/passwd内容并且给非空行编号

10.2 less

less命令将文件内容分页显示到终端,可以自由上下浏览

命令 作用
回车(ctrl + n) 显示下一行
ctrl + p 显示上一行
空格(PageDown) 显示下一页
PageUp 显示上一页
q 退出
h 获取帮助

10.3 head

  • head命令从文件头部开始查看前 n 行的内容。

  • 如果没有指定行数,默认显示前10行内容。

命令格式:

head --n [行数] 文件名 //显示前n行

head -c [字符数] 文件名 //显示前n个字符

10.4 tail

  • 从文件尾部向上查看最后 n 行的内容

  • 使用方式:tail --n[行数] 文件名

  • 如果没有指定行数,默认显示最后10行内容

11.文件查找命令

11.1 find

find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

按文件名查询:使用参数 -name

命令:find + 路径 + -name +"文件名"

示例:find /home -name "a.txt"

按文件大小查询:使用参数 -size

命令:find + 路径 + -size + 范围

范围

  • 大于:+表示 -- +100k

  • 小于:-表示 -- -100k

  • 等于: 不需要添加符号 -- 100k

大小

  • M 必须大写(10M)

  • k必须小写(20k)

例子: 查询目录为家目录

等于100k的文件: find ~/ -size 100k

大于100M的文件: `find ~/ -size +100M

大于50k, 小于100k的文件: find ~/ -size +50k -size -100k

按文件类型查询:使用参数 -type

命令:find + 路径 + -type + 类型

类型

  • 普通文件类型用 f 表示而不是-

  • d -> 目录

  • l -> 符号链接

  • b -> 块设备文件

  • c -> 字符设备文件

  • s -> socket文件,网络套接字

  • p -> 管道

例如:查找指定目录下的普通文件: find /home -type f

查找根目录所有的字符设备 ~$ find / -type c

查找根目录下所有的套接字 ~$ find / -type s

......

11.2 grep

Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式为:

grep [-选项] '搜索内容串' 文件名

在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep 'a ' 1.txt。

还有一种比较常见的用法例如:

cat logfile.txt | grep "error"

cat file.txt | grep keyword

常用选项说明:

选项 含义
-v 显示不包含匹配文本的所有行(相当于求反)
-n 显示匹配行及行号
-i 忽略大小写

12.管道

管道(|):一个命令的输出可以通过管道做为另一个命令的输入。

管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里" | "的左右分为两端,左端塞东西(写),右端取东西(读)。

cat /etc/passwd | less

13.压缩包管理

13.1 tar

计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。

tar使用格式

tar [选项] 打包文件名 文件

tar命令很特殊,其选项前面可以使用"-",也可以不使用。

常用参数:

参数 含义
-c 生成档案文件,创建打包文件
-v 列出归档解档的详细过程,显示进度
-f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t 列出档案中包含的文件
-x 解开档案文件

注意:除了f需要放在参数的最后,其它参数的顺序任意。

tar -cvf 创建归档文件

tar -xvf 解除归档文件(还原)

tar -tvf 查看归档文件内容

13.2 gzip

tar与gzip命令结合使用实现文件打包、压缩。

tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。

gzip使用格式如下:

gzip [选项] 被压缩文件

常用选项:

选项 含义
-d 解压
-r 压缩所有子目录

一次性压缩多个文件: gzip后面不能跟目录

tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。

**压缩用法:**tar cvzf 压缩包包名 文件1 文件2 ...

-z 指定压缩包的格式为:file.tar.gz

解压用法: tar zxvf 压缩包包名

参数 含义
-z 指定压缩包的格式为:file.tar.gz

解压到指定目录:-C (大写字母"C")

例子:tar -xvf new.tar.gz -C ./test/ 将 new.tar.gz 解压到当前目录下的 test 目录下

13.3 bzip2

  • tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。

  • tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.bz2。

  • 在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。

  • 压缩用法:tar jcvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c)

  • 解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)

tar -xvf 万能解压 (gzip bzip2)

生成一个bz2压缩包

复制代码
tar -cjvf test.tar.bz2 test

解压bz2压缩包

复制代码
tar -xjvf share.tar.bz2

13.4 zip和unzip

通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。

压缩文件:zip -r 目标文件(没有扩展名) 源文件

解压文件:unzip -d 解压后目录文件 压缩文件

14.文件权限管理

文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。

Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。

在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。

14.1访问权限说明

用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:

  • 读权限(r)

对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。

  • 写权限(w)

对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

  • 可执行权限(x)

对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。

14.2 chmod

chmod 修改文件权限有两种使用格式:字母法与数字法。

**字母法:**chmod u/g/o/a +/-/= rwx 文件

[ u/g/o/a ] 含义
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组( group )者,即用户组
o other 表示其他以外的人
a all 表示这三者皆是
[ +-= ] 含义
+ 增加权限
- 撤销权限
= 设定权限
rwx 含义
r read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录内部的内容。
w write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
x excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

例如:

chmod o+w file 给文件file的其它用户增加写权限;

chmod u+x file 给文件file的所有者增加可执行权限

数字法:"rwx" 这些权限也可以用数字来代替

r 读取权限,数字代号为 "4"
w 写入权限,数字代号为 "2"
x 执行权限,数字代号为 "1"
- 不具任何权限,数字t代号为 "0"

如执行:chmod u=rwx,g=rx,o=r filename

就等同于:chmod 754 filename(不可以执行)

15.进程管理

15.1 ps

进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。

ps命令可以查看进程的详细状况,常用选项(选项可以不加"-")如下:

选项 含义
-a 显示终端上的所有进程,包括其他用户的进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程
-w 显示加宽,以便显示更多的信息
-r 只显示正在运行的进程
-e 显示系统上所有正在运行的进程,不仅是用户,还包括系统

15.2 kill

kill命令指定进程号的进程,需要配合 ps 使用。

使用格式:

kill [-signal] pid

信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。

kill 9133 :9133 为应用程序所对应的进程号

有些进程不能直接杀死,这时候我们需要加一个参数" -9 "," -9 " 代表强制结束:

16.软件安装和卸载

如果是在ubuntu平台,软件的安装可以通过互联网在线安装,更加方便快捷:

命令 含义
sudo apt-get update 获得最新的软件包的列表
sudo apt-get install xxx 从源中安装xxx软件
sudo apt-get remove xxx 删除xxx软件
sudo apt-get clean 清理安装包

16.1 软件安装

在Ubuntu下安装文件为deb格式

软件安装

sudo dpkg -i xxx.deb

软件卸载

sudo dpkg -r 软件名

若是不知道软件名,可以使用下面指令来进行模糊搜索

dpkg --get-selections | grep 软件相关名称

17.重定向

复制代码
ls /etc/passwd > output.txt 标准正确输出重定向到output.txt 
​
ls /etc/shadow >> output.txt 标准正确输出追加重定向到output.txt
​
 ls dddddd 2> error.txt 标准错误输出重定向到error.txt
​
ls ddddd 2>> error.txt 标准错误输出重定向到error.txt,

18.其他命令

18.1 tree

tree 以树状形式查看指定目录内容,使用该命令需要安装软件 tree:

sudo apt install tree

18.2 ln

ln命令主要用于创建链接文件。Linux链接文件类似于Windows下的快捷方式。

链接文件分为软链接和硬链接:

  • 软链接:软链接不占用磁盘空间,源文件删除则软链接失效。

  • 硬链接:硬链接只能链接普通文件,不能链接目录。

使用格式:

ln 源文件 链接文件

ln -s 源文件 链接文件

如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。

注意:如果软链接文件和源文件不在同一个目录,源文件最好要使用绝对路径,不要使用相对路径。

相关推荐
翻滚吧键盘12 分钟前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵16 分钟前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河30 分钟前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly350044 分钟前
centos7 ping127.0.0.1不通
linux·运维·服务器
小哥山水之间1 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
用户Taobaoapi20141 小时前
Taobao agent USA丨美国淘宝代购1688代采集运系统搭建指南
数据挖掘·php
蓝色记忆2 小时前
Classmap 如何兼容旧代码
php
power 雀儿2 小时前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
ldj20202 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘2 小时前
opensuse tumbleweed上安装显卡驱动
linux