Linux:基础指令
该操作系统的内核由林纳斯托⽡兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,。而,它包括GUI组件和许多其他实用工具。GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是⼀个,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义,。Linux是自由软件和开放源代码软件发
Linux基础指令
Linux背景
Linux是⼀种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托⽡兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是⼀个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采用GPL许可证方式,且必须公开源代码。
Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个⼈和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
Linux在服务器、桌面、移动嵌入式(Android操作系统就是创建在Linux内核之上的)、云计算/大数据等有较大应用和发展。
Linux有许多发行版本,Debian,运行起来极其稳定,非常适合用于服务器,但不适合新手用户,适合系统管理员和高级用户。Ubuntu是Debian的⼀款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。Ubuntu是新手用户爱不释手的⼀款操作系统。还有第一款面向商业市场的红帽企业级Linux,CentOS,Fedora,Kali Linux。

Linux指令
登录 ssh root@你的IP 。

当前用户 whoami 。

一台Linux可以被多个人使用,新建用户 adduser 用户名 ,设置新用户密码 passwd 用户名 。

user2登录。

删除用户 userdel -r user2 。

获取Linux的内核版本名称 uname -a。

查看ip地址 ifconfig 。
全屏 Alt + 回车。清屏 clear 。
Linux中所说的目录即文件夹,文件由内容和它的属性组成,即使文件为空,文件也依然占据磁盘空间。
pwd
显示用户当前所在目录 pwd 。

mkdir
mkdir dirname 在当前目录下创建一个名为“dirname”的目录。
mkdir -p 路径名称 此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建⽴多个目录。

可以用tree命令将a/b/c/d树状打印出来,如果无法使用tree命令,centosyum install -y tree,Ubuntuapt install -y tree。

tree . 当前目录树状展示。tree ~ 家目录树状展示。
cd
cd 目录名 改变工作目录,将当前工作目录改变到指定的目录下。

如下图,. 表示当前目录,. . 表示上级目录。

cd . 跳转到当前目录。cd .. 跳转到上级目录。
/root/lesson20260305开头的/ 为Linux的根目录,用cd ..一直回退到根目录,再用ls可以看到根目录下是有很多东西的。

cd ~ 跳转到当前用户自己的家目录。任何一个Linux用户,用特定的用户名登录系统时,默认在家目录下。

cd - 跳转到最近所处目录。

ls
ls 选项 目录或文件 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。命令行选项可以是0个或多个,多个选项空格隔开。
ls -l 列出文件的详细信息。无 -l 只显示文件名。

ls -l 指定目录 打印指定目录里的内容。

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

可以连续多个选项。

在Linux中,以 . 开头的文件为隐藏文件。
用touch创建隐藏文件.youcannotseeme。

用mkdir创建隐藏目录.dir。

在win中,\为路径分隔符。在Linux中,/为路径分隔符。在文件路径中,两个分隔符之间的是目录,最后一个可能是目录,也可能是普通文件。

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

Linux路径:Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。叶子节点是普通文件或空目录,非叶子节点是非空目录。
路径存在的意义:树状组织方式,为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位。多叉树中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性。


绝对路径:从根目录/开始,不依赖其他目录的定位文件的方式。例如/home/bit/test.c 。
相对路径:相对于当前用户所处目录,定位文件的路径方式。

绝对路径不会随着用户的路径变化而丧失唯一性。一般在特定服务的配置文件中经常使用相对路径,因为它的便捷性,一般在命令行中使用较多。
lesson20260305 的上级目录是root ,root的上级目录是根目录,所以执行命令ls ../../结果如下。

在lesson20260305目录下创建空目录empty,即使是空目录,系统也会给它自动生成 . 和 … 。


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

d 开头的是目录,- 开头的是普通文件。

touch更改时间。

stat 文件名 可以看文件的状态。

which
使用which命令,可以看到命令本质是可执行文件,即类似我们写的C/C++程序。
alias
alias 给其它命令起别名。别名是临时的,重新登录后之前的别名就失效了。
给命令pwd 起别名为quanlijianqi。

ll是ls -l的别名。

nano
nano是Linux里的记事本。在记事本中写内容,Ctrl X退出,cat 文件名,打开文件。

如果在命令行中出现了异常情况,尝试Ctrl+C终止异常 。
rmdir
rmdir [-p] [dirName] 删除空目录,-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

rm
rm同时删除文件或命令。. 和 . . 不会被删除。

rm -f 强制删除。

rm -r递归删除目录及旗下所有文件。rm -rf 更便捷。

*
通配符 * 功能如下所示。

man
man 命令 可以查看手册来了解命令。例如man ls 、man cd等。按q退出。

man printf 在手册中查看printf并使用。


按上下键可查询历史命令。
man 3 printf 查看man手册第3章,需要yum install -y man-pages。
cp
cp 选项 源文件或目录 目标文件或目录 用于复制文件或目录。

同一目录下文件名或目录名不能重复。如果文件不存在,复制的时候会创建新文件。

不指定目标文件名,则会创建同名目标文件。

拷贝目录要递归,则cp -r 源目录 目标目录 。

把源文件或目录拷贝到目标目录时,会拷贝到目标目录内部。

接下来再往lesson20260305-backup拷贝lesson20260305,就会给出提示是否覆盖目录里的lesson20260305,此时可以用-rf强制,但对于root用户,-f是无效的。
echo
echo,把后续内容当作字符串打印出来。

也可以用printf打印出来。

echo是把后面的内容打印出来,而cat是打印文件里的内容。

在Linux系统中,一切皆文件。包括我们自己创建的文件、键盘、显示器等。我们在C语言中的printf/scanf、C++中的cout/cin本质是文件操做。操做文件前要先打开文件,类似在C语言用fopen打开文件,像键盘、显示器这些设备文件,在访问前系统也会默认帮我们打开。命令 echo 'hello' 就是把hello打印到显示器文件。
重定向操作
输出重定向
例如命令echo 'Hello Linux!' > hello.txt,Hello Linux!不会输出到显示器,而是输出到文件hello.txt。如果没有文件hello.txt就创建一个新文件。

再执行命令echo 'HELLO WORLD!' > hello.txt ,文件hello.txt的内容就会清空,重新写入HELLO WORLD!

综上,对于> ,如果后面文件不存在,则新建;先对文件清空,再写入 。
可以利用 > 创建文件。

利用 > 清空文件 。

追加重定向
echo 'abcdefg@#$' >> hello.txt 可以不清空文件,直接追加。

输入重定向
cat从键盘文件读内容,再显示到显示器文件,即如果cat后没有文件,从键盘输入内容后回车,内容就会显示到显示器中。此时会阻塞,用Ctrl+C终止异常。

用 < 能指定 cat 从哪个文件读,命令cat < hello.txt,cat从hello.txt文件读数据,显示到显示器。

当我们打开设备的时候,会在目录/dev/pts创建文件。c开头是字符文件 。

Linux一切皆文件,终端也是文件,可以同时开两个终端。

所以我们可以往别的终端写数据。

也可以在一个终端写C语言程序,在另一个终端打印结果。


b开头的是块设备文件,即磁盘。

l开头是连接文件。

p开头是管道文件。

文件类型总结:
- - :普通文件,如文本、可执行程序、库、图片、视频等。Linux系统不关心文件后缀,但工具(如gcc)关心后缀。
- d :目录文件。
- c :字符文件,如键盘、显示器、终端,输入的数据具有顺序性。
- b :块设备文件,即磁盘。
- l :连接文件。
- p :管道文件。
mv
mv [选项] 源文件或目录 目标文件或目录 mv命令是move的缩写,可以用来移动文件或者将文件改名。
将文件move.txt移动到上级目录。

再将move.txt移动回来。

将一个目录移动到另一个目录,例如把lesson20260415移动到根目录下。

对指定文件重命名,例如把文件move.txt重命名为MOVE.txt。mv src dst dst不是目录或者dst不存在就是重命名。

给目录重命名。

cat
默认把文件内容往显示器打印。

cat -n 文件 可以打印行号。

cat命令适合查看短文件,tac命令可以倒着打印文件。

cat /var/log/messages查看系统日志。history查看历史命令。软件领域、大型项目,必定有日志。
more与less
more 命令,用more命令打开系统日志,会满屏显示文件内容,这时按住回车就可以不断往下翻,按q可退出more命令。
less 命令也可以查看系统日志,打开后可以用上下键翻找。
命令行脚本,再输出重定向,把内容写到log.txt文件 cnt=1000 ; while [ $cnt -gt 0 ]; do echo "hello $cnt"; let cnt--; done > log.txt ,log.txt文件中就会有hello 1000到hello 1。

为了方便查看,nano log.txt打开文件,把hello 860改成hello $$ 860 $$ ,再用more命令翻找。

也可以不用按回车翻找,more打开后用/$$ 直接跳转到那一页。

less命令的 /字符串 有相同的效果,并且会高亮显示。例如 /99 。

head与tail
查看日志时,如果用cat等命令就太慢了,有时只是想看最近的日志,可以用tail和head命令。
tail /var/log/messages ,head /var/log/messages ,默认查看10行日志。

还可以调整查看行数,tail -3 /var/log/messages 查看结尾3行,head -3 /var/log/messages 查看开头3行。

如果要查看中间部分内容呢?可以在命令行中加入 | ,即管道。用命令行脚本往log.txt中写入hello 1 ~ hello 1000,cnt=1 ; while [ $cnt -le 1000 ]; do echo "hello $cnt"; let cnt++; done > log.txt ,如果要看中间的501到510行,先用head命令取出前510行,再通过管道用tail命令取出后10行,head -510 log.txt | tail -10 。
Linux中一切皆文件,管道也是文件,可以看作head命令把前510行写入管道,tail命令再从管道中取后10行把内容输出到屏幕。

也可以多命令同时使用,cat log.txt | head -510 | tail -10 | tac ,cat命令打开文件,通过管道用head命令取前510行,再通过管道用tail命令取后10行,最后通过管道用tac命令逆序打印。

还可以继续组合命令,cat log.txt | head -510 | tail -10 | tac | wc -l,其中wc -l 可以统计前面处理的结果一共有多少行。

date
date 命令可以查看时间日期,可以指定打印格式,常用标记有%H时、%M分、%S秒、%Y年、%m月、%d日、%F打印%Y-%m-%d 。

date +%s 查看时间戳。

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
时间戳的用处:
-
转换成时间。
-
区间查看日志。比如一条日志的前面是时间戳,后面是做了什么操作,要查某段时间的日志,可以把起始时间和终止时间转换为时间戳,在这段时间戳区间中查找。
查看时间戳date +%Y.%m.%d--%H:%M:%S -d @时间戳 。

cal
cal 年份 查看日历(公历)。
find
while 命令 在指定目录下查找命令。

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

find 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。
find ~ -name "*.c" 从/root下查找后缀为.c的文件。

find 路径 -name "*.txt"
~ 为当前用户的家目录,即**/root** 。/ 为系统根目录,在整个 Linux 系统的所有目录里搜索(包括 /bin、/etc、/usr 等所有路径)。
grep
grep 选项 字符串 文件 在文件中搜索字符串,将找到的行打印出来。例如在之前的log.txt文件中搜索hello,会高亮显示。

在查看日志时,可以通过grep命令来查找关键字。如cat /var/log/messages | grep "Removed" | tail 。

grep "Removed" /var/log/messages | tail 也可以查看日志中带“Removed”的后10行内容。

grep命令还可以查找进程;当有许多源文件时,如果只想找到main函数入口,可以用命令grep -n "int main()" *.c .

grep命令有3个常用选项:-i 忽略大小写的不同;-n 顺便输出行号;-v 反向输出,显示没有指定字符串内容的那一行。
cnt=0; while [ $cnt -le 100 ]; do echo "hello $cnt"; let cnt++; done > log.txt 在log.txt文件中写入hello 1到hello 100。


用nano改变log.txt中部分hello的大小写。
zip与unzip
什么是文件的打包压缩?打包即文件合并,压缩即减少体积。为什么要打包和压缩?打包可以防止文件丢失;压缩可以减少体积,节省内存空间,网络传送时,可以有效减少传送时间。
zip/unzip能将目录或文件压缩成zip格式。 zip --version 和 unzip --version 查看系统是否安装。yum install -y zip unzip 安装zip和unzip。
zip -r dst.zip src 将src文件压缩成dst.zip文件,如果是小文件可以不加选项 -r ,对于目录,要加选项 -r 。-r 递归处理,将指定目录下的所有文件和字目录一并处理。
unzip xxx.zip 解压文件到当前目录下。
例如,把lesson20260415打包压缩为lesson20260415.zip,在/root下创建目录other,把压缩包发到other目录。

在other中解压压缩包。

unzip xxx.zip -d 路径 把压缩包解压到指定位置。例如在/root下创建目录testzip,把压缩包解压到testzip。

用tree ~树状展示。

sz/rz 命令用于 windows 机器和远端的 Linux 机器通过 XShell 互相传输文件。sz是发送,rz是接收。如果没有安装这两个命令可以用yum install -y lrzsz 安装。
sz lesson20260415.zip 把压缩包发到Windows系统的桌面。

rz lesson_ziptest.zip 把发到Windows的压缩包改名成lesson_ziptest.zip,然后在XShell中用命令接受压缩包。

tar
tar 选项 xxx.tgz src 。tar的选项较多,经常连用3个选项 czf ,可以理解为c新建一个打包文件,z压缩,f指定紧跟的压缩包名称。
tar czf lesson_tar.tgz lesson20260415 把lesson20260415打包成压缩包lesson_tar.tgz。

在/root创建目录other1,把压缩包发到other1,在other1解压压缩包。tar xzf lesson_tar.tgz 解压,选项x 为解压一个压缩文件。

选项 v ,压缩过程中显示文件。
选项 C ,解压到指定目录。例如:

也可以windows与Linux互传,如从Linux发压缩包到Windows。

两台Linux机器互传压缩包,用到 scp 远程拷贝命令,scp xxx.tgz 用户名@你的公网IP:目标机器指定的路径 。
bc
相当于计算器。

uname
如何在Linux环境查看你的体系结构和系统内核版本?
体系结构即芯片结构,如x86_32,x86_64(x64)。uname -r 查看系统内核版本,uname -m 查看系统体系结构,uname -a 查看所有信息。

其他重要的热键
\ 续行。

Ctrl + C 终止异常。Tab 如果输入wh后忘记怎么拼了,Tab键可显示所有带wh的命令。如果输入whoam再按Tab,会自动命令补全。

上下键查看历史命令。Ctrl + r 搜索历史命令,如Crtl+r后输入while,会自动匹配之前的命令。

Ctrl + D 退出当前用户。
关机
shutdown ,-h 将系统的服务停掉后,立即关机。-r 在将系统的服务停掉之后就重新启动。-t 秒数 -t 后面加秒数,即过几秒后关机的意思。
Shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为核心(kernel) ,但我们一般用户不能直接使用kernel,而是通过kernel的外壳程序,也就是所谓的shell,来与kernel沟通。外壳程序最直观的表现就是给用户打印出来命令行,用户输入的命令本质是字符串,命令会交给外壳程序,外壳程序再交给操作系统,操作系统操作完再通过外壳程序返回给用户。

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)。主要包含:1. 将使用者的命令翻译给核心(kernel)处理。2. 同时,将核心的处理结果翻译给使用者。
用一个例子帮助感性理解:如果说你是⼀个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的小花。你看上了小花,但是有不好意思直接表白,那就让你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫她王婆,它对应我们常使用的bash。
为什么要存在外壳程序? 1. 方便用户操作。2. 保护内核。
外壳程序是以进程的形式呈现的,外壳程序不能挂,新命令到来时,外壳程序不自己执行,而是创建子进程去执行命令,即使子进程挂了也不影响外壳程序。
shell是外壳程序的统称,Linux中具体的外壳程序有bash等。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)