系统管理命令 1~15
1. sh:早期的Shell,目前已经被bash代替了
sh是 Unix 系统中历史悠久的基础 shell,语法简洁、兼容性强,适合编写跨平台的简单脚本。虽然功能不如bash丰富,但仍是理解 shell 原理和脚本开发的重要基础。在实际使用中,若需复杂功能,可优先选择bash,但sh的兼容性仍使其在特定场景中不可替代。
2. bash (csh/tcsh/zsh) :默认的Shell
- 执行Linux命令
- 执行Shell脚本
#执行字符串中的命令
bash -c "ls -l;date;lscpu"
#执行Shell脚本
bash
bash(Bourne Again SHell)是 Unix 和类 Unix 系统中最流行的命令行解释器(shell)之一,它是 Bourne Shell(sh) 的增强版本,兼容sh的语法并添加了大量扩展功能。bash由 Brian Fox 于 1989 年为 GNU 项目开发,现在是大多数 Linux 发行版和 macOS 的默认 shell。
bash 的核心特点
- 兼容 sh:完全支持
sh的语法,可直接运行现有的sh脚本。 - 交互式增强:提供命令补全、历史记录、别名等功能,提升用户体验。
- 脚本编程扩展:支持数组、函数、正则表达式、循环控制结构等高级特性。
- 环境定制:通过
.bashrc、.bash_profile等配置文件自定义 shell 环境。
bash 的高级特性
1.命令补全: 按 Tab 键自动补全命令、文件名或路径,提高输入效率。
2.历史命令:
- 按
↑/↓键浏览历史命令,或使用history命令查看所有历史记录。 - 使用
!n执行历史记录中第n条命令(如!100)。
3.管道与重定向:
- 管道
|:将一个命令的输出作为另一个命令的输入(如ls | grep txt)。 - 重定向
>/>>:将输出保存到文件(覆盖/追加)。
4.shell常用快捷键
| 快捷方式 | 作用 |
|---|---|
| Tab | 自动补全命令或文件(目录)的名称 |
| Ctrl+c | 结束终端中正在运行的命令 |
| Ctrl+d | 从某些程序中退出 ( exit ) \quit\ q\ vim --> ESC :q! |
| Ctrl+a | 移动光标到终端开头 |
| Ctrl+e | 移动光标到终端结尾 |
| Ctrl+l | 清屏 |
| 上方向键 | 找回历史命令,向上找 history |
| 下方向键 | 找回历史命令,向下找 |
| Ctrl+s/Ctrl+q | 锁定与解锁Shell |
| Ctrl+z | 将前台正在运行的服务放置到后台运行 |
3.type:查看命令的类型
在 shell 中,type 是一个用于确定命令如何被解释和执行的内置命令。它可以帮助你了解某个命令是 shell 内置命令、外部可执行文件,还是别名(alias)或函数。
基本语法
type [选项] 命令名
- 选项:常用的有
-a(显示所有可能的位置)、-t(只显示类型)等。 - 命令名:要查询的命令(如
ls、cd、type本身)。
核心功能
type 命令主要用于解决以下问题:
1.判断命令类型: 确定一个命令是 内置命令(shell 自带的)、外部命令(系统中的可执行文件)、别名 还是 函数。
2.查找命令位置: 对于外部命令,显示其在文件系统中的路径(类似 which 命令)。
常见输出类型
type 命令的输出可能有以下几种:
- builtin:shell 内置命令(如
cd、echo、type本身)。 - file:外部可执行文件(如
/bin/ls、/usr/bin/git)。 - alias:用户定义的别名(如
ll='ls -l')。 - function:shell 函数(通常在配置文件中定义)。
- keyword:shell 关键字(如
if、for)。
示例
1.查询 ls 命令
$ type ls
ls is aliased to `ls --color=auto' # 在 Linux 中,ls 通常是带颜色选项的别名
2.查询 cd 命令
$ type cd
cd is a shell builtin # cd 是 shell 内置命令,无需外部文件
3.查询 python 命令
$ type python
python is /usr/bin/python # 外部命令,位于 /usr/bin 目录下
4.使用 -a 选项显示所有可能的位置
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls # 原始命令位置
5.使用 -t 选项只显示类型
$ type -t cd
builtin
$ type -t python
file
4.man :查看命令的帮助文档
“忘了用法?查查手册。”
用法:man 命令名
- 显示指定命令的完整手册,包括用法、参数和示例。
man 常用操作示例:
# 1. 查看 ls 的手册
man ls
# 2. 在手册中搜索关键词,比如 "file"
# 按 / 输入关键词,然后按回车查找
# /file
# 3. 退出手册
# 按 q 键退出
小总结:
- man 命令名:查命令的说明书。
- 按
/搜索:快速定位关键词。
用 man,不再为忘记命令用法发愁!
5. --help:快速帮你上手
“不想翻手册?用它快速查看命令用法!”
用法:命令 --help
- 显示命令的简要说明,包括常用选项和用法。
比如查看 ls 的简要帮助:
ls --help
--help简洁易懂,适合快速上手命令操作!
命令 --help # 显示命令参数
6.pwd:打印工作目录
- 全称 Print Working Directory,用来显示你当前所在的工作目录,也就是告诉你“我在哪儿”。
比如,你在终端输入:
pwd
输出可能是:/home/user/Documents
意味着你现在的工作目录是 /home/user/Documents。简单来说,这个命令相当于给你当前的位置标了个“导航点”。
7.ls:显示目录中的内容
用法:ls 或 ls [选项] [目录名]
- “List”的缩写,用于列出目录中的文件和子目录。简单来说,这个命令就是告诉你“当前目录里都有什么东西”。
-l参数,还能看到更详细的信息,比如文件大小,类型,修改时间,硬连接数,文件名,属主,属组和权限(属主,属组,其他)。-a显示所有文件,包括隐藏文件-d只显示隐藏文件-h显示文件大小单位(K,M,G)-t按时间顺序进行排列-r逆序显示,rt连用-i显示inode编号--color=auto按照文件的分类高亮显示文件 试试这个:
ls -l
还有ls -al,这会连隐藏文件(以.开头的文件)也一并显示。
8. cd:切换目录
“想去别的文件夹?用它轻松切换!”
用法:cd 目录名
cd全称 “Change Directory”,顾名思义,就是切换目录。
进入指定目录,如果不写目录,则回到用户的主目录(家目录)。
./ # 表示当前路径
../ # 上层路径
~ # 代表家目录
cd src #进去子目录
cd ~ # 进入家目录(用户主目录)
cd ~/Desktop # 跳到桌面目录
cd .. # 返回上一级目录
cd - # - 是上一次访问的目录,像“返回”按钮一样。
cd # 直接敲cd回到当前用户的家目录
# 绝对路径:从"根"/ 开始的路径是绝对路径
# 相对路径:只要不从"根"/开始的路径都是相对路径,从当前路径开始的路径
9. tree:显示目录的树状结构
常用操作:
# 1. 显示当前目录的树形结构
tree
# 2. 显示指定目录的树形结构
tree /path/to/directory
# 3. 限制层级深度(如最多显示两层)
tree -L 2
# 4. 显示文件大小
tree -h
# 5. 只显示目录(不显示文件)
tree -d
# 6. 输出结果到文件
tree > tree_output.txt
小总结:
- 显示树形结构: 用
tree快速展示目录结构。 - 限制深度: 用
-L控制层级,避免输出过长。 - 显示文件信息: 用
-h加上文件大小,-d只看目录。
tree 是快速查看和分享目录结构的好工具,让层次清晰直观!
显示系统根目录
tree -Ld 1 / # -L 表示显示的层数 -d 只显示目录
/ # “根”目录 所有文件目录都必须挂载在“根”目录上(root)
├── bin -> usr/bin # binary 二进制的程序,所有用户都可使用的程序,是/usr/bin的一个软链接
├── boot # 启动目录,存放系统内核,启动脚本
├── dev # device 设备,硬件设备的映射文件,加载硬件资源
*├── etc # 配置文件,系统配置文件,yum安装的服务的配置文件
├── home # 普通用户的家目录
├── lib -> usr/lib # library 程序依赖库,系统中程序共享的依赖库
├── lib64 -> usr/lib64 # 64位的library 程序共享文件库
├── media # 媒体文件,用于挂载光盘.U盘.移动硬盘
├── mnt # 挂载临时设备,用于挂载光盘.U盘.移动硬盘
├── opt # optional 可选的,安装的第三方程序。
├── proc # 虚拟文件系统,实时内核信息
├── root # 超级管理员的家目录
├── run # 临时文件系统,系统启动信息,程序运行的进程号,也是虚拟文件
├── sbin -> usr/sbin # 管理员才能用的命令
├── srv # 存放服务数据
├── sys # 虚拟的档案系统,存储硬件设备信息
├── tmp # 用于存放临时文件的目录,也可做临时共享文件
*├── usr # Unix System Resource 用户程序安装目录
*└── var # 动态数据存储,/var/log日志文件,/var/mail邮件数据,
10. clear:“屏幕太乱了,清清场。”
用法:clear
- 一键清空终端屏幕,重新开始。
- 快捷键: Ctrl + l
11. alias:取别名
“敲太长?给它改个短名字!”
用法:
alias 别名='实际命令'
alias -a # 查看所有生效的别名
比如:
alias ll=“ls -alF”
# 想要别名永久生效
vim ~/.bashrc
alias ls="ls -a color=auto"
source ~/.bashrc #重新加载让别名生效
以后输入 ll 就等于 ls -alF。
12. unalias:让所有的别名失效
unalias -a #取消所有别名
13. which:查找命令的真实路径
“找出命令的安装路径。”
用法:which 命令名
- 显示指定命令的绝对路径,告诉你系统中实际执行的是哪个命令。
比如:
which bash
# 输出: /usr/bin/bash
说明 bash 命令安装在 /usr/bin/bash 目录下。
14. env:获取系统环境变量
“想知道系统有哪些环境变量?用它!”
- PATH:可执行程序的所在路径
- PWD:当前目录的路径
- SHELL:当前使用的Shell名词
- HOME:当前用户的家目录
- LANG:当前系统使用的语言
# 查看所有环境变量
env
XDG_SESSION_ID=1
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.25.1 60609 22
OLDPWD=/root
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LAST_CMD=
OLD_PWD=/etc/yum.repos.d
LOGNAME=root
SSH_CONNECTION=192.168.25.1 60609 192.168.25.20 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=if [ -z "" ];then
export OLD_PWD=/etc/yum.repos.d;
fi;
if [ ! -z "" ] && [ "" != "" ]; then
logger -t root_shell_dir "[]";
fi;
export LAST_CMD="";
export OLD_PWD=/etc/yum.repos.d;
XDG_RUNTIME_DIR=/run/user/0
HISTTIMEFORMAT=[%Y-%m-%d %H:%M:%S] [root] [192.168.25.1]:
_=/usr/bin/env
15. export:修改系统的环境变量
“想添加或修改环境变量?用它!”
# 设置环境变量
export MY_VAR="Hello World"
# 验证变量是否设置成功
echo $MY_VAR
# 将目录添加到 PATH
export PATH=$PATH:/new/path
# 永久保存变量到 ~/.bashrc
echo "export MY_VAR='Hello World'" >> ~/.bashrc
浙公网安备 33010602011771号