OS4.【Linux】基本指令入门(3)

目录

1.rm指令改造为mv指令实现回收站

2.指令存储的位置

3.简易安装自制的指令(深刻理解指令的本质)

使用nano+gcc去编译C语言文件

4.指令的别名

alias

单独一个alias

加选项的alias

设置别名的格式

取消别名的格式

5.程序角度理解Linux系统下一切皆文件的观点

单独一个cat

[cat < 文件](#cat < 文件)

[cat 文件](#cat 文件)

echo

[echo 字符串](#echo 字符串)

[echo 字符串 > 文件](#echo 字符串 > 文件)

由上可以得出清空文件的简化指令:>out.txt

[echo 字符串 >> 文件](#echo 字符串 >> 文件)

[printf 字符串 >> 文件](#printf 字符串 >> 文件)

新建文件的简单指令">文件名"


1.rm指令改造为mv指令实现回收站

之前在OS3.【Linux】基本指令入门(2)文章讲过,由于rm指令比较危险,且文件较难恢复,没有Windows系统下的回收站策略,因此在一个工程中一般是建立一个delete文件夹,然后使用 mv 指令移走文件,定时对delete进行删除

实际上可以对rm指令改造为mv指令来实现回收站,讲完vim后会写,现在暂时不讲

2.指令存储的位置

在使用Linux的命令行界面的时候,有时候会输错指令,例如:

注意到"not found",推测输入指令时,系统会先去找指令,如果没有则显示"Command '???' not found",如果找到了,那么会正常执行指令

指令存储在root用户下的usr目录的bin目录下

ls -l后会列出一大堆文件,例如可以看到之前讲过的cat指令

结论:1.指令在系统的特定路径下存储 2.指令和可执行程序都是可以被执行的,那么++指令就是可执行程序++

3.简易安装自制的指令(深刻理解指令的本质)

前面的结论提到了:指令在系统的特定路径下存储,那么是不是可以自己将编译后的可执行文件放到usr/bin的目录下然后手动执行呢? 答案是可以的

使用nano+gcc去编译C语言文件

首先要知道Linux环境下怎么编译C语言文件

新建C语言文件+使用nano文本编辑器编辑C语言文件

cpp 复制代码
touch test.c
nano test.c

目前先用nano文本编辑器,不用vim

输入以下代码

cpp 复制代码
#include <stdio.h>
int main()
{
        printf("Hello World!");
        return 0;
}

Ctrl+S保存,Ctrl+X退出nano

编译指令(gcc是原来是C语言编译器,现已扩展到C++、Objective-C、Fortran、Ada等语言的编译)

cpp 复制代码
gcc test.c

注:g++是gcc的一个分支,专门用于编译C++代码

产生a.out(绿色字体),是可执行文件,相当于Windows平台下的*.exe文件

将a.out改成自己想要的指令名称,然后用移动到usr/bin路径下

cpp 复制代码
mv mycommand /usr/bin

之后可再次切换到/usr/bin路径下查看是否安装了mycommand指令

mycommand指令正常执行了 :

4.指令的别名

一些指令具有别名,例如ls -l的别名为ll,但去用which去查ll指令时却显示没有查询到

which用于查询指令的存储路径

alias

单独一个alias

在Ubuntu系统下,which后需要跟可执行文件,可以使用单独一个alias指令来查看所有的别名

(注: --color=auto是配色方案,不用管)

在Ubuntu系统下,ll是ls -alF的别名,而在CentOS系统下,ll是ls -l的别名,这个依系统而定

加选项的alias

加选项的alias:可以对指令临时使用别名,与服务器断链后会失效(要永久有效需要更改配置文件)

设置别名的格式
cpp 复制代码
alias 指令的别名='指令'

即指令和指令的别名的效果是等价的

例如alias wai='whomai',即设置whoami的别名为wai

取消别名的格式

例如alias wai='',取消设置wai别名

5.程序角度理解Linux系统下一切皆文件的观点

例如:显示器(为输出设备,则可以写入数据,即写入显存,但不能读数据),键盘(只能读数据),普通文件(可写可读)

单独一个cat

单独一个cat,则默认从键盘(一切皆文件)读取数据,之后显示到显示器上

(输入什么显示什么)

可以使用输入重定向符"<"来修改cat读取数据地方,如下

cat < 文件

cat 文件

作用:查看目标文件内容(全称concatenate)

指令"cat 文件"就是将文件的内容写入显示器中

其余有关cat的细节部分参见下一篇文章

echo

echo 字符串

作用:将字符串在显示器上打印(可以认为将字符串写入显示器中)

(无论字符串加不加引号,无论是单引号还是双引号,打印结果都是一样的)

echo 字符串 > 文件

观察以下图片,能否得出单个输出重定向符">"特点

(注:若echo写的文件不存在,则会自动创建)

发现向test.txt写入456后会覆盖掉原来的文件内容

结论: 单个输出重定向符的特点:覆盖写入,即先清空文件再写入数据

上方结论可以类比在C语言75.【C语言】文件操作(2)文章中讲过的fopen文件函数:如果打开的文件已经存在,fopen函数会自动将文件清空

那如果想追加字符串可以使用两个重定向符号>>(中间不能有空格)

由上可以得出清空文件的简化指令:>out.txt

echo 字符串 >> 文件

作用:向文件中追加字符串,旧的内容不会被清空,但会在字符串的结尾多追加一个换行符号,这点可以类比75.【C语言】文件操作(2)文章的a选项

可以使用xxd指令来验证查看test.txt存储的换行符(0x0a)

安装xdd的指令:

cpp 复制代码
sudo apt-get install xxd       # Debian/Ubuntu 系统
sudo yum install xxd           # CentOS 系统
sudo dnf install xxd           # Fedora 系统

printf 字符串 >> 文件

和指令"echo 字符串 >> 文件"不同的是:不会在字符串的结尾多追加一个换行符号

也可以使用echo -n 字符串 >> 文件,可以达到同样的效果

新建文件的简单指令">文件名"

>是一个输出重定向符,用于将命令的输出内容写入到指定的文件,如果文件不存在,则会自动创建

创建新文件可以不用touch指令

相关推荐
菜狗想要变强2 分钟前
Linux驱动开发--异步通知与异步I/O
linux·运维·驱动开发
SuperW7 分钟前
Linux学习——IO多路复用知识
linux·服务器·学习
搬码临时工20 分钟前
路由器转发规则设置方法步骤,内网服务器端口怎么让异地连接访问的实现
服务器·网络·智能路由器·内网穿透·端口映射·外网访问
CopyLower44 分钟前
Spring Boot的优点:赋能现代Java开发的利器
java·linux·spring boot
终身学习基地1 小时前
第七篇:linux之基本权限、进程管理、系统服务
linux·运维·服务器
安顾里1 小时前
LInux平均负载
linux·服务器·php
unlockjy1 小时前
Linux——进程优先级/切换/调度
linux·运维·服务器
该死的碳酸饮料呀2 小时前
PLOG安装
linux·ubuntu
成工小白2 小时前
【Linux】详细介绍进程的概念
linux·运维·服务器
wayuncn2 小时前
双卡 4090 服务器租用:释放强算力的新选择
运维·服务器