【Linux】1 一篇通俗的Shell体验教程

简介: 【Linux】1 Shell 🍘1. 语录计算机不仅仅用来开发个网站或软件,更是我们手中的利器,我们的tools。shell是我们与计算机交互的主要方式,可视化的图形界面其实很受限,你只能通过预设的按钮去做一些事情。

【Linux】1 Shell 🍘

1. 语录

  • 计算机不仅仅用来开发个网站或软件,更是我们手中的利器,我们的tools。
  • shell是我们与计算机交互的主要方式,可视化的图形界面其实很受限,你只能通过预设的按钮去做一些事情。

2. Shell

2.1 程序

操作系统中通常都有一个”shell“,例如windows中的powershell。它们之间可能有些区别,但总的来说差不多。在windows系统中,也可以通过安装Git,使用linux风格的git bash 。(windows 下的git bash有时也不太一样,更建议真正的linux系统)shell中可以通过输入程序名来执行程序,比如有个程序叫date,就之间输入($是命令提示符,就像windows中的>

$ date
Sat Mar 18 20:52:33     2023

可以给程序传递参数,例如程序echo的运行效果就是把传递给它的参数打印出来,

$ echo hello
hello

此外,如果有多个参数,参数之间是使用空格分开的,如果传多单词组成的参数,可以使用\(转义字符),例如下面其实只给echo传了一个参数,

$ echo hello\ world
hello world

系统可以找到你输入的程序,是通过 Path(路径),可以查看环境变量中的所有路径

$ echo $PATH
/c/Users/ThinkPad/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/ThinkPad/bin:/c/Program Files/Common 
...(我省略了)

在你输入一个程序名,比如echo时,shell就会在系统的所有路径的目录中搜索该程序,你可以这样查看一个程序所在的路径

$ which echo
/usr/bin/echo

补充:关于程序(命令)的参数,我们使用-后面接单个字母,使用--后面接单词。例如-a--all

2.2 目录

程序默认会在当前目录下运行。下面是一些常用的目录操作

命令 介绍
pwd(print work directory) 打印当前目录路径
ls 列出当前目录下的文件,使用-l参数将显示更多详细信息
cd 切换目录到指定目录,使用cd -可回到刚才所在的目录,方便在两个目录间切换。.表示当前目录,..表示父目录,~表示用户目录,/开头表示根目录

通过--help参数,可以查看某个命令的用法,例如

$ ls --help

想一想:ls -l列出的目录列表及其信息,如何解读?

而操作文件需要权限,你需要拥有整条路径的权限才能对文件进行相应的操作。下面是一些和文件操作有关的命令介绍。

2.3 文件

2.3.1 简单文件操作

你可以使用mv命令给文件重命名,,即使它是move(移动)的意思。假设你在当前的目录下已经有个文件hello.txt,那么你可以使用命令

$ mv hello.txt hello2.txt

将它重命名为hello2.txtcp命令可以复制文件,它的意思是copy(很显然),你可以接着刚才的命令使用

$ cp hello2.txt hello.txt

那么你的hello.txt文件又回来了!现在你有了两个相同内容的文件,却有着不一样的名字。但估计你会觉得这有些多余,但好在你可以使用命令rm删掉其中一个,就像下面这样

$ rm hello2.txt

好了,现在我们又回到了刚刚开始的样子,但我们刚刚的操作已经在终端留下了杂乱的信息,使用clear命令清除它们!

$ clear

如果你想新建文件,可以使用touch命令,比如新建一个空hello2.txt文件

$ touch hello2.txt


有时你会感觉命令的名字有些奇怪,为什么创建文件要是touch?其实它就像前面的mv命令,重命名仅仅对它的一种使用方式,而它能做的不止于此,它其实可以将文件移动到你计算机的任何一个地方!


touch是一个时间戳命令,当操作的文件不存在时就会自动新建一个文件——而不是它本身只有新建文件的功能。当你感到疑惑时可以使用touch --help看看帮助文档。而我使用echo命令同样达到新建文件的目的

$ echo '' > hello3.txt

它将新建一个空文件hello3.txt 。你可能看着这些linux命令就像回到了高中背单词的时候,同一个单词有着相互略微联系的多种用法——也确实如此,单词是语言的基础。

至于刚刚命令中的>符号,相信大家一看就懂,我们后面也将会进一步介绍。

2.3.2 重定向

程序的输出除了直接显示到屏幕上,你也可以将它保存到文件里,而重定向可以帮你达成这个目标。这里有个的概念,每个程序都有自己的输入流输出流程序从自己的输入流中读取数据,并将运行结果写入到输出流中。而程序默认从键盘输入获取数据,并将运行结果写到屏幕上,我们将键盘输入称为标准输入流,将屏幕称为标准输出流。而重定向将助你获得修改程序输入、输出方向的能力——而不总是键盘和屏幕。

echo命令将输入流中的数据传递到输出流,但我现在不想输出到屏幕,我要将输入的内容保存到文件里,那么可以使用>——重定向输出流。

$ echo hello > hello.txt

想一想:为什么echo < hello.txt输出为空?

类似地可以使用<重定向输入流。cat命令可以将文件输入显示到屏幕,如

$ cat hello.txt
hello

现在我们通过重定向,可以将hello.txt文件的内容复制到另一个文件hello2.txt

$ cat < hello.txt > hello2.txt
$ cat hello2.txt
hello

cat程序从hello.txt中获得输入,并将输出写入了hello2.txt中——而不是屏幕上。

>重定向的输出流是覆盖模式,对应到文件操作中,就是先清空文件中原有的内容,然后写入新内容。如果你是想在原来的基础上添加一些内容,那么>>很适合你,它将以追加模式写入新内容。

$ echo world >> hello.txt
$ cat hello.txt
hello
world
命令 介绍
< 重定向输入流
> 重定向输出流,以覆盖模式写入
>> 重定向输出流,以追加模式写入


2.4 管道

一个程序的输出可以保存到文件里,也可以直接传递给另一个程序。将左侧程序的输出直接作为右侧程序的输入,这便是管道的作用,管道符为|

tail命令通过-n参数,可以输出它输入中的最后n行。命令ls -l /会显示出很多信息,那么通过下面的命令我可以只显示其中最后两行:

$ ls -l / | tail -n 2
-rw-r--r--  1 ThinkPad 197121   24183 Nov 28 12:20 unins000.msg
drwxr-xr-x  1 ThinkPad 197121       0 Nov 28 12:20 usr/

tee命令可以将输入同时输出到屏幕和指定的文件中,那么加上管道你可以像下面这样

$ echo linux1234 | tee hello.txt
linux1234

3 汇总与小结

本节介绍的一些命令、变量、参数如下表所示。

命令 介绍
date 显示当前时间
echo 将输入显示到屏幕
$PATH 环境变量
which 查找程序的位置
pwd 打印当前路径
ls 列出当前目录下的目录和文件
cd 切换当前目录
--help 查看程序的帮助文档
mv 重命名文件
cp 复制文件
rm 删除文件
clear 清除终端输出
touch 新建文件
< 重定向输入流
> 重定向输出流,覆盖模式写入
>> 重定向输出流,追加模式写入
| 管道符,左侧程序的输出作为右侧程序的输入
tail -n参数将输入中的最后n行输出
tee print to both your file and screen

本文仅仅大致介绍了linux shell的概况与使用,后面还有着更加精彩的世界等着大家自由探索。我是清风莫追,期待下次再见!


相关文章
|
3月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
|
3月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
|
9月前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
611 3
|
4月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
5月前
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
794 7
ERPNext 搭建教程:Linux 一键部署与维护
|
5月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
624 1
|
5月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
567 13
|
4月前
|
Ubuntu 网络协议 Unix
Linux教程(Ubuntu为蓝本)之Linux介绍篇
SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器。[1-2]
|
4月前
|
Ubuntu Linux 数据安全/隐私保护
Win10安装Linux子系统教程!如何在Win10系统中安装Ubuntu!
登录系统后,输入cd /返回上一级,然后再输入“ls”查看一下系统文件目录,看看对不对!