-
shell
查看当前shell:echo $SHELL
查看当前系统所支持的shell:cat /etc/shells
-
命令提示符(prompt): [root@localhost ~]#
2.1 [root@localhost ~]: PS1
2.2 prompt:
管理员:#
普通用户:$ -
命令:
3.1
3.2
下面分别是内部命令、外部命令类型
3.3 命令格式
3.4 在终端键入命令时shell会自动在默认搜索路径$PATH 中查找 ,找到后执行成一个或几个进程,然后为了提升效率会把键入的这个命令缓存到内存中:可以用hash查看缓存中的命令和命中次数
注意:缓存中的命令被挪作时会出现错误,所以必要时需要更新缓存:hash -r 清空缓存 -
查看命令路径(外部命令):
which
whereis -
获得命令的使用帮助
5.1 内部命令:
help COMMAND
5.2 外部命令:
COMMAND --help
5.3 man:查看外部命令手册(使用说明)
man [1-8] COMMAND
5.3.1显示是分8个章节的
分别存放在man的手册页目录 /usr/share/man 的man1、man2…man8下
(配置文件 /etc/man.conf 可设置路径)
(1)用户命令
(2)系统调用
(3)库调用
(4)特殊文件(设备文件)
(5)文件格式(解释每一个命令配置文件语法)
(6)游戏
(7)杂项
(8)管理命令
5.3.2 所以要查看在那个章节:
whatis COMMAND
5.3.3描述信息符号
<> 必须给出的内容和
[] 可选内容
… 可以使用多个
{}分组的,没特殊意义
a|b 多选一
5.3.4 man中解释项
5.3.5
5.3.6
5.4 在线文档
info CMMOAND
5.5 命令文档存放路径(几乎都在这里)
/usr/share/doc
5.6 发行版的官方文档
-
时间管理
6.1 服务器上有两个时间 硬件时间(rtc)、系统时间
查看硬件时间: clock/hwclock
查看软件时间:date
(rtc是在服务器硬件上的时间,关机因为有主板电池也不会有误差)
6.2 hwclock -w 系统时间同步到硬件时间
hwclock -s 读取硬件时钟到系统
6.3 cal: 日历
还有一个ntp时间协议(时间同步器) -
date
7.1 格式:
7.2 补充
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190517144358485.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgxMjE5OA==,size_16,color_FFFFFF,t_70) 例:
-
ls:
-h单位换算
-d 显示目录自身相关属性
-i 查看文件索引节点号
-R 递归显示子目录 -
cd:
cd :不加任何参数是回到本用户家目录
cd ~list: 到list家目录
cd -: 在当前目录和前一次所在目录之间切换 -
环境变量:是命名的内存空间 就是给变量复制
printenv:显示环境变量(只对当前shell有效)
10.1 设置环境变量 export
例:
-
printf 显示格式和字符本身 \n换行
-
echo
-n 不换行
-e 可用特殊字符
-
file:查看文件类型(后缀)
ELF 可执行可连接的文件文本格式 -
linux 文件颜色的含义
外黑内黄————设备文件
例
-
主要目录的作用
/selinux:一种安全加固的软件程序相关的信息存储位置
/misc:空的 备用杂项
/srv: 系统上运行的服务用到的数据
/lost+found ext文件系统创建时默认创建的目录
与系统启动无关的,而是完成基本功能存放的应用程序
/include:程序的文件头部
第三方软件安装路径
/var:
15.1 :
-
tree:查看目录树
-d 只显示目录 -
mkdir -p 创建多级目录
-v 显示详细信息
-m 设置权限
{.,.} 可以把命令行展开
例子1.
例子2.
17.1 mrdir :删除空目录 -
删除
rm
-r
-f
-i 交互式
-p 删除多级目录但是只能删如下图这种每个目录下只有一个的
-
stat file 查看文件详细信息、时间戳
例 -
touch 监控文件、改时间戳
例
-
cp
不能多个文件复制成一个文件只能将多个文件复制到目标是目录中
-r 递归复制(例;目录)
-p 保持文件原属性不变,如果不加会变成:哪个用户复制哪个用户就是属主属组
-P 保持原有连接
-a 归档存放(备份):把源文件保留原来的样子
-i 交互式
-f 强制 -
mv 移动目录时不用加参数,cp 必须加-r 或-a
入果目标已有同名文件则不能移动
-i 交互
-f 强制 -
install 复制
-d 创建目录 不加是创建文件 与复制语法不同
-m 指定权限 -
du 大小
-s 当前目录,不查看子目录
-h 单位 -
read:这个命令可以用来读取键盘输入,可以一次赋值多个变量
-t #设置超时时间(以秒为单位)
-p #用于指定提示信息
if read -t 3 -p "请在三秒内输入(年龄、姓名):" age name;then
echo $age
echo $name
else
echo -e "\n超时,未输入"
fi
-
cat
-n 显示行号
-E 显示结尾符
-
tac 查看的时候与cat相反,从结尾开始查看
-
less 用发同man
-
more
空格键 后翻一屏;b 向前翻一屏 ;回车键 向后翻一行 -
cut
用法:cut OPTION... [FILE]...
常见选项:
-d :指明分隔符
-f:指定要提取的字段
#:第#哥字段
#,#[,#]:离散的多个字段
#-#:连续的多个字段
1-3,7:混合使用
-
sort
补充:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
-K 后可以加u去重,目标只是-指定的域
示例:
-
uniq
不加参数:去重,但是必须是相邻并且重复的行
-d 只显示重复的行(只显示一次)
-D 显示所有重复的行(有几次显示几次)
-c 每行前显示重复次数 -
wc 分别显示:行数、单词数、字节数
-l
-w
-c
-L 最长的一样包含多少字符 -
tr 命令用于转换或删除文件中的字符。它从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
语法格式为:tr (options) set1 (set2)
options:
-d:删除指令字符
-s:缩减连续重复的字符成指定的单个字符。
示例:
#将文件testfile中的小写字母全部转换成大写字母
cat testfile | tr a-z A-Z 或 cat testfile | tr '(:lower:)' '(:upper:)'
#删除字符串中的所有数字
echo 'He2l2lo W1or3ld' | tr -d '0-9'
#将字符串中的所有空格替换为下划线
echo 'hello world' | tr ' ' '_'
#将字符串中的所有数字替换为字母
echo 'hello world123' | tr '0-9' 'a-j'
#压缩字符串中的连续空格
echo 'hello world' | tr -s ' '
#第一次使用tr删除换行符,第二次使用-s参数删除重复的空白。
cat test.js | tr -d '\n' | tr -s ' ' > test.min.js
- 关机/重启
- basename 直接取得一个路径的基名
- mail 查看邮件 用户邮件都会被放在家目录的mbox目录下
发邮件:
- RANDOM:生成随机数
36.1
随机数生成器
/dev/random 更安全 但容易阻塞
/dev/urandom - ping命令
-c 发几次包
-W 延迟多长时间
-i 间隔 - sleep 进程睡眠
- watch:
例:
- lsmod 命令:
是一个小程序,用来显示文件、proc/modules的信息,也就是显示当前内核模块装载的模块。 - lsof:查看进程打开的文件
参考文档:https://blog.itpub.net/31397003/viewspace-2147485
lsof filename 显示打开指定文件的所有进程
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof + p PID 显示进程号所打开的文件
常用方法 lsof | grep deleted 磁盘已满但查不到具体占用磁盘的文件,这条命令能过滤出已删除的文件,但空间并没有释放 - 关闭图形界面
- 字符/字符集/语言环境
字符集:是字符的集合
常见字符集:
ASCII:包含 128 个字符,涵盖了常见的英文字母、数字、标点符号和控制字符。
Unicode:这是一个几乎涵盖了世界上所有语言文字和符号的字符集。Unicode 为每种语言中的每个字符设定了统一且唯一的二进制编码。
GB2312:是中国国家标准的简体中文字符集,收录了 6763 个汉字以及一般的符号。
GBK:对 GB2312 的扩展,包含了更多的汉字和符号。
GB18030:是我国最新的汉字编码字符集国家标准,收录了更多的汉字和少数民族文字。
Big5:主要用于繁体中文环境,在台湾、香港等地较为常见。
字符编码:是将字符集中的字符映射为二进制数的规则。其目的是为了在计算机中存储和传输字符。
常见字符编码:
ASCII 编码:这是最早也是最基础的编码方式,使用 7 位二进制数表示 128 个字符,包括常见的英文字母、数字、标点符号和一些控制字符。
UTF-8 编码:是一种可变长度的 Unicode 编码方式,它可以使用 1 到 4 个字节来表示一个字符。
GB2312 编码:是中国国家标准的简体中文字符编码,收录了 6763 个汉字和 682 个非汉字图形字符。
GBK 编码:是对 GB2312 的扩展,包含了更多的汉字和符号。
语言环境:义了语言和地域相关的规则
常见语言环境:
en_US:英语(美国)
zh_CN:中文(中国大陆)
实际应用中:zh_CN 定义了语言和地域相关的规则,UTF-8 保证了字符的正确编码,它们共同作用以提供良好的中文支持和处理能力。
linux系统中设置语言环境的两种方法
第一种通过环境变量设置
export LC_ALL=zh_CN.UTF-8 # 设置整个语言环境为中文(中国大陆),字符编码为 UTF-8
export LANG=zh_CN.UTF-8 # 另一种常见的设置语言环境的方式
第二种通过 /etc/locale.conf 文件设置
LANG=zh_CN.UTF-8
locale是一个用于查看系统当前语言环境的命令。
locale:查看现有语言环境
locale -a:列出系统中所有可用的语言环境。
locale charmap :显示当前语言环境使用的字符编码映射
locale language :显示语言(LANG)环境变量的值。
localedef 是一个用于定义或修改本地环境(locale)的命令行工具。
一般语法: localedef [options] name [charset]
示例:要创建一个名为 zh_CN.UTF-8 的中文(中国大陆)本地环境,并使用 UTF-8 字符集
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
-
hash 查看缓存
hash -r 移除缓存 -
fuser 查看占用某文件的进程
语法:fuser(选项)(参数)选项 -a:显示命令行中指定的所有文件; -k:杀死访问指定文件的所有进程; -i:杀死进程前需要用户进行确认; -l:列出所有已知信号名; -m:指定一个被加载的文件系统或一个被加载的块设备; -n:选择不同的名称空间; -u:在每个进程后显示所属的用户名。
-
printenv 输出已有变量列表
-
xargs 用于从标准输入构建并执行命令行
基本语法:command | xargs [options] command_to_execute
示例:
#执行简单命令:假设我们有一个包含文件名的文件 file_list.txt ,可以使用以下命令将每个文件名作为参数传递给 ls -l 命令:
cat file_list.txt | xargs ls -l
#指定分隔符
echo "a,b,c" | xargs -d ',' echo
#限制每次执行命令的参数个数
[root@cj ~]# echo "a,b,c" | xargs -d ',' -n1 echo
a
b
c
#-I 替换字符串为指定字符
echo "file1 file2 file3" | xargs -n1 -I {} mkdir {}
- jq 一个用于处理 JSON 数据的轻量级且灵活的命令行工具
基本语法:jq
示例:
#假设data.json文件有以下 JSON 数据:
[root@cj ~]# cat data.json
{
"name": "John Doe",
"age": 30,
"city": "New York",
"fruits": ["apple", "banana", "orange"]
}
#要提取 name 的值
jq '.name' data.json
#筛选数据,只获取年龄大于 25 的数据
jq '. | select(.age > 25)' data.json
#处理数组,提取数组中的第一个元素:
jq '.fruits[0]' data.json
-
sshpass 是一个用于在命令行中向 SSH 连接提供密码的工具。
用法:sshpass -p “your_password” ssh user@remote_host
-
expect:是一个用于实现自动化交互的工具,特别适用于需要与需要用户输入的程序进行交互的场景,包括处理密码输入。
bash特性
-
每个用户登录服务器都会打开一个bash进程,但是互不相关,不知对方的存在
-
bash进程可以打开子进程
-
用户bash进程工作环境可以不一样,所以大环境相同小环境可以不同:比如登录提示符
-
命令行编辑
-
history 查看命令历史
5.1
5.2 HISTSIZE:环境变量,可以设置命令历史条数,默认保存1000条
5.3 命令历史使用技巧
5.4
5.5 bash -c: 是在 Bash shell 中用于执行指定命令字符串的一种方式。在一些脚本或自动化任务中,使用 bash -c 可以方便地将一系列命令作为一个字符串传递并执行。
用法:bash -c “command1; command2; command3” -
alias:不加参数显示所有别名 加参数另取命令别名(注意只是临时有效)
analias 撤销别名 -
命令替换:$(cmmoand)或者反引号
9.
文件名通配(glob)
*匹配任意长度任意字符
?匹配任意单个字符
[ ]匹配指定范围内的然以单个字符
[^] 匹配指定范围之外的任意单个字符
例子: 以一个字母开头+若干字符+一个空格+一个字母结尾
非字母结尾