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指令

相关推荐
ling-4536 分钟前
ifconfig 不显示 Linux 虚拟机常规网卡的 IP 地址
服务器·网络·php
黎明晓月1 小时前
‌CentOS 7.9 安装 Docker 步骤
linux·docker·centos
菜鸟xy..1 小时前
winhex软件简单讲解,虚拟磁盘分区介绍
linux·运维·服务器
网硕互联的小客服1 小时前
如何排查服务器内存泄漏问题
linux·运维·服务器·安全·ssh
Evoxt 益沃斯1 小时前
How to enable Qemu Guest Agent for Virtual Machines
linux·运维·服务器·qemu
钟离墨笺1 小时前
【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)
linux·服务器·网络
llkk星期五1 小时前
ubuntu 22.04附加驱动安装NVIDIA显卡驱动重启后无WiFi蓝牙等问题
linux·ubuntu
CVer儿1 小时前
ubuntu挂载固态硬盘
linux·运维·ubuntu
music&movie1 小时前
Win11安装VMware和Ubuntu并使用ssh访问部署模型
linux·ubuntu·ssh
J.Pei2 小时前
Linux(ubuntu)环境下部署The Fuck项目的方法(保姆级教程)
linux·ubuntu