Linux - 常用基础指令和命令

文章目录


1、ifconfig指令

(1)显示所有接口的信息。

bash 复制代码
ifconfig

此命令将列出系统上所有网络接口的当前配置,包括它们的IP地址、子网掩码、广播地址等。

(2)显示特定接口的信息

bash 复制代码
ifconfig eth0

这里eth0是网络接口的名称,替换为你想要查看的接口名称。

2、ssh指令

使用Shell 登陆主机时使用

bash 复制代码
ssh ip

输入正确的ip后敲下回车就会出现输入用户名与密码。

3、ls指令

(1)功能

对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

(2)语法

bash 复制代码
ls [选项][目录或文件]

(3)常用选项

选项可以组合使用 如 ls -al

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

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

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

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

-l 列出文件的详细信息。

-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)

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

-r 对目录反向排序。

-t 以时间排序。

-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)

-R 列出所有子目录下的文件。(递归)

-1 一行只输出一个文件

(4)举例

查看当前目录下所有文件

bash 复制代码
ls -a

查看directory1 目录下的所有文件的详细信息

bash 复制代码
ls -al directory1

(5)补充

不加选项,只显示当前目录文件/目录名(不包含隐藏文件)。

bash 复制代码
ls

ls -lll 效果相同。

bash 复制代码
ls -l  \\ ll

4、pwd命令

(1)功能

显示用户当前所在的目录。

(2)语法

bash 复制代码
pwd

5、cd 指令

(1)功能

改变工作目录。将当前工作目录改变到指定的目录下。

(2)语法

bash 复制代码
cd directory(目录)

(3)举例
cd .. 回到上级目录

bash 复制代码
cd ..

cd ~ 回到用户家目录

bash 复制代码
cd ~

cd(无参数)。在某些shell中,如果你只输入cd而不带任何参数,它会将你的工作目录改变到你的主目录。

bash 复制代码
cd

cd - 返回最近访问目录

bash 复制代码
cd -

cd directory1 :由当前目录跳转至directory1

bash 复制代码
cd directory1

(4)补充1:路径

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。

理解该树形结构:

1、这个多叉树的叶子节点不是目录就是文件。

2、任何一个父节点可能存在多个子节点。

3、任何一个子节点只有一个父节点。

所以我们从开始定位一个文件或者目录就是唯一的,如:定位test.c/home/bit/test.c,这也叫绝对路径。

当从当前目录定位另一个目录时的路径叫相对路径,如:当前在home目录下,定位etc目录,../etc

(5)补充2:目录中...

1、.(点): 代表当前目录。当你在Linux命令行中执行与文件或目录相关的操作时,. 用来指代你当前所在的目录。例如,如果你想在当前目录下执行一个名为script.sh的脚本,你可以使用./script.sh命令(假设该脚本具有执行权限)。这里的./就是指当前目录。

注意,以.开头的文件或目录在Linux中是隐藏的,使用常规的ls命令不会显示它们,除非使用ls -a命令。

2、..(双点): 代表上级目录,也就是当前目录的父目录。在Linux命令行中,你可以使用...来引用上级目录中的文件或子目录。例如,如果你当前位于/home/user/documents目录下,..就代表/home/user目录。 同样地,使用../的形式可以表示从当前目录开始向上回溯一级或多级目录。例如,cd ../..命令会将你当前的工作目录从/home/user/documents改变到/home/user的上级目录,即/home目录。

6、stat命令

(1)功能

查看文件信息。

(2)语法

bash 复制代码
stat 文件名

(3)举例

c 复制代码
stat test01.txt

详细信息解释:

1、文件类型:首先,stat会显示文件是常规文件、目录、字符设备、块设备等。

2、文件大小:显示文件占用的字节数(对于目录,这个数字通常很小,因为它只包含文件名和inode链接)。

3、块:文件占用的磁盘块数。磁盘块是文件系统分配空间的最小单位。 IO

4、Block:最优的I/O传输块大小,这通常是文件系统块大小或硬件扇区大小的倍数。

5、硬链接数:有多少文件名链接到该文件的inode。对于常规文件,这通常是1,除非有额外的硬链接。对于目录,这个数字至少为2(.和...)。

6、设备:文件所在设备的编号。 Inode:文件的inode号,inode是文件系统中存储文件元数据的数据结构。

7、权限:文件的权限,分为三组(所有者、组、其他),每组有读(r)、写(w)和执行(x)权限。

8、UID和GID:文件所有者的用户ID(UID)和组ID(GID)。 时间戳: Access:文件最后一次被读取或执行的时间。

9、Modify:文件内容最后一次被修改的时间。

10、Change:文件元数据(如权限或所有权)最后一次被改变的时间,或文件状态被改变的时间(例如,链接到一个目录的条目被删除)。

11、Birth(在某些系统上可能不存在):文件被创建的时间。不是所有的文件系统都支持这一信息。

7、 touch指令

(1)功能

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。

(2)语法

bash 复制代码
touch [选项]... 文件..

(3)常用选项

-a 或 --time=atime 或 --time=access 或 --time=use:仅更改文件的访问时间。

-c 或 --no-create:如果文件不存在,则不创建新文件。如果文件已存在,则不执行任何操作(不更新时间戳)。

-d 或 --date=STRING:使用指定的字符串来设置文件的访问和修改时间,而不是使用当前时间。字符串格式通常为YYYY-MM-DD HH:MM[:SS]。

-m 或 --time=mtime 或 --time=modify:仅更改文件的修改时间。

-r 或 --reference=FILE:将指定文件的时间戳(访问时间和修改时间)复制到目标文件。

-t STAMP:使用指定的时间戳来设置文件的时间,时间戳格式为[[CC]YY]MMDDhhmm[.ss]。

(4)举例

创建多个文件

bash 复制代码
touch test01.txt test02.txt test03.txt

将文件的访问时间和修改时间更新到当前系统时间

bash 复制代码
touch test01.txt(已经存在的文件) 

将文件的访问时间修改为当前系统时间

bash 复制代码
touch -a test01.txt

按照时间戳的格式将文件的访问时间和修改时间修改为指定的时间戳

bash 复制代码
touch -t 202405101111 test01.txt 

8、mkdir指令

(1)功能

在当前目录下创建目录。

(2)语法

bash 复制代码
 mkdir [选项] dirname... 

(3)常用选项

-p 或 --parents:允许创建多级目录,即如果父目录不存在,mkdir将会创建它。这个选项非常有用,因为它可以一次性创建多个不存在的目录,而不需要逐级创建。

-m 或 --mode=模式:设定权限模式(如755或644),允许在创建目录的同时设定其权限。这与chmod命令类似,但mkdir在创建目录时直接设置权限。

(4)举例

创建一个目录

bash 复制代码
mkdir directory1

创建多个目录

bash 复制代码
mkdir directory2 directory3 directory4

递归创建多个目录

bash 复制代码
 mkdir -p directory5/directory6/directory7

创建一个目录且设置权限为755

bash 复制代码
mkdir -m 755 directory8

9、rmdir指令

(1)功能

删除一个或多个空目录。

(2)语法

bash 复制代码
mkdir [选项] dirname... 

(3)常用选项

-p 或 --parents:递归地删除目录,当子目录被删除后,如果父目录变为空,则也一并删除。这个选项非常有用,可以一次性删除多级空目录。

--ignore-fail-on-non-empty:即使某些目录非空也不显示错误信息。默认情况下,如果指定的目录非空,rmdir会失败并显示错误消息。

--ignore-errors:忽略所有错误并继续删除其他目录。这可以用于在批量删除目录时,忽略某些目录因权限等问题导致的删除失败。

(4)举例

删除一个空目录

bash 复制代码
rmdir directory2

删除多个目录

bash 复制代码
rmdir directory3 directory4 directory5

递归地删除目录

bash 复制代码
rmdir -p directory5/directory6  \\当删除directory6后rmdir会尝试删除directory5,如果directory5为空也会删除

当目录不为空时,删除失败不显示信息

bash 复制代码
rmdir --ignore-fail-on-non-empty  directory9

10、rm指令

(1)功能

可以同时删除文件或目录。

(2)语法

bash 复制代码
rm [选项][目录或者文件] 

(3)选项

bash 复制代码
-f(force):强制删除文件或目录,忽略不存在的文件,并且不会询问确认。
-i(interactive):在删除每个文件之前询问用户。
-r(recursive):递归删除目录及其内容。

(4)举例

删除一个文件

bash 复制代码
rm test01.txt

删除一个目录及其内容

bash 复制代码
rm -r directory9

11、man指令

(1)功能

查看命令、系统调用、库函数等手册页的实用工具。

(2)安装指令

bash 复制代码
yum install -y man-pages

(3)语法

bash 复制代码
man [选项] [命令或函数名]

(4)常用选项

-k 根据关键字搜索联机帮助

num 只在第num章节找

-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

num章节:

1 是普通的命令

2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文

件)

3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件

5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6 是给游戏留的,由各个游戏自己定义

7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8 是系统管理用的命令,这些命令只能由root使用,如ifconfig

(5)举例

查找ls指令

bash 复制代码
man 1 ls

查找printf函数

bash 复制代码
 man 3 printf

12、cp指令

(1)功能

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息 。

(2)语法

bash 复制代码
cp [选项] 源文件或目录 目标文件或目录 

(3)常用选项

-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

-i 或 --interactive 覆盖文件之前先询问用户

-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

(4)举例

将文件test01.txt拷贝给test02.txt ,如果test02.txt不存在就创建test02.txt,存在就对test02.txt进行覆盖

bash 复制代码
cp test01.txt test02.txt

将文件test01.txt拷贝到目录directory8里,如果directory8中不存在test01.txt就将test01.txt拷贝到该目录里,如果存在就覆盖

bash 复制代码
cp test01.txt directory8

将目录directory8(包括子目录的内容)拷贝到directory9里,如果directory9不存在就创建再拷贝,如果存在就拷贝到当前目录下

bash 复制代码
cp -r directory8 directory9

13、mv指令

(1)功能

用来移动文件或者将文件改名。

(2)语法

bash 复制代码
 mv [选项] 源文件或目录 目标文件或目录

文件与文件:如果目标文件存在,源文件就会覆盖目标文件,如果目标文件不存在,就是给源文件重命名

文件与目录:

(3)常用选项

-i:交互式操作,在覆盖文件之前询问用户。

-f:强制覆盖目标文件,不会询问用户。

-n:不要覆盖任何已存在的文件。

-u:只有在源文件比目标文件新,或者目标文件不存在时,才移动文件。

(4)举例

用源文件:test01.txt,目标文件:test02.txt,如果目标文件存在,源文件就会覆盖目标文件,如果目标文件不存在,就是给源文件重命名

bash 复制代码
mv test01.txt test02.txt

用源文件:test01.txt,目标目录:directory1,如果目标目录存在,将源文件移到目标目录下,如果目标目录存在且存在与源文件同名的文件,源文件会覆盖目标目录下的同名文件,如果目标目录不存在,此时相当于用目标目录名给源文件重命名

bash 复制代码
mv test01.txt directory1

用源目录:directory1,目标目录:directory2,如果目标目录存在,将源目录移到目标目录下,如果目标目录不存在,就是给源目录重命名

bash 复制代码
mv directory1 directory2

14、cat指令

(1)功能

查看目标文件的内容。

(2)语法

bash 复制代码
cat [选项][文件...]	//可以接受多个文件,没有文件的话从标准输入读取数据

(3)常用选项

-b 对非空输出行编号

-n 对输出的所有行编号

-s 不输出多行空

(4)举例

查看文件test01.txt的内容

bash 复制代码
cat test01.txt

15、more指令

(1)功能

more命令,功能类似 cat

(2)语法

bash 复制代码
more [选项][文件]	//可以接受多个文件,没有文件的话从标准输入读取数据

(3)常用选项

+n:从第n行开始显示文件内容。

-n:定义屏幕大小为n行,即每页显示n行内容。

+/pattern:在每个文件显示前搜索该字符串(pattern),然后从该字符串所在行的前两行之后开始显示文件内容。

-c:从顶部清屏,然后显示文件内容,并提示用户如何继续操作(如按空格键继续,按q键退出)。

-d:在显示提示信息时,禁用响铃功能。

-l:忽略Ctrl+l(换页)字符。

-p:通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似。

-s:把连续的多个空行显示为一行。

-u:把文件内容中的下划线去掉。

(4)常用操作

空格键(Space):向下滚动一屏内容。

回车键(Enter):向下滚动一行内容(可以连续按多次以滚动多行)。

b键:往回(back)一页显示内容。

q键:退出more命令。 /字符串:搜索文件中第一次出现的指定字符串,然后定位到该字符串处并显示。

n:重复前一个搜索操作,即搜索文件中下一个出现的指定字符串。

=:输出当前行的行号。

:f:输出文件名和当前行的行号。

V:调用vi编辑器,以便对当前显示的文件内容进行编辑。

!命令:调用Shell,并执行指定的命令。

(5)举例

查看文件test.txt,并且按5行一页查看

bash 复制代码
more -5 test.txt

(6)补充:|(管道)

管道(Pipe)是一种非常强大的机制,它允许你将一个命令的输出直接作为另一个命令的输入,而不需要将输出保存到文件中。管道使用竖线(|)符号表示。

语法:

bash 复制代码
command1 | command2 //command1 的输出会被直接传递给 command2 作为其输入。

使用:

more不支持给文件内容编号,解决:先用cat给文件编号再用more

bash 复制代码
cat -n test.txt | more //" | "为管道

cat -n test.txt输出直接传递给more,作为其输入。

注意事项:

1、管道中的每个命令都是独立运行的,它们之间通过管道传递数据,但彼此之间不知道对方的存在。

2、管道只能处理文本数据。如果你需要处理二进制数据,可能需要考虑其他方法,如命名管道(FIFOs)或套接字(sockets)。

3、管道是单向的,即数据只能从一个命令流向另一个命令。如果你需要更复杂的数据流,可能需要使用其他工具,如 tee(读取标准输入并将其内容输出到标准输出和文件中)或 xargs(构建并执行命令)。

16、less指令

(1)功能

  1. less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。
  2. less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看 但若使用了 less 时,就可以使用[pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容! 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

(2)语法

bash 复制代码
less [参数] 文件

(3)常用选项

-i 忽略搜索时的大小写

-N 显示每行的行

(4)进入浏览文件后( less 模式)

导航:在 less 模式下,你可以使用方向键(上、下、左、右)来移动光标。按 Page Up 和 Page Down 键可以分别向上和向下翻页。按 b 键向后翻页(即向上翻页),按空格键向前翻页(即向下翻页)。

搜索:在 less 中,你可以使用 / 后跟搜索字符串来向前搜索文本。例如,/搜索词 会向前搜索"搜索词"。使用 n 键查找下一个匹配项,N 键查找上一个匹配项。类似地,? 后跟搜索字符串用于向后搜索文本。

退出:按 q 键退出 less。

跳转到文件开头或结尾:按 G 键跳转到文件的末尾,按 g 键(小写)跳转到文件的开头。

跳转到特定行:你可以使用 -N 选项(其中 N 是行号)来直接跳转到文件的第 N 行。例如,less +50 filename.txt 会打开文件并直接跳转到第 50 行。在 less 模式下,你也可以使用 -N(不带空格)后跟行号来跳转到特定行,但需要先按 - 键,然后输入行号,最后按 Enter(有些版本不支持),通用:先按g键,然后输入冒号:,接着输入行号并回车。例如,要跳转到第100行,可以输入:100后回车。

标记和跳转:less 允许你设置和跳转到文件中的标记。使用 ma(其中 a 是你选择的标记名)来设置标记,然后使用 'a(单引号加标记名)来跳转到该标记。

查看帮助:在 less 模式下,按 h 键可以查看帮助信息。

(5)举例

查看文件并编号

bash 复制代码
less -N test.txt

17、head指令

(1)功能

head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。

(2)语法

bash 复制代码
 head [选项](行数...) [文件] 

(3)常用选项

-n<行数> 显示的行数

(4)举例

查看文件test,txt的前20行内容

bash 复制代码
head -n20 test.txt

18、tail指令

(1)功能

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

(2)语法

bash 复制代码
tail [选项] [文件...]

(3)常用选项

-n <行数> 或 --lines=<行数>:显示文件的最后N行。如果N前面有加号(+),则表示从文件的第N行开始显示到文件末尾。

-f(或--follow)选项是一个非常有用的功能,它允许用户实时地查看文件末尾新增的内容。这在监控日志文件或实时数据流时特别有用(停止一般通过Ctrl+C)。

(4)举例

查看文件test.txt结尾20行

bash 复制代码
tail -n20 test.txt

查看文件test.txt第10行到结尾

bash 复制代码
tail -n+10 test.txt

19、时间相关的指令

(1)显示时间

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

bash 复制代码
date [选项] +显示格式

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号。

%H : 小时(00...23)

%M : 分钟(00...59)

%S : 秒(00...61)

%X : 相当于 %H:%M:%S

%d : 日 (01...31)

%m : 月份 (01...12)

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

%F : 相当于%Y-%m-%d

(2)在设定时间方面

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号。

(3)时间戳

时间->时间戳:date +%s

时间戳->时间:date -d@时间时间戳

(4)举例

显示当前时间

bash 复制代码
date

按指定时间格式显示当前时间

bash 复制代码
date +"%Y-%m-%d %H:%M:%S"

按照指定格式输出指定时间

bash 复制代码
date -d "2023-01-01" +"%Y-%m-%d"

设定当前系统时间

bash 复制代码
sudo date -s "2024-08-15 21:32:18"

显示当前时间戳

bash 复制代码
 date +%s

将时间戳转换为时间

bash 复制代码
date -d@1508749502

20、cal指令

(1)功能

用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份。

(2)语法

bash 复制代码
  cal [选项][月份][年份]

(3)常用选项

-3 :显示系统前一个月,当前月,下一个月的月历

-j :显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

-y :显示当前年份的日历

(4)举例

显示当月日历

bash 复制代码
cal

显示当年日历

bash 复制代码
cal -y

显示2018年3月前后3个月的日历

bash 复制代码
cal -3 3 2018

21、find指令

(1)功能

用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)。

(2)语法

bash 复制代码
find [搜索路径] [选项] [搜索条件] [处理动作]

搜索路径:指定find命令开始搜索的目录路径,默认为当前目录。

选项:用于控制find命令的行为,如搜索条件、处理动作等。

搜索条件:指定搜索的标准,如文件名、文件类型、文件大小、修改时间等。

处理动作:对查找到的文件执行的操作,如打印、删除、执行命令等。

(3)常用选项

-name:按照文件名查找文件。

-iname:按照文件名查找文件,忽略大小写。

-type:根据文件类型进行搜索。

文件类型参数包括:f(普通文件)、d(目录)、l(符号链接)、b(块设备)、c(字符设备)等。

-size:根据文件大小进行搜索。 示例:find / -size +10M 查找根目录下大于10MB的文件。 单位可以是c(字节)、k(千字节)、M(兆字节)、G(吉字节)等。

-mtime、-atime、-ctime:根据文件的时间戳进行搜索。

-mtime:修改时间

-atime:访问时间

-ctime:状态改变时间

示例:find / -mtime -7 查找根目录下最近7天内被修改过的文件。

-user、-group:根据文件属主或所属组进行搜索。

示例:find /home -user john 查找/home目录下所有属主为john的文件。

-perm:根据文件权限进行搜索。 示例:find / -perm 644 查找系统中所有权限为644的文件。

-exec、-ok:对查找到的文件执行指定的命令。

-exec:直接执行命令,不需要用户确认。

-ok:在执行命令前会提示用户确认。

(4)组合使用

组合条件

-a(and):逻辑与,必须同时满足两个条件。

-o(or):逻辑或,满足其中一个条件即可。

! 或 -not:逻辑非,不满足指定条件。

find命令默认使用 -a 逻辑运算符来连接条件,即使你没有显式地写出来。

语法:

bash 复制代码
find [搜索路径] [选项] [搜索条件] (组合条件) [选项] [搜索条件]...   [处理动作]

举例:

在当前路径下查找hehe开头并且后缀为.txt的文件

bash 复制代码
find -name "hehe*" -a -name "*.txt"

(5)处理动作: -exec-ok

-ok选项与-exec选项非常相似,都允许你对查找到的每个文件执行指定的命令。不过,-ok选项在执行每个命令之前会先提示用户进行确认,以确保用户知道哪些文件将被操作,并有机会取消操作。

语法:

bash 复制代码
find [搜索路径] [选项] [搜索条件] -ok [命令] {} \;

命令:对查找到的每个文件执行的命令,{}会被替换为查找到的文件名。
;:标记 -exec \ -ok参数的结束。

举例:

在当前目录下查找test.txt的文件并进行删除

bash 复制代码
find ./ -name "test.txt" -ok rm {} \;

(6)举例

/home目录下查找所有以.txt结尾的文件

bash 复制代码
find /home -name "*.txt" 

在当前目录查找普通类型的文件

bash 复制代码
find ./ -type f

在当前目录下查找大于10MB的文件

bash 复制代码
find ./ -size +10M 

22、grep指令

(1)功能

在文件中搜索字符串,将找到的行打印出来。

(2)语法

bash 复制代码
grep [选项]... 字符串 [文件]...

字符串:匹配的内容。

文件:你要搜索的文件列表。如果省略文件名,grep会读取标准输入。

(3)常用选项

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

(4)举例

test1.txt文件当中查找"cc",并带行号输出

bash 复制代码
grep -n "cc" test1.txt

23、zip/unzip指令

(1)功能

zip:将目录或文件压缩成.zip格式。

unzip: 解压.zip文件或者目录。

(2)语法

bash 复制代码
zip [选项] 文件名.zip   源文件或目录...
unzip [选项] 文件名.zip [-d 目录]

(3)选项

zip:

-r:递归地将目录及其所有子目录和文件压缩到ZIP文件中。

unzip:

-d 目录名:指定解压缩后的目标目录。如果不指定,文件将被解压到当前目录。

(4)举例

压缩test.txt文件

bash 复制代码
zip test.zip test.txt

压缩目录directory1

bash 复制代码
zip -r directory1.zip directory1

压缩多个文件到一个 .zip 文件

bash 复制代码
zip test.zip test1.txt test2.txt

解压文件到指定目录

bash 复制代码
unzip test.zip -d ./

24、tar指令

(1)功能

用于归档和压缩文件。

(2)语法

bash 复制代码
tar [选项](归档文件名)[处理文件或目录...]

(3)常用选项

-c:创建一个新的归档文件。

-x:从归档文件中提取文件。

-t:列出归档文件中的内容(不解压)。

-f:指定归档文件的名称。这个选项通常是必需的,并且通常放在所有其他选项之后,紧接着是归档文件的名称。

-v:在处理文件时显示详细信息(verbose,冗长模式)。

-z:通过 gzip 压缩或解压缩归档文件。

-j:通过 bzip2 压缩或解压缩归档文件。

-J:通过 xz 压缩或解压缩归档文件(较新的版本才支持)。

-r:向归档文件中追加文件(需要 -f 选项指定归档文件)。

-u:仅追加比归档文件中同名文件更新的文件。

-p:保留原文件的属性(如修改时间和访问权限)。

-C 目录:在解压缩时,切换到指定的目录。

(4)举例

将目录dir归档

bash 复制代码
tar -cvf dir.tar dir

将目录dir归档加压缩

bash 复制代码
tar -czvf dir.tar.gz dir

查看归档文件dir.tar

bash 复制代码
tar -tvf dir.tar

查看归档压缩文件dir.tar.gz

bash 复制代码
tar -ztvf dir.tar.gz

将归档文件dir.tar中提取文件到当前目录

bash 复制代码
tar -xvf dir.tar

将归档文件dir.tar中提取文件到./tmp目录下

需要先来到./tmp,再进行提取,并且提前后的文件属性会变化喔,想要属性不变化在选项上加p

bash 复制代码
cd ./tmp
tar -xvf dir.tar

将归档压缩文件dir.tar.gz解压到当前目录下

bash 复制代码
 tar -vzxf dir.tar.gz

只将归档压缩文件dir.tar.gz中的test1.txt文件解压到当前目录下

bash 复制代码
tar vzxf dir.tar.gz dir/test1.txt

将目录dir归档压缩,除了dir/test1.txt

bash 复制代码
tar --exclude dir/test1.txt -vzcf dir1.tar.gz dir

25、bc指令

(1)功能

bc可以执行整数和浮点数的运算,包括加(+)、减(-)、乘(*)、除(/)等基本运算,以及更复杂的数学函数和表达式。

(2)使用

1.交互式使用

直接在终端中输入bc命令并回车,将进入bc的交互式环境。在这个环境中,你可以输入算术表达式并立即看到结果。

bash 复制代码
bc

然后,你可以输入表达式,如3 + 4,并回车查看结果。

2.非交互式使用

你也可以通过管道(pipe)将表达式传递给bc,而不是进入交互式环境。这对于脚本编写特别有用。

bash 复制代码
echo "3 + 4" | bc

这将输出7。

3.设置精度

bc默认的精度可能不足以满足你的需求。你可以通过scale变量来设置所需的精度(小数点后的位数)。

bash 复制代码
echo "scale=2; 3 / 4" | bc

这将输出0.75,因为我们设置了两位小数精度。

4.使用数学函数

GNU版本的bc(许多Linux发行版中的默认版本)支持许多数学函数,如sqrt()(平方根)、sin()(正弦)、cos()(余弦)等。

bash 复制代码
echo "scale=2; sqrt(16)" | bc

这将输出4.00。

5.赋值和变量

bc也支持变量赋值和基于这些变量的计算。

bash 复制代码
echo "a = 5; b = 7; a + b" | bc

这将输出12。

6.读取文件

你可以将一系列bc表达式保存在文件中,并使用bc的-f选项来执行这些表达式。

首先,创建一个名为calc.bc的文件,并添加以下内容:

bash 复制代码
bc
scale = 2  
a = 5  
b = 7  
print a + b

然后,使用以下命令执行文件:

bash 复制代码
bc -f calc.bc

这将输出12.00。

7.使用obase和ibase进行进制转换

bc还支持不同进制之间的转换。通过设置obase(输出基数)和ibase(输入基数),你可以轻松地在不同进制之间转换数字。

bash 复制代码
echo "obase=2; ibase=10; 10" | bc

这将输出1010,表示十进制数10的二进制表示。

26、echo 命令

(1)功能

echo是一个常用的命令行工具,用于在终端显示一行文本或字符串。你可以使用echo命令来输出几乎任何你想要在屏幕上看到的文本,包括变量、文本字符串等。

(2)语法

bash 复制代码
echo [option(s)] [string(s)]

[option(s)]:这是可选的,echo命令有一些选项,但大多数时候人们直接使用它来输出文本,不需要选项。

[string(s)]:这是你想要输出的文本或字符串。如果没有提供字符串,echo会输出一个空行。

(3)常用选项

-n:不输出行尾的换行符。默认情况下,echo 会在输出的末尾添加一个换行符。使用 -n 选项可以阻止这一行为,使得输出后的光标停留在同一行。

-e:启用对反斜杠转义字符的解释。这意味着 echo 会识别并处理 \n(换行)、\t(制表符)、\(反斜杠本身)等转义序列。需要注意的是,并非所有版本的 echo 都支持 -e 选项(比如 POSIX

标准的 echo 就没有 -e 选项),但在大多数 Linux 发行版和 Bash shell 中,它是可用的。

-E(在某些版本的 echo 中):禁用对反斜杠转义字符的解释。然而,这个选项在大多数 Linux 发行版中可能并不常见,因为默认情况下 echo 就不解释转义字符(除非使用了 -e)。

(4)举例

输出Hello, World,并且不换行

bash 复制代码
echo -n Hello, World!

显示变量的值

bash 复制代码
name="Linux"  
echo $name

(5)补充:重定向

介绍:

在Linux中,重定向是一种强大的功能,它允许你将命令的输出(stdout)或错误输出(stderr)发送到文件或其他命令中,而不是显示在终端上。同样,你也可以将文件的内容作为输入(stdin)重定向给命令。重定向主要通过几个特殊的符号来实现:>、>>、<

和 2>。

使用:

1.标准输出重定向(stdout)

> 将命令的标准输出重定向到文件。如果文件已存在,则覆盖文件内容;如果文件不存在,则创建新文件。

bash 复制代码
echo "Hello, World!" > file.txt

使用 > 创建文件

bash 复制代码
> file.txt

>>:将命令的标准输出追加到文件末尾。如果文件不存在,则创建新文件。

bash 复制代码
echo "Another line." >> file.txt

2.标准输入重定向(stdin)

<:将文件的内容作为命令的标准输入

bash 复制代码
cat < file.txt

3.标准错误输出重定向(stderr)

2>:将命令的标准错误输出重定向到文件。与>类似,但仅针对错误输出。

bash 复制代码
ls nonexistent_file 2> errors.txt

如果nonexistent_file不存在,错误信息将被写入errors.txt而不是显示在终端上

2>>:将命令的标准错误输出追加到文件末尾。

bash 复制代码
ls nonexistent_file 2>> errors.txt

使用&>(在某些shell中,如bash)来同时重定向标准输出和标准错误输出。

bash 复制代码
ls nonexistent_file &> output.txt

这将把命令的输出和错误信息都写入output.txt

使用2>&1将标准错误输出重定向到标准输出,然后再将标准输出重定向到文件。

bash 复制代码
ls nonexistent_file > output.txt 2>&1

这个命令首先尝试将标准输出重定向到output.txt,然后通过2>&1将标准错误输出也重定向到标准输出的当前位置(即output.txt)。

相关推荐
耶啵奶膘11 分钟前
uniapp-是否删除
linux·前端·uni-app
Nu11PointerException42 分钟前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
2401_850410831 小时前
文件系统和日志管理
linux·运维·服务器
XMYX-02 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
亦枫Leonlew2 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝2 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
二十雨辰4 小时前
[linux]docker基础
linux·运维·docker
黑叶白树4 小时前
简单的签到程序 python笔记
笔记·python
饮浊酒4 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
lihuhelihu5 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算