C语言Linux vim shell命令

devtools/2024/9/19 11:24:20/ 标签: vim, 编辑器, linux

无论是在插入模式或者是其他模式下对于文件的修改都是对于内存缓冲区进行修改,只有当点击w进行保存以后才会将数据写入到一个新的文件中的,将源文件删除,并且新文件改为文件的名字

1. action+motion

dG删到文件尾

ggdG先到开头再删除到末尾

d^到达行首

d$到行尾

w移动到下一个词的开头,b移动到上一个词的开头

2. num + action

2dd删除两行

t"向后寻找"找到,找到前面一个位置

f"向后寻找"找到,直接找到本来的位置

diw删除单词并保持在视图状态,ciw删除并进入插入状态

ci”删除到“并且进入编辑模式

p粘贴到下一行

P粘贴到上一行

将文件进行格式化整齐,gg =G  (格式化)  gi  (回到格式化以前的位置)

:21,25d

:21,25y

yw复制到下一个单词词首

v行选,ctrl+v列选

多行注释 ctrl + v    +    I      +      //     +   esc      修改以后用@a快速

man浏览页面的时候f向下翻一页,b向上翻一页,q退出

关闭主机以前一定先关闭虚拟机否则会损坏虚拟机文件

sudo shutdown now 立刻关机

linux系统用于服务器所以一般服务器不是一个人在使用,可以多个人登录同一个Linux系统

硬链接允许VFS当中的多个文件可以映射到物理文件系统的同一文件中,也就是说,尽管在VFS中,这些文件或目录看起来可能位于不同的位置,或者有不同的名字,但它们实际上都代表同一份数据和信息。

pwd打印当前工作目录

cd回到家目录

cd /user/lib 切换到user/lib目录

cd / 切换到目录/

cd ~ 切换到用户家目录

cd .. 切换到父目录上一级目录

mkdir -p a/b/c 创建多级目录,加上-p是当父节点不存在的时候会创建父目录然后再创建子目录

mkdir dir1 dir2 dir3 创建多个目录

rmdir删除空目录,只能是空目录!

rmidr -p

通配符:(还需要学学怎么就好用了???)

*:表示匹配0个或者多个任意字符

?: 表示1个任意字符

[...]表示根据括号中的字符进行匹配[characters]匹配括号内的任意一个字符[!character]匹配括号外的任意一个字符

ls+文件名  显示文件的相关信息

ls+目录名  显示目录的相关内容

-a查看全部内容(含以 . 开头的隐藏文件)

.存储当前工作目录的路径

.. 存储当前工作目录的父目录的路径

cd..跳到上一级目录中去

ls -i 显示的数字是inode 如果两个的数字相同说明指向的是一个inode节点

【重要】ls -l 显示的总用量表示所有的文件占用的磁盘空间总和

第一列的字符- 表示普通文件

        d目录文件       l  符号链接(软连接,快捷方式)    c 逐字符处理的硬件设备鼠标键盘显示器

在读写权限之后就是硬链接数, 文件拥有者名,拥有组名

ls -lh 显示更详细的文件大小信息

cp用于复制文件或者目录

cp text1 text2 将text1复制到text2中,2存在则覆盖

cp -n text1 text2 若2存在则不覆盖

cp -r dir1 dir2 递归将目录dir1复制到dir2(目录文件必须要加-r)

cp 创建新文件的时候创建一个内容相同但是有不同inode编号的新文件

在进行覆盖的时候只是将内容进行修改,并没有修改文件的元数据

mv移动文件和目录,也可以用来对于文件或者目录重命名

mv text1 text2 将text1重命名为text2,若2存在则 "覆盖"

mv dir1 dir2 将dir1重命名为dir2

mv -n text1 text2 若2存在不 "覆盖"

mv text1 text2 dir 将text1和text2移动到dir中,若文件存在就 "覆盖"

mv -i text1 text2 dir 若文件存在则询问“ 覆盖 ” 吗

在Linux中重命名不能简单的理解为文件改名,因为大多时候是改变路径的

【mv 与cp区别】mv不是文件内容数据上的覆盖(cp是这样),而是直接删除文件,然后将源文件重命名

mv指令的覆盖是不涉及修改物理文件的所以mv命令的执行效率是更高的

cp 在 复制目录的时候需要加上 -r 表示递归复制子目录,mv指令不需要因为mv不要递归复制就是改个指针位置的命名

rm删除文件和目录

rm text1 删除文件text1

rm text1 text2 删除文件1,2

rm -i *.txt 删除当前目录下所有以.txt结尾的文件,并询问

rm -rf dir 递归删除目录dir

rm删除不可能恢复小心!

【与rmdir】rmdir只能删除空目录

指令取别名

alias 查看别名

alias h = 'history' 设置别名

alias指令定义的别名只在这一次连接会话中生效,若想持续生效要改配置文件哎

改变文件权限指令

chmod用于对于文件的权限进行修改

目录:

目录文件中存储的是其他文件和子目录信息(目录项),目录项中主要存储文件名inode编号(目录项不会存文件内容)(文件类型,权限,硬链接数文件大小等数据信息存在inode中)

逻辑上目录文件的目录项以李娜表的形式存储,有些文件系统可能采用b树或者哈希树

目录权限

写权限: 目录内进行新增删除或者重命名文件或者子目录用到 写 权限

执行权限: 有执行权限就是可以进入目录,没有执行权限的目录是不能进入的,目录是不可读也不可写的(所以当没有执行权限的时候即使有读写权限也没有用)

普通文件权限

【区分】查看目录下的文件名称是不需要有文件的读权限的,只需要有目录的执行和读权限

【注意】文件的删除和重命名在于目录的写权限和执行权限,而不在于文件本身

执行权限也是操作一个文件必备的

chmod 修改文件的权限两种常见的方式

文字设定法:

$ chmod a-r dir1/   #表示将目录dir1/的所有用户的读权限(Read)设置为关闭。

数字设定法:九个位置有权限与否采用二进制表示,后用八进制输出775

【技巧】二进制中奇数的化最后一位一定是1


文件相关命令

1.创建文件:

最常用的三种方式:

echo "Hello World ! " > text

touch text1 text2 text3 (要求文件们不存在)

vim hello.c 

2.which查找可执行文件 显示可执行文件的完整路径

which bash 查看bash的路径

which ls tree 查看命令ls和tree的路径

which -a vim 查看vim的所有路径(在有多个vim版本的时候)

find命令

find命令在一个或者多个目录中递归查找指定文件或者目录,只需要大体知道要查找什么就可以

find /usr/include -name "stdio.h" 在include目录下查找stdio.h文件

find . -name "*.c" 当前目录下查找.c结尾的文件

find . -size 5M 当前目录下大小 为 5M的文件

find . -size +5M 当前目录下大小 大于 5M的文件

find . -user he 当前目录查找he用户的文件

.表示当前目录

cat查看文件内容

cat -n /etc/passwd 在屏幕上打印用户的相关信息(显示行数)

head 和 tail查看文件的前几行和后几行

less 查看文件内容

重定向指令:改变源或者目的地

wc(word count)统计输入数据中行数单词数和字符数的指令  wc之后不跟文件名会从标准输入中读取数据进行统计。

文件的输入有两种方式可以是wc < text, wc text,

一般采用第二种方式,不会重定向标准输入因为文件有自己的文件缓冲区使用自己的缓冲区就可以,不用重定向指向标准输入缓冲区stdin

ctrl + D表示输入EOF结束键盘录入

重定向往往重定向自己的文件缓冲区这样就可以获得更多的信息

grep搜索文件内容(globally search for a regular expression)

按正则表达式去搜索匹配文件内容,如果文件中某一行匹配指定的正则表达式,grep命令则会显示这一行。

grep强大也主要是在于正则表达式上

正则表达式的三个核心的概念

基本单位,基本操作, 基本单位出现的位置找到某个字符串出现的位置和情况

匹配所有以f或F开头,以t结尾的单词: \<[fF][^ \t]*t\> 注意中间是不能取空格还有制表符避免出现跨字符的情况,\<与\>组合表示一个单词

命令的组合

命令的组合主要是有三种方式:1.cmd;cmd2单纯先执行a再执行b mkdir dir;cd dir

2. cmd1 | cmd2 |表示管道,表示将cmd1指令输出的结果作为cmd2的输入

3. cmd1 | xargs cmd2 表示将cmd1 输出结果的每一行作为cmd2的输入参数

2.cmd1 | cmd2 

ls -lh | grep -E "test"  列出当前目录的详细列表,并通过grep搜索包含"test"的行。

3. cmd1 | xargs cmd2 (通过例子与第二个指令进行区分)

查找当前目录下所有的.c文件,然后找到文件内容中存在main函数的行:

find . -name "*.c" | xargs grep -nE "\<main\("

创建硬链接

ln target_file link_name      target_file 硬链接的原始文件的名字,link_name 硬链接的名字

 不允许链接向目录,为了防止破坏目录结构

创建软链接

ln -s target_file slink_name    #添加一个选项-s,表示soft软链接

可以理解为快捷方式和指针,这个时候是可以指向目录的

远程复制指令

scp是一种在本地和远程计算机之间进行安全传输文件的工具

分为上传和下载

归档压缩指令

tar指令一开始是用于创建维护修改以及提取tar归档文件的指令

归档文件就是一种将多个文件或者目录合成单一文件的方式

linux中通过vim打开文件会自动添加换行符

使用echo -n就不会添加

使用stdin进行输入的时候使用ctrl+d,就不会再录入换行符

当进行阻塞输入的时候不能进行循环输入,

mmap munmap系统调用函数是malloc和calloc和realloc函数的底层。


http://www.ppmy.cn/devtools/17941.html

相关文章

Node.js -- 模块化

文章目录 1. 模块化介绍2. 模块化初体验3. 模块暴露数据4. 导入文件(夹)模块5. 导入模块的基本流程6. CommonJS 规范 这里是引用 1. 模块化介绍 之前我们所编写的文件都是单个文件&#xff0c;这就会出现一些问题&#xff1a; 变量不能重复命名&#xff1b;代码复用性差&…

【后端】python与django的开发环境搭建指南

安装Git 双击Git 客户端安装文件&#xff0c;在安装页面&#xff0c;单击“Next” 在安装路径选择页面&#xff0c;保持默认&#xff0c;单击“Next” 在功能组件选择页面&#xff0c;保持默认&#xff0c;单击“Next” 在开始菜单文件夹设置页面&#xff0c;保持默认&am…

十七、Java网络编程(一)

1、Java网络编程的基本概念 1)网络编程的概念 Java作为一种与平台无关的语言,从一出现就与网络有关及其密切的关系,因为Java写的程序可以在网络上直接运行,使用Java,只需编写简单的代码就能实现强大的网络功能。下面将介绍几个与Java网络编程有关的概念。 2)TCP/IP协议概…

Python + SQLAlchemy操作MySQL数据库(ORM)

一、sqlalchemy简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM&#xff08;对象关系映射&#xff09;工具&#xff0c;使用MIT许可证发行。 SQLAlchemy采用简单的Python语言&#xff0c;提供高效和高性能的数据库访问&#xff0c;实现了完整的…

Python-100-Days: Day01

Day01 Python简介 1.1989年Guido von Rossum在圣诞节之夜开始着手python语言编译器的编写。 2.1991年2月 Python v1 编译器诞生&#xff0c;使用C实现的&#xff0c;此时可以调用C的库函数。 3.1994年1月&#xff0c;Python v1.0 正式版发布。 4.2000年10月16日&#xff0…

B008-方法参数传递可变参数工具类

目录 方法参数传递可变参数冒泡排序Arrays工具类Arrays工具类常用方法 方法参数传递 /*** java中只有值传递* 基本数据类型 传递的是具体的值* 引用数据类型 传递的是地址值*/ public class _01_ParamPass {public static void main(String[] args) {// 调用方法 getSumge…

关于MCU核心板的一些常见问题

BGA植球与焊接&#xff08;多涂焊油&#xff09;&#xff1a; 【BGA芯片是真麻烦&#xff0c;主要是植锡珠太麻烦了&#xff0c;拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…

【转载】C#集成JWT快速入门

一、JWT基本概念 JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于在双方之间安全地传输信息作为JSON对象。这些信息可以被验证、信任&#xff0c;因为它们是数字签名…

JVM(Jvm如何管理空间?对象如何存储、管理?)

Jvm如何管理空间&#xff08;Java运行时数据区域与分配空间的方式&#xff09; ⭐运行时数据区域 程序计数器 程序计数器&#xff08;PC&#xff09;&#xff0c;是一块较小的内存空。它可以看作是当前线程所执行的字节码的行号指示器。Java虚拟机的多线程是通过时间片轮转调…

应用回归分析,R语音,逐步回归法,第5章

library(readr) data3_1 <- read_csv("data3.1.csv")View(data3_1) lm5<-lm(y~.,data=data3_1) lm6<-step(lm5,direction = "both") summary(lm6) 输出: Start: AIC=377.73 y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9Df Sum of Sq …

DIY高考倒计时小软件python实现

目录 一.前言 二.完整代码 三.代码分析 一.前言 高考倒计时是指从当前日期到高考日期之间的天数倒计时。高考是指中国的普通高等学校招生全国统一考试,是中国教育系统中最为重要和决定性的考试之一。在高考前,学生和家长通常会关注离高考还有多少天,以便合理安排备考时间…

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available 解决办法&#xff1a;下载想安装的node压缩包&#xff0c;放入nvm对应目录。 2024年最新node压缩包地址&#xff1a;https://nodejs.org/dist/ 1、选择对应的node版本&#xff1a;例如&#xff0c;我选的…

STM32应用开发教程进阶--UART串口重定向(printf)

实现目标 1、掌握STM32 HAL库的串口重定向 2、具体目标&#xff1a;1、实现printf “打印”各种常用的类型的数据变量 一、串口“打印” UART串口通信协议是我们常用的通信协议&#xff08;UART、I2C、SPI等&#xff09;之一&#xff0c;全称叫做通用异步收发传输器&#xf…

【Web】HNCTF 2022 题解(全)

目录 Week1 Interesting_include 2048 easy_html What is Web Interesting_http easy_upload Week2 ez_SSTI easy_include ez_ssrf Canyource easy_unser easy_sql ohmywordpress Week3 ssssti Fun_php ez_phar QAQ_1inclu4e logjjjjlogjjjj …

学python的第十九天

网络通信和访问数据库 1.1 基本的网络知识 TCP/IP IP是低级的路由协议&#xff0c;它将数据拆分在许多小的数据包中&#xff0c;并通过网络将他们发送到某一特定地址&#xff0c;但无法保证所有包都抵达目的地&#xff0c;也不能保证包按顺序抵达 TCP&#xff08;传输控制协议…

如何制作个性又美观的二维码?自定义Logo、样式,还能一键复用

草料二维码提供基础的二维码美化设置&#xff0c;包含Logo、颜色、码点码眼、容错、添加文字等设置。 还提供150标签样式&#xff0c;标签样式中所有内容&#xff0c;包括LOGO、背景、字段数量等&#xff0c;均可修改。 同时&#xff0c;支持将样式保存到账号下&#xff0c;方…

295. 数据流的中位数

295. 数据流的中位数 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类:MedianFinder() 初始…

博睿数据亮相GOPS全球运维大会,Bonree ONE 2024春季正式版发布!

2024年4月25日&#xff0c;博睿数据 Bonree ONE 2024 春季正式版焕新发布。同时&#xff0c;博睿数据AIOps首席专家兼产品总监贺安辉携核心产品新一代一体化智能可观测平台 Bonree ONE 亮相第二十二届 GOPS 全球运维大会深圳站。 Bonree ONE 2024 春季版产品重点升级数据采集、…

Docker数据卷的使用

1 数据卷概念 数据卷是一个共给容器使用的特殊文件目录&#xff0c;位于容器中&#xff0c;可以将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改立刻可见&#xff0c;并且更新数据卷不会影响到容器的使用&#xff0c;从而实现数据在主机和容器之间共享。 2 创建数据…

Scala 04 —— Scala Puzzle 拓展

Scala 04 —— Scala Puzzle 拓展 文章目录 Scala 04 —— Scala Puzzle 拓展一、占位符二、模式匹配的变量和常量模式三、继承 成员声明的位置结果初始化顺序分析BMember 类BConstructor 类 四、缺省初始值与重载五、Scala的集合操作和集合类型保持一致性第一部分代码解释第二…