Linux基础——Bash

2023-11-19

Bash是什么?

Bash 全称为Bourne Again SHell,是Shell程序的一种,提供一个界面(也就是终端),可让用户通过调用各种命令来操作系统

查看Linux中的Shell

系统支持的Shell程序在 /etc/shells 文件中,Linux默认使用bash(替代了sh)
在这里插入图片描述
想要知道用户当前使用的Shell,可查看 /etc/passwd 文件
在这里插入图片描述

Bash的优点

命令记忆功能

上一次登陆所执行的命令记录在 ~/.bash_history,而这一次登陆所执行的命令暂存于内存,只有退出时才会写到该文件,可通过⬆⬇查看前后命令

命令 history 可查看输入的历史记录,n表示显示个数,-c 清除历史,-r 将~/.bash_history的内容读到内存,-w将目前新增的历史记录写到 ~/.bash_history
在这里插入图片描述

补全功能

使用 tab 可进行输入补全

命令别名

可通过 alias 简化命令,如下使用 lm 代替 ls -al,取消使用unalias
在这里插入图片描述

工作、前景背景控制

可让当前工作在背景中执行

脚本

可将一连串指令写成一个文件及采用交互式运行,用于完成一个大工程

通配符

符号 意义
* 0到多个任意字符
? 1个任意字符
[] [abcd]表示可能为abcd中的任意一个或多个字符
[-] [0-9]表示有0-9的任意数字
[^] [ ^a ] 除了a以外的字符

内置命令

除了在 /bin 外的系统命令,bash本身也自带了命令,可通过 type 查看当前命令类型

  • 不加参数显示其完整类型
  • -t 输出file表示系统命令,alias 表示命令为别名,builtin则为bash命令
  • -p 显示系统命令的路径
  • -a 显示出命令的搜索执行顺序,如下先使用的是ls --color=auto,而不是/bin/ls

可看到 ls 是 ls --color=auto 的别名,cd 为bash指令
在这里插入图片描述

Bash环境配置流程

Login Shell

Login Shell指通过完整流程获取Bash,列如在命令行界面登陆。首先读取/etc/profile配置环境变量、语言、命令别名等,然后读取个人配置~/.bash_profile( ~/.bash_login或 ~/.profile)
在这里插入图片描述
如下可看到其调用了bashrc,设置命令行提示符号等
在这里插入图片描述

Non-login shell

而Non-login shell指通过窗口界面等方式登陆后再打开终端,仅读取~/.bashrc,然后读取/etc/bashrc、/etc/profile.d/*.sh

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux基础——Bash 的相关文章

  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 在cmake中集成bash测试脚本

    我有一个 C cmake 项目 它使用 Boost Test 进行单元测试 现在我想向 cmake 公开一系列 bash 脚本 用于集成测试 假设每个脚本在以下情况下返回 0PASS或某些情况下 0FAILURE 我希望每次运行时都执行每个
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • Bash 脚本跳过提取受密码保护的档案

    我有一个脚本 它使用命令对某些文件夹中的特定 zip 和 或 tar gz 存档进行批量提取 unzip o zip path d destination folder 不幸的是 当存档受密码保护时 脚本会停止并等待密码输入 有没有办法省略
  • 命令中的 Bash 变量扩展[重复]

    这个问题在这里已经有答案了 DATE 1 week ago date date DATE 不起作用 我怎样才能让它发挥作用 我可以做 DATE CMD date date DATE eval DATE CMD 但我不想将整个命令存储在变量中
  • Linux下单个目录下文件过多会怎样?

    如果一个目录中有大约 1 000 000 个单独的文件 大部分大小为 100k 其中没有其他目录和文件 是否会以任何其他可能的方式降低效率或产生缺点 ARG MAX 会对此提出异议 例如 rm rf 在目录中时 会说 参数太多 想要执行某种
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • Python 子进程:无法转义引号

    我知道以前曾问过类似的问题 但它们似乎都是通过重新设计参数的传递方式 即使用列表等 来解决的 但是 我这里有一个问题 因为我没有这个选项 有一个特定的命令行程序 我使用的是 Bash shell 我必须向其传递带引号的字符串 它不能不被引用
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • GCC 详细模式输出解释

    我是 Linux 新手 谁能向我解释一下我的 hello world 程序的以下详细模式输出 另外 这些文件是做什么用的crt1 o crti o crtend o crtbegin o and crtn o and lc and lgcc
  • 用于 e NetworkManager VPN 连接的 dbus 信号处理程序

    我需要开发一些在建立 VPN 连接时执行的 python 代码 VPN 由 NetworkManager 控制 我试图弄清楚如何为此使用 NM DBUS 事件 使用 dbus monitor system 我能够识别连接信号 signal
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • Bash 目录上的 For 循环

    快速背景 ls src file1 file2 dir1 dir2 dir3 Script bin bash for i in src do if d i then echo i fi done Output src dir1 src di
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • Linux 上的“软/硬 nofile”是什么意思

    当我尝试在RedHat EL5上安装软件时 我得到了错误 软 硬nofile的期望值是4096 而默认值是1024 我设法增加了这个数字 但我不知道参数是什么 他们指的是软链接和硬链接吗 我改变的方法是 a 修改 etc security

随机推荐

  • 【100%通过率 】【华为OD机试真题 c++ 】最大数字【 2023 Q1 A卷

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个由纯数字组成以字符串表示的数值 现要求字符串中的每个数字最多只能出现2次 超过的需要进行删除 删除某个重复的数字后 其它数字相对位置保持
  • Android 模拟器 Genymotion 安装配置与 ARM 支持

    简介 Genymotion是一款基于x86架构的Android模拟器 由于系统启动速度 应用运行速度远远快于Android SDK自带模拟器而受到广泛应用 优缺点 优点 1 模拟器启动速度快 比AVD快很多 2 应用运行速度快 3 跨平台
  • Python面向对象类继承中发生的私有属性访问错误问题

    按照Python100days项目中的该方法来访问私有属性 可正常访问到 class Test def init self foo self foo foo def bar self print self foo print bar def
  • 【Pytorch】常用函数功能介绍和注意事项

    持续更新中 数据预处理 Variable from torch autograd import Variable 作用 自动微分变量 用于构建计算图 网络层定义 torch nn BatchNorm2d 设尺寸为N C H W 其中N代表b
  • 微信小程序实现点击左侧导航栏自动定位到对应的位置

    我要实现的效果是点击左侧导航栏 右侧区域会自动滚动到相应的位置显示 其中当选择品牌的时候 右侧是有索引栏的 效果图如下 刚开始的时候我是用微信小程序自带的组件scroll view是实现点击左侧导航栏的跳转功能 其中scroll into
  • C++ STL- 常用容器deque

    1 1 deque容器基本概念 功能 双端数组 可以对头端进行插入删除操作 deque与vector区别 vector对于头部的插入删除效率低 数据量越大 效率越低 deque相对而言 对头部的插入删除速度会比vector快 vector访
  • Xilinx 7系列芯片选型手册的资源量怎么看

    推荐阅读AMD官方文档 该文档介绍了各种资源的具体含义 链接 7 Series FPGAs Configurable Logic Block User Guide UG474 以XC7A35T为例 Logic Cells 逻辑单元 对于7系
  • QT new模态对话框

    1 如果父窗口是new出的 则子窗口如果用堆栈的方式 Dlg dlg 创建 则会出现QWSLock up down Invalid argument错误 这实际上QT4 8的一个Bug 如果不想重新编译Qt的话 可以采用以下方式临时避免一下
  • VSC/SMC(十六)——自适应鲁棒滑模控制

    目录 1 参数不定和扰动不定但有界的系统 2 滑模控制自适应律设计 2 1控制律设计总结 3 仿真分析 3 1 PD控制 3 2普通自适应律 3 3映射自适应律 3 4总结 4学习问题 1 参数不定和扰动不定但有界的系统 其中 2 滑模控制
  • lua json 库

    1 luajson GitHub mpx lua cjson Lua CJSON is a fast JSON encoding parsing module for Lua clone 源码 cd lua cjson 2 1 0 make
  • typescripe中的ajax和axios(一)

    typescript是基于JavaScript的 JavaScript中前端请求到后端使用的是Ajax Asynchronous JavaScript and XML 而在typescript中请求使用的axios axios是通过prom
  • ovirt节点添加windows虚拟机

    1 新建windows7虚拟机 设置Windows7镜像引导 2 启动起来后换盘安装驱动 换的是驱动盘 3 驱动安装成功后分区 再把系统盘换回来 开始装系统 4 等待装系统即可
  • 【Linux & IO多路转接】——epoll详解

    目录 一 epoll简介 二 epoll相关系统的调用 1 epoll create 2 epoll ctl 3 epoll wait 三 epoll工作方式 1 水平触发模式 level triggered LT 2 边缘触发模式 edg
  • C++征途 --- List链表容器

    第一部分 基础概念 上面这个模型的是一个单向链表 优点 1 链表增加和删除节点的时候不需要进行vector数组那样的增完后进行后移 也不需要删完后前移 当它增加一个节点的时候 只需要将它插入的位置的上一个节点的指针域中的指针指向增加的节点
  • 六、03【Java 多线程】之Java线程

    Java 创建线程的方式 Java创建线程有四种方式 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 使用 Executors 工具类创建线程池 1 继承 Thread 类 创建一个类继承 Thread
  • shell习题-被3整除

    1 要求 写一个脚本 计算100以内所有能被3整除的正整数的和 2 脚本答案 root liang 2018 06 23 vim 2018 06 23 sh bin bashfor i in seq 100 do Num i 3 if Nu
  • Vue踩坑记录(一)——vue,data属性为什么使用了_或$开头却会提示报错?

    我们先来看一个简单的例子
  • cityscapes和Mapillary Vistas两种不同分割数据集的label映射

    众所周知 cs一共有19类 但是Mapillary Vistas有很多类 在做domain adaption的时候 往往需要将二者的类别做一个映射 如下表 同时发现Mapillary Vistas这个数据集下载下来之后 对应的label咋i
  • malloc与free的底层实现

    1本节引言 内存管理内幕 Linux内存管理 Malloc 本文引用了下面这篇文章 读完下面 应该读下上面两篇文章 其中 内存管理内幕 提供了一个简单的malloc free实现版本 看看它的free设计 相信有足够的吸引力 gnu fre
  • Linux基础——Bash

    Bash Bash是什么 查看Linux中的Shell Bash的优点 命令记忆功能 补全功能 命令别名 工作 前景背景控制 脚本 通配符 内置命令 Bash环境配置流程 Login Shell Non login shell Bash是什