0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux系统中shell命令解析

马哥Linux运维 来源:博客园Yoob 2024-11-05 15:40 次阅读

1 什么是shell

shell是Linux系统的用户界面,提供了用户与内核交互的一种接口,它接收用户输入的命令并到送到内核去执行,因此也被称为Linux的命令解释器。

显示系统当前使用的shell

echo ${SHELL}

# /bin/bash

查看系统当前使用的所有shell

cat /etc/shells 

# /bin/sh
# /bin/bash
# /usr/bin/sh
# /usr/bin/bash
# /bin/tcsh
# /bin/csh

2 设置主机名

# 临时生效
hostname localhost

# 持久生效,支持CentOS7和Ubuntu18.04以上版本
hostnamectl set-hostname locahost

3 命令提示符

提示符格式说明:

e 控制符�33

u 当前用户

h 主机名简称

H 主机名

w 当前工作目录

W 当前工作目录基名

24小时时间格式

T 12小时时间格式

! 命令历史数

开机后命令历史数

# 查看提示符格式
cat $PS1

# 在CentOS系统实现持久保存提示符格式
echo 'PS1="[e[1;32m][	 [e[1;33m]u[e[35m]@h[e[1;31m] W[e[1;32m]][e[0m]\$"' > /etc/profile.d/env.sh

# 实现Ubuntu系统持久保存提示符格式
echo "PS1='[e[1;35m][u@h W]\$[e[0m]'" >> .bashrc

4 内部命令与外部命令

内部命令:由shell自带的,而且通过某命令形式提供, ,用户登录后自动加载并常驻内存中

外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除

区分内部命令与外部命令

type commond

内部命令管理

help# 查看所有内部命令
enable commond# 启用内部命令
enable -n commond#禁用内部命令
enable -n # 查看所有禁用的内部命令

外部命令管理

# 查看外部命令文件执行路径
which -a --skip-alias ${commond}

Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率

hash 命令常见用法

hash 显示hash缓存

hash -l 显示hash缓存,可作为输入使用

hash -p path name 将命令全路径path起别名为name

hash -t name 打印缓存中name的路径

hash -d name 清除name缓存

hash -r 清除缓存

5 命令别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行

alias# 查看当前定义的所有别名
alias name='commond'# 定义别名
alias name# 撤销指定别名
unlias -a# 撤销所有别名

注意:在命令行中定义的别名,只在当前shell进程中有效,如果想永久生效,要定义在配置文件中

~/.bashrc 仅对当前用户生效

/etc/bashrc 对所有用户生效

编辑配置文件写进的新配置不会立即生效,需要bash进程重新读取配置文件

source ~/.bashrc
source /etc/bashrc

6 常见命令

lscpu
cat /proc/cpuinfo
free
cat /proc/meminfo
lsblk
cat /proc/partitions
arch
uname -r
cat /etc/os-release
cat /etc/redhat-release
lsb_release -a
cat /etc/os-release
cat /etc/issue
lsb_release -a
lsb_release -is
lsb_release -cs
lsb_release -rs
halt
poweroff
reboot
shutdown -h/-r now/+n
shutdown -h/-r hh:mm
whoami
who
w

7 会话管理

screen -ls# 查看所有会话
screen -Sname# 创建会话
ctrl+a,d# 剥离会话
screen -x name# 加入会话
exit# 退出并关闭会话
screen -r name  # 恢复某会话

Tmux 是一个终端复用器(terminal multiplexer),类似 screen,但是更易用,也更强大,Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离,功能如下:

它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。

它可以让新窗口"接入"已经存在的会话。

它允许每个会话有多个连接窗口,因此可以多人实时共享会话。

它还支持窗口任意的垂直和水平拆分

# 新建会话
tmux new -s session_name

# 分离会话
tmux detach
ctrl+b+d

# 接入会话
tmux attach -t 

# 杀死会话
tmux kill-session -t 

# 切换会话
tmux switch -t 

# 上下切分窗格
tmux split-window

# 左右切分窗格
tmux split-window -h

# 列出所有快捷键,及其对应命令
tmux list-keys

# 列出tmux所有命令及其参数
tmux list-commands
Ctrl+b %:#划分左右两个窗格
Ctrl+b ":#划分上下两个窗格"
Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换
到下方窗格,就按方向键↓
Ctrl+b ;:光标切换到上一个窗格
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格左移
Ctrl+b }:当前窗格右移
Ctrl+b Ctrl+o:当前窗格上移
Ctrl+b Alt+o:当前窗格下移
Ctrl+b x:关闭当前窗格
Ctrl+b !:将当前窗格拆分为一个独立窗口
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小
Ctrl+b Ctrl+:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号
tmux new-window# 新建窗口
tmux new-window -n # 新建一个指定名的窗口
tmux select-window -t # 切换到指定窗口
tmux select-window -t # 切换到指定窗口
Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b :切换到指定编号的窗口,其中的是状态栏上的窗口编号
Ctrl+b w:从列表中选择窗口
Ctrl+b ,:窗口重命名

8 echo输出信息

echo [-neE] [字符串]

选项:

-E (默认)不支持 解释功能

-n 不自动换行

-e 启用 字符的解释功能

echo "$VAR_NAME"

启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

a 发出警告声

退格键

c 最后不加上换行符号

e escape,相当于�33

换行且光标移至行首

回车,即光标移至行首,但不换行

插入tab

插入字符

�nnn 插入nnn(八进制)所代表的ASCII字符

xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码,具有颜色的字符,其格式如下:

"�33[字符背景颜色;字体颜色m字符串�33[0m"

�33[30m -- �33[37m 设置前景色

�33[40m -- �33[47m 设置背景色

#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
#字体颜色: 30--37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色

加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:

�33[0m 关闭所有属性
�33[1m 设置高亮度
�33[4m 下划线
�33[5m 闪烁
�33[7m 反显
�33[8m 消隐
�33[nA 光标上移n行
�33[nB 光标下移n行
�33[nC 光标右移n列
�33[nD 光标左移n列
�33[x;yH 设置光标位置x行y列
�33[2J 清屏
�33[K 清除从光标到行尾的内容
�33[s 保存光标位置
�33[u 恢复光标位置
�33[?25l 隐藏光标
�33[?25h 显示光标
�33[2J�33[0;0H 清屏且将光标置顶

9 bash快捷键

Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出,解锁
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Ctrl + xx 光标在命令行首和光标之间移动
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
Ctrl + w 从光标处向左删除至单词首
Alt + d 从光标处向右删除至单词尾
Alt + Backspace 删除左边单词
Ctrl + d 删除光标处的一个字符
Ctrl + h 删除光标前的一个字符
Ctrl + y 将删除的字符粘贴至光标后
Alt + c 从光标处开始向右更改为首字母大写的单词
Alt + u 从光标处开始,将右边一个单词更改为大写
Alt + l 从光标处开始,将右边一个单词更改为小写
Ctrl + t 交换光标处和之前的字符位置
Alt + t 交换光标处和之前的单词位置
Alt + # 提示输入指定字符后,重复显示该字符#次

10 文件通配符

* 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~mage 用户mage家目录
. 和 ~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 一个字母
[A-Z] 一个字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
[]:任意数字,相当于0-9
[]:任意小写字母,表示 a-z
[]: 任意大写字母,表示 A-Z
[]: 任意大小写字母
[]:任意数字或字母
[]:水平空白字符
[]:水平或垂直空白字符
[]:标点符号
[]:可打印字符
[]:控制(非打印)字符
[]:图形字符
[]:十六进制字符

11 安全删除文件

rm 虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件

-z 最后一次覆盖添加0,以隐藏覆盖操作

-v 能够显示操作进度

-u 覆盖后截断并删除文件

-n # 指定覆盖文件内容的次数(默认值是3次)

链接:https://www.cnblogs.com/yoob/p/18514938

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1382

    浏览量

    40414
  • Linux系统
    +关注

    关注

    4

    文章

    595

    浏览量

    27497
  • 命令
    +关注

    关注

    5

    文章

    696

    浏览量

    22105
  • Shell
    +关注

    关注

    1

    文章

    366

    浏览量

    23443

原文标题:开机后命令历史数

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式Linux入门(三、Linux Shell及常用命令说明)

    嵌入式 Linux入 门第三课,熟悉掌握 Linux 常用 Shell 命令 ...... 矜辰所致
    的头像 发表于 06-21 10:50 1400次阅读
    嵌入式<b class='flag-5'>Linux</b>入门(三、<b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b>及常用<b class='flag-5'>命令</b>说明)

    shell编程的简单命令语句了解

    shell(脚本:批处理)适合职业:Linux系统运维工程师1.命令解析器(将用户输入的命令
    发表于 11-04 08:00

    linux shell命令/unix shell命令教程

    linux shell命令/unix shell命令教程:为了防止未授权用户访问你的文件,可以在文件和目录上设置权限位。还可以设定文件在创建
    发表于 12-06 13:08 61次下载
    <b class='flag-5'>linux</b> <b class='flag-5'>shell</b><b class='flag-5'>命令</b>/unix <b class='flag-5'>shell</b><b class='flag-5'>命令</b>教程

    Linux系统管理命令整理及使用方法介绍

    linux命令是对Linux系统进行管理的命令。对于Linux
    的头像 发表于 09-23 14:55 6879次阅读

    Linux教程之Linux命令、编程器、Shell编程、实例大全pdf免费下载

    的实用程序。全书分上、、下3篇,共20章,内容涵盖了Linux简介、Red Hat Linux基础知识、系统管理与设置、用户和用户组管理、磁盘管理、文件和目录管理、备份与压缩、网络管
    发表于 01-08 14:55 20次下载
    <b class='flag-5'>Linux</b>教程之<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>、编程器、<b class='flag-5'>Shell</b>编程、实例大全pdf免费下载

    Linux命令链接操作符的实际应用

    Linux命令的链接的意思是,通过操作符的行为将几个命令组合执行。Linux的链接
    发表于 05-06 17:44 862次阅读

    Linux系统命令shell脚本实践指南

    Linux系统命令shell脚本实践指南资料下载。
    发表于 06-01 14:47 28次下载

    嵌入式Linux开发工具——shell编程

    shell(脚本:批处理)适合职业:Linux系统运维工程师1.命令解析器(将用户输入的命令
    发表于 11-01 17:20 13次下载
    嵌入式<b class='flag-5'>Linux</b>开发工具——<b class='flag-5'>shell</b>编程

    Shell命令行解释器简介

    Shell 是一个命令行解释器,Shell 为用户提供了与设备进行命令行交互的方式,用户通过串口、以太网、无线等方式将命令传输给具有
    的头像 发表于 08-19 17:20 3279次阅读

    Linux命令行与shell脚本编写

    Linux命令行与shell脚本编写
    发表于 01-11 16:50 4次下载

    Linux基础知识Shell

    Shell便是Linux命令行环境CLI,直观意思是“外壳”,这一点与Linux内核对应。
    的头像 发表于 02-15 10:54 869次阅读

    shell命令linux命令一样吗

    结合在一起,形成一个相当于面向过程的程序,即shell script,从而实现一些复杂的功能。 而Linux命令则是用来对Linux系统进行
    的头像 发表于 11-08 10:51 2972次阅读

    linux命令shell编程有什么联系

    命令,并提供了许多功能和特性,如变量、控制结构、函数等,这些功能和特性使得Shell编程成为可能。 其次,Linux命令Shell编程的
    的头像 发表于 11-08 10:53 965次阅读

    linux命令行与shell编程实战

    Linux命令行与Shell编程实战主要涉及以下内容: Linux命令行基础:学习Linux
    的头像 发表于 11-08 10:57 836次阅读

    linuxsource命令的用法

    Linux,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。source命令可以用于读取并执行脚本文件
    的头像 发表于 11-08 14:35 2438次阅读