Linux基础指令[下]

文章目录

0.英语单词

3.Linux的重要指令[下]

1. 输入/输出重定向

1.1echo和输出重定向

c 复制代码
Linux-xshell

echo "hello"
hello//输出到显示器上

echo "hello" > file.txt      //没有文件 创建新文件
cat file.txt
hello                         //输出重定向

echo "hello world" > file.txt
cat file.txt
hello world                  //覆盖式写入

echo "hello linux" >> file.txt
cat file.txt
hello world
hello linux                  //追加重定向(追加式写入)

cat
//待输入  hello
hello                         //cat + \n :输入什么输出什么

1.echo:打印内容到显示器

echo "hello"

2.echo "hello" > file.txt:> 输出重定向覆盖式

没有文件创建新文件,有文件直接将内容写入目标文件,每次写入时清空文件原有内容。

3.echo "hello" >> file.txt : >> 追加重定向追加式

没有文件创建新文件,有文件直接将内容写入目标文件,每次写入时在原有内容基础上追加。

1.2cat和输入重定向

  1. 对于文件:
c 复制代码
cat file.txt

文件中 读取输入

输出到显示器上

  1. 对于换行符:
c 复制代码
cat \n

从键盘输入

从键盘输入缓冲区读取

打印到显示器上

cat < file.txt

输入重定向:从文件读取内容

形象理解:将原来指向键盘输入缓冲区的指针重定向到文件(没有执行打开文件的操作)

cat file.txt

类似于C语言中fopen函数 打开文件后可以使用fread等函数操作

一下操作使得bak/bak1的文件内容均和file一样

cat file.txt > bak.txt打开文件 把本应输出到屏幕上的内容 输出到bak文件 [没有的话就新建]
cat < file.txt > bak1.txt 将file文件内容读到程序 输出到bak1

1.3Linux文件理念

Linux是采用C语言 + 一部分汇编

一般涉及到输入输出 有三个组件 显示器 键盘 普通文件

而Linux视其皆为文件

怎么做到把他们都当作文件来看待呢?

c 复制代码
struct inout
{
//函数指针
int (*pread)();
int (*pwrite)();
}
struct file Keyboard,Display,regular file;
//此时在上层看来 这三个东西皆为文件 每个组件均有相应的读写函数

为什么这样设计捏?

以统一的方式 处理一类具有相似或相同属性/行为的事物==》为了更简单的处理事物-->人为了偷懒创造工具

2.长文本逐行查看

2.1more的介绍

当file.txt文件行数很多(1000000)

cat file.txt:直接刷屏 当想查看某一行时需要翻很久

==》

more file.txt:打印满一屏幕自动停下来 按回车打印新的一行
more -5 file.txt打印前五行

缺点:只能向下翻 不能查看已经翻过去的内容

2.2建议使用less

类似于more 打印满一屏幕停止 回车继续但是他可以上下翻阅

按回车往下 上键往上

2.3more/less的选项

在使用more/less显示文件时,输入
/521:显示521行

n:向前搜索含521的行 1521 2521...

g:回到开头

3.head&&tail显示头尾

对head&&tail的认识

head file.txt:显示前十行

head -5 file.txt:显示前5行

问题:如何获取中间一段?[999, 1009]

c 复制代码
法一:利用临时变量tmp

head -1010 file.txt > tmp.txt

tail -11 tmp.txt

c 复制代码
法二:利用管道|

管道是什么?

  1. 连接命令/传导数据/批量化流水化处理命令
  2. 管道是用来传导数据的
  3. 管道可视为管道文件:内存级的文件 没有在磁盘上
  4. 把本应输出到显示器的内容传给--管道--tail本应从显示器接收内容 现在从管道另一端接收

head -1010 file.txt | tail -11

练习head和tail

显示666到670

4.时间指令

4.1显示时间

4.2date +%s

时间戳:从1970/01/01 08:00:00【北京时间】开始到现在的秒数[单向递增,具有唯一性]

获得时间戳

时间戳转换年月日

4.3cal: 显示日历

cal 2023:显示本年日历

cal -1:显示当月日历

cal -3:显示前一个月 本月 后一个月日历
只有-1 -3两个选项.

6.find 以及对exe程序的理解

find指令

在文件树中查找文件并作出相应处理(可能访问磁盘)

对exe程序的理解

认识:

Linux下的各种命令/工具/指令 本质上就是 可执行程序

程序员所编写的C/C++代码 编译器编译之后 形成了可执行程序

使用操作系统时经常会安装软件(Linux、Win)--- 实际上就是拷贝一份可执行程序

运行一个程序:

1.寻找 2.运行

7.which&&whereis&&alias

7.1which:

在系统路径中 查找特定指令所在的路径

7.2whereis:

whereis test.c:将包含文件名的路径显示

例如:找到test就显示路径[不是完全匹配]

7.3alias:取别名

起别名(自己起别名只在本次使用xshell时有效

alias ovo='ls -al'

ovo code【与执行ls -al的结果相同】

which ls的输出结果

执行ls--执行ls --color=auto

8.grep【行文本过滤工具】和 wc

grep

找到file.txt文件中含888的行 并显示[相比more/less更好用]

显示行号

除了521都显示

只显示printf

只显示PRINTF

大小写都显示

wc: word count

Linux系统中的wc命令是用来统计文件文本的字节数、单词数、行数等并显示输出的命令。

wc [选项] [文件名]

  1. 选项

-l 统计行数

-w 统计单词数

-c 统计字节数

-m 统计字符数

-L 打印最长行的长度

  1. 文件名

文件名表示要统计的文件名,可以同时指定多个文件名,用空格隔开。如果不指定文件名,则默认从标准输入读取数据进行统计。

统计文件test.txt的行数、单词数和字节数

wc -l -w -c test.txt

该命令会输出test.txt文件的行数、单词数和字节数

9.xargs【xarguement】

将管道的输出结果作为命令行参数交给后面的程序

ls原来是不会读字符串中的内容的

c 复制代码
ls -l -a -i
//显示全部文件属性信息 + incode编码
echo "-l -a -i" | ls
//只输出ls指令的结果即子目录/文件

通过xargs将字符串作为参数选项通过管道给ls

c 复制代码
echo "-l -a -i" | xargs ls [将管道的输出结果 作为命令行参数 交给后面的程序]
//显示全部文件属性信息 + incode编码

C语言main()函数的参数

10.打包和压缩

archive:存档

zip:压缩

inflation:解压

phase:阶段

10.1认识

打包:将东西放在一起

压缩:采用某种压缩算法 压缩他的存储空间

10.2作用

便于传输/归档

10.3方式

  1. zip

压缩失败

压缩成功


压缩至指定目录

总结zip和unzip

  1. tar命令
    -j :是否同时具有 bzip2 的属性?是否需要用 bzip2 压缩?

tar -czvf proj.tgz project [tar.gz == tgz: 打包并压缩]

-c :(create)建立一个压缩文件

-z :是否同时具有 gzip 的属性?是否需要用 gzip 压缩?z:zip压缩

-v :压缩的过程中显示文件!不建议用在背景执行过程! v:visualize可视化--显示压缩过程[可选 -- 可不写]

-f :使用档名,在 f 之后要立即接档名!不要再加参数!f:file表示要创建一个文件

解压: tar -xzvf project.tgz -x :解开一个压缩文件

解压至特定目录: tar -xzvf project.tgz -C /root/code

-C : 解压到指定目录

形成后缀为tar的文件即只打包不压缩 tgz: tar.gz: 打包并压缩

tar -cf test.tar test //打包不压缩

tar -xf test.tar //解包

tar -tf test.tar //查看 -t :查看 tarfile 里面的文件

tar和gz

tar:将文件备份到磁带上(tape archive)

gz:GZ是UNIX系统中的压缩文件,ZIP的Gnu版本

11.趣味小指令

11.1bc【Basic Calculator】

c 复制代码
echo "1+2+3" 
1+2+3
echo "1+2+3" | bc
6

11.2问题:

如何在Linux下查看Linux的体系结构 ,以及内核版本!

uname的作用

uname用来获取电脑和操作系统的相关信息

uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息

-a或--all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

11.3热键

Tab --- 命令补全/档案补齐

[Ctrl]-c --- 让当前的程序停掉

[Ctrl]-d ---键盘输入结束(End Of File, EOF 或 End Of Input)的意思;可以取代exit

[Ctrl]-r:搜索

11.4关机

关机:云服务器一般不关机

  1. shutdown
    -h : 停掉系统服务后立即关机。
    -r : 停掉系统服务后重新启动
    -t + 秒数:『过几秒后关机』
  2. halt:

开机:

reboot

11.5history

上下箭头可以上下翻之前使用过的指令
history: 显示所使用过的命令.

c 复制代码
history > cmd.txt//保存到记事本
相关推荐
Dola_Pan12 分钟前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book14 分钟前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
prcyang1 小时前
Docker Compose
运维·docker·容器
脚踏实地的大梦想家1 小时前
【Docker】安装全流程与配置完整镜像源(可安装 nginx)
运维·docker·容器
城南云小白2 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
从心归零2 小时前
sshj使用代理连接服务器
java·服务器·sshj
咩咩大主教2 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用
羌俊恩2 小时前
视频服务器:GB28181网络视频协议
服务器·网络·音视频
Zww08912 小时前
docker部署个人网页导航
运维·docker·容器
Flying_Fish_roe2 小时前
linux-网络管理-网络配置
linux·网络·php