Linux基础常识

news/2024/10/30 9:07:52/文章来源:https://www.cnblogs.com/yoob/p/18514938
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 控制符\033
  • \u 当前用户
  • \h 主机名简称
  • \H 主机名
  • \w 当前工作目录
  • \W 当前工作目录基名
  • \t 24小时时间格式
  • \T 12小时时间格式
  • ! 命令历史数
  • 开机后命令历史数

# 查看提示符格式
cat $PS1# 在CentOS系统实现持久保存提示符格式
echo 'PS1="\[\e[1;32m\][\t \[\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 -S	name				# 创建会话
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 <session-name># 杀死会话
tmux kill-session -t <session-name># 切换会话
tmux switch -t <session-name># 上下切分窗格
tmux split-window# 左右切分窗格
tmux split-window -h# 列出所有快捷键,及其对应命令
tmux list-keys# 列出tmux所有命令及其参数
tmux list-commands
Ctrl+b %:#划分左右两个窗格
Ctrl+b ":#划分上下两个窗格"
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换
到下方窗格,就按方向键↓
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+<arrow key>:按箭头方向调整窗格大小
Ctrl+b q:显示窗格编号
tmux new-window				# 新建窗口
tmux new-window -n <window-name>				# 新建一个指定名的窗口
tmux select-window -t <window-number>				# 切换到指定窗口
tmux select-window -t <window-name>					# 切换到指定窗口
Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
Ctrl+b w:从列表中选择窗口
Ctrl+b ,:窗口重命名
8 echo输出信息
echo [-neE] [字符串]

选项:

  • -E (默认)不支持 \ 解释功能
  • -n 不自动换行
  • -e 启用 \ 字符的解释功能
echo "$VAR_NAME"

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

  • \a 发出警告声
  • \b 退格键
  • \c 最后不加上换行符号
  • \e escape,相当于\033
  • \n 换行且光标移至行首
  • \r 回车,即光标移至行首,但不换行
  • \t 插入tab
  • \ 插入\字符
  • \0nnn 插入nnn(八进制)所代表的ASCII字符
  • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

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

"\033[字符背景颜色;字体颜色m字符串\033[0m"

\033[30m -- \033[37m 设置前景色

\033[40m -- \033[47m 设置背景色

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

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

\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[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] 匹配列表中的所有字符以外的字符
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
11 安全删除文件

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

  • -z 最后一次覆盖添加0,以隐藏覆盖操作
  • -v 能够显示操作进度
  • -u 覆盖后截断并删除文件
  • -n # 指定覆盖文件内容的次数(默认值是3次)

Tip

请,本文为笔者整理的学习笔记,仅供个人参考和梳理思路,错漏之处请多多指导。

如,本文参考各种资源整理未,因此未申请原创声明,如有侵权请联系删除。

若,如果需要转载请各位大佬标明出处,园子不大多多捧场。

另,本文仅做学习使用,请勿用于非法途径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10 早期计算机如何编程

程序需要加载进入内存, 最早是纺织机利用穿孔纸卡进行编程,穿孔纸卡用在过人口普查,用于记录一条条数字,但机器只有汇总功能,汇总穿孔数目 后来机器功能增多,人需要一个控制面板执行不同操作, 最早是重新布线更换指令,后来有了插线板,控制面板成了可拔插,可以给机器插…

PbootCMS模板首页循环调用所有栏目和对应内容

{pboot:nav} 栏目链接:[nav:link] 栏目名称:[nav:name] {pboot:list scode=[nav:scode] num=4 order=date} 内容链接:[list:link] 内容名称:[list:title] 内容图片:[list:ico] 内容时间:[list:date style=Y-m-d] 内容描述:[list:description] {/pboot:list} {/pboot:nav…

PbootCMS自带的sitemap.xml增加tag标签链接

修改 SitemapModel.php 文件:打开 /apps/home/model/SitemapModel.php 文件 在 78 行后面增加以下代码:public function getSortTags($scode) {$join = array(array(ay_content_sort b, a.scode=b.scode, LEFT),array(ay_model c, b.mcode=c.mcode, LEFT));$scode_arr = arra…

PbootCMS 面包屑导航样式修改和自定义的设置方法

问题:PbootCMS面包屑导航样式修改和自定义的设置方法。 答案:面包屑调用:{pboot:position}自定义参数:separator=*:分隔符,默认为 >>。 separatoricon=*:分割图标,例如 separatoricon=fa fa-angle-double-right。 indextext=*:首页文本,默认为“首页”。 index…

Maximum execution time of 30 secon

这种问题出现在Web开发环境中,特别是PHP等脚本语言中,当某个脚本运行时间超过预设的最大执行时间(例如30秒)时,服务器会终止该脚本的执行以防止资源被长时间占用。 解决方案增加脚本的最大执行时间在PHP中,可以通过修改php.ini文件中的max_execution_time值来增加脚本的最…

工地货梯AI人数识别系统

工地货梯AI人数识别系统采用人体神经网络深度学习算法,工地货梯AI人数识别系统对升降机轿厢内的人数进行智能分析和识别,能够精确识别出升降机内的人数。系统可以实时监测升降机内的人数变化,并根据设定的门限值,当人数超过限制时自动触发图像抓取和报警功能。报警方式可以…

物品堆放限高监测系统

物品堆放限高监测系统采用神经网络深度学习算法,物品堆放限高监测系统能够实时监测物品堆放区域的状态。通过在现场安装监控摄像头,系统对摄像头拍摄的实时视频进行处理分析,识别并判断物品堆放的高度情况。当堆放超过限定的高度范围时,系统将立即触发语音告警功能。物品堆…

煤块堵塞监测识别系统

煤块堵塞监测识别系统利用现场摄像头实时监测煤矿生产线上的皮带煤块堵塞情况。煤块堵塞监测识别系统可以准确地识别出堆积在生产线上的煤块,并计算出其堆积的程度。当煤块堆积的程度超过预设的警戒范围时,系统会立刻通知相关工作人员前往现场进行物料疏通。与传统人工巡检相…

1、K8S环境渗透学习

一、概述Kubernetes,简称k8s,是当前主流的容器调度平台,被称为云原生时代的操作系统。在实际项目也经常发现厂商部署了使用k8s进行管理的云原生架构环境,在目前全面上云的趋势,有必要学习在k8s环境的下的一些攻击手法。 二、k8s用户 Kubernetes 集群中包含两类用户:一类是…

zlibrary镜像地址,zlibrary中文版地址及客户端/app

Z-Library是一个全球性的数字图书馆,它提供了一个庞大的免费资源库,致力于让全球读者能够轻松访问科学图书和学术文献。以下是关于Z-Library的一些主要介绍:藏书量:Z-Library拥有超过1100万册图书和8400多万篇学术文章,覆盖各个学科领域。 实体书籍交流中心:在全球42个国…

10.31 实验7:单例模式

[实验任务一]:学号的单一 仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。 实验要求: 1.画出对应的类图; 2.提交源代码;#include <iostream>using namespace std;class S_num{ private:static S_num sno;static int num; public:static S_num getintan…

十月三十一日

[实验任务一]:向量的原型 用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。 #include <iostream> using namespace std; //向量类 class Vector{ private:int *p;int len; public:Vect…