Bash 入门

作者:hubenchang0515日期:2025/11/15

#Bash 入门

#Hello World

Bash 的内置命令 echo 可以打印文本。例如:

1$ echo Hello World
2Hello World
3

echo 命令的 -e 选项激活转义字符的解释。例如:

1$ echo -e "Hello \n World"
2Hello 
3 World
4

#命令格式

Bash 命令基本遵循以下格式:

1命令 参数1 参数2 参数3 ...
2

例如在 echo Hello World 中,echo 是命令,Hello 是参数1,World 是参数2。

而在 echo -e "Hello \n World" 中,echo 是命令,-e 是参数1,"Hello \n World" 是参数2。

#注释

注释(comment)是写在程序里的说明性文字,不会被执行。

Bash 中的注释使用 # 表示,例如:

1$ # 这是注释,不会执行
2$ echo Hello World # 这也是注释
3Hello World
4
  • 只会打印 Hello World 不会打印 # 这也是注释

如果要让 # 表示该字符本身(而不是注释),可以使用 \ 转义或者使用引号包裹。

例如:

1$ \# 这不是注释,会执行
2bash: #: No such file or directory
3$ echo Hello World \# 这不是注释
4Hello World # 这不是注释
5$ echo "Hello World # 这也不是注释"
6Hello World # 这也不是注释
7

##!Shebang

#!(读作 shebang)是 Bash 中的一个特殊标记,写在脚本文件的开头,用来表示该文怎样运行。

例如:

demo.sh

1#!/usr/bin/bash
2echo Hello World
3

demo.py

1#!/usr/bin/env pyhon3
2print("hello world")
3

#命令类型

Bash 中的命令主要分为四类:

  1. 内置命令
  2. 可执行程序(外部命令)
  3. 函数
  4. 别名

可以通过 type 查看命令的类型。例如:

1$ type type 
2type is a shell builtin
3$ type echo
4echo is a shell builtin
5$ type ls
6ls is aliased to 'ls --color=auto'
7$ type cat
8cat is /usr/bin/cat
9

#别名

alias 命令可以查看和定义别名,unalias 命令可以删除别名。格式为:

1alias               # 查看所有别名
2alias 别名          # 查看指定别名
3alias 别名='命令'   # 定义别名
4unalias             # 删除别名
5

例如:

1$ alias greet='echo Hello'      # 定义别名
2$ alias greet                   # 查看别名
3alias greet='echo Hello'
4$ greet                         # 执行别名
5Hello
6$ unalias greet                 # 删除别名
7$ alias greet                   # 查看别名
8-bash: alias: greet: not found
9

在命令前加上反斜杠(\)可以抑制别名。例如:

1$ type -a ls                    # 查看所有可用的 ls 命令
2ls is aliased to `ls --color=auto'
3ls is /usr/bin/ls
4ls is /bin/ls
5$ ls                            # 实际执行 ls --color=auto
61.txt 2.txt dir1 dir2
7$ \ls                           # 实际执行 /usr/bin/ls
81.txt 2.txt dir1 dir2
9

#基础命令

命令说明示例
echo输出文字或变量值echo "Hello Bash" echo $HOME
pwd显示当前工作目录路径pwd → /home/user
ls列出目录内容ls -l(详细格式) ls -a(显示隐藏文件)
cd切换工作目录cd /etc(进入 /etc) cd ..(返回上一级)
mkdir创建目录mkdir new_folder
rmdir删除空目录rmdir old_folder
cp复制文件或目录cp file1.txt file2.txt cp -r dir1 dir2(递归复制目录)
mv移动或重命名文件mv old.txt new.txt(重命名) mv file.txt /tmp/(移动)
rm删除文件或目录rm file.txt rm -D dir/(删除空目录) rm -r dir/(递归删除目录) rm -rf *(强制删除全部)
touch创建空文件或更新时间戳touch new.txt
cat查看文件内容cat file.txt
more / less分页查看文件less large.txt(可上下翻页)
head查看文件前几行head -n 10 file.txt
tail查看文件末几行tail -n 20 file.txt tail -f log.txt(实时查看)

#常用快捷键

  • Ctrl + C - 中断程序的运行
  • Ctrl + Z - 暂停程序的运行,可以通过 fg 命令恢复运行
  • Ctrl + D - 退出 Bash
  • Ctrl + A - 光标移动到行首
  • Ctrl + E - 光标移动到行尾
  • Ctrl + U - 删除从光标位置到行首的内容
  • Ctrl + K - 删除从光标位置到行尾的内容
  • Shift + PageUp - 向上翻页
  • Shift + PageDown - 向下翻页

Bash 入门》 是转载文章,点击查看原文


相关推荐


Python 的内置函数 issubclass
IMPYLH2025/11/14

Python 内建函数列表 > Python 的内置函数 issubclass Python 的内置函数 issubclass 用于检查一个类是否是另一个类的子类(直接或间接继承)。它是 Python 面向对象编程中类型检查的重要工具。 语法 issubclass(class, classinfo) 参数说明 class:需要检查的类(必须是类对象,不能是实例)classinfo:可以是一个类对象,或者由类对象组成的元组 返回值 返回布尔值: True:如果 class 是 c


Flutter 3.38 发布,快来看看有什么更新吧
恋猫de小郭2025/11/13

在 11 月 13 日的 FlutterFlightPlans 直播中,Flutter 3.38 如期而至,本次版本主要涉及 Dot shorthands、Web 支持增强、性能改进、问题修复和控件预览等方面。 Dot shorthands 在 Dart 3.10 + Flutter 3.38 中开始默认支持 Dot shorthands ,通过 Dot shorthands 可以使用简写方式省略类型前缀,例如使用 .start 而不是 MainAxisAlignment.start : /


HTML 的 <canvas> 标签
hubenchang05152025/11/11

#HTML 的 <canvas> 标签 请查看 HTML 元素帮助手册 了解更多 HTML 元素。 <canvas> 元素可被用来通过 JavaScript(Canvas API 或 WebGL API)绘制图形及图形动画。 #属性 请查看 HTML 元素的全局属性 了解 HTML 元素的全局属性。 height: 该元素占用空间的高度,以 CSS 像素(px)表示,默认为 150。 moz-opaque(废弃): 通过设置这个属性,来控制 canvas 元素是否半透明。如果你不想 c


CCState:为大型 Web 应用设计的状态管理库
温宇飞2025/11/9

CCState 是一个基于 Signal 的状态管理库。它通过三种语义化的信号类型(State、Computed、Command)实现读写能力隔离,并原生支持 async/await 的异步计算,让状态管理变得简单直观。CCState 与框架无关,可与 React、Vue、Solid.js 等任何 UI 框架无缝集成。它在 秒多 等项目中得到验证,为大规模应用而设计。 快速上手 Signal Signal 是一个轻量级的描述对象,它本身不存储值,只是一个"引用"或"标识符"。所有 Signal


为什么你的JavaScript代码总是出bug?这5个隐藏陷阱太坑了!
良山有风来2025/11/7

你是不是经常遇到这样的情况:明明代码看起来没问题,一运行就各种报错?或者测试时好好的,上线后用户反馈bug不断?更气人的是,有时候改了一个小问题,结果引出了三个新问题…… 别担心,这绝对不是你的能力问题。经过多年的观察,我发现大多数JavaScript开发者都会掉进同样的陷阱里。今天我就来帮你揪出这些隐藏的bug制造机,让你的代码质量瞬间提升一个档次! 变量声明那些事儿 很多bug其实从变量声明的那一刻就开始埋下了隐患。看看这段代码,是不是很眼熟? // 反面教材:变量声明混乱 function


【基础算法】DFS中的剪枝与优化
让我们一起加油好吗2025/11/2

文章目录 上文链接一、剪枝与优化1. 排除等效冗余2. 可行性剪枝3. 最优性剪枝4. 优化搜索顺序5. 记忆化搜索 二、OJ 练习1. 数的划分(1) 解题思路(2) 代码实现 2. 小猫爬山(1) 解题思路(2) 代码实现 上文链接 【基础算法】DFS 一、剪枝与优化 剪枝,形象地看,就是剪掉搜索树的分支,从而减小搜索树的规模,排除掉搜索树中没有必要的分支,优化时间复杂度。 在深度优先遍历中,有几种常见的剪枝方法: 1. 排除等效冗余 如


Python 的内置函数 exec
IMPYLH2025/10/30

Python 内建函数列表 > Python 的内置函数 exec Python 的内置函数 exec 是一个强大的动态执行工具,它允许程序在运行时执行以字符串形式提供的 Python 代码。 def eval(source:str|codeobject, /, globals:dict=None, locals:mapping=None): ''' 执行表达式并返回结果 :param source: Python 表达式 :param globals :


面经分享——字节前端一面
Moment2025/10/28

最近在使用 NestJs 和 NextJs 在做一个协同文档 DocFlow,如果感兴趣,欢迎 star,有任何疑问,欢迎加我微信进行咨询 yunmz777 1. 使用的 React 版本? React 版本演进的趋势是怎样的? React 的版本迭代趋势体现了其向更高效、更简洁的开发体验不断发展的方向。从 React 16 开始,React 引入了许多新特性,如错误边界(Error Boundaries)和 Fiber 架构,显著提高了渲染效率。React 17 主要是稳定性的更新,并没有引入


Redis(83)Redis的缓存击穿是什么?
Victor3562025/10/25

缓存击穿的概念 缓存击穿(Cache Breakdown)指的是在某一个热点缓存数据过期的瞬间,有大量并发请求同时访问这个数据,而该数据在缓存中不存在,因此所有的请求都打到数据库上,导致数据库压力过大,可能引起系统性能问题。 解决缓存击穿的方法 为了解决缓存击穿问题,可以采取以下策略: 互斥锁(Mutex):在缓存失效时,只有一个线程去加载数据,其他线程等待。 永不过期:热点数据的缓存永不过期,只在数据更新时主动去更新缓存。 预加载:在缓存即将过期之前,提前加载数据到缓存。 以下是这几种解决


从入门到精通:JavaScript异步编程避坑指南
良山有风来2025/10/23

你是不是也遇到过这样的场景?页面上有个按钮,点击后需要先请求数据,然后根据数据更新界面,最后弹出提示框。结果代码写着写着就变成了“回调地狱”,一层套一层,自己都看不懂了。更可怕的是,有时候数据没加载完,页面就显示了,各种undefined错误让人抓狂。 别担心,这篇文章就是来拯救你的。我会带你从最基础的异步概念开始,一步步深入Promise、async/await,最后还会分享几个实战中超级好用的技巧。读完本文,你不仅能彻底理解JavaScript的异步机制,还能写出优雅高效的异步代码。 为什么

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0