系统管理命令 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(只显示类型)等。
  • 命令名:要查询的命令(如 lscdtype 本身)。

核心功能

type 命令主要用于解决以下问题:

1.判断命令类型: 确定一个命令是 内置命令(shell 自带的)、外部命令(系统中的可执行文件)、别名 还是 函数

2.查找命令位置: 对于外部命令,显示其在文件系统中的路径(类似 which 命令)。

常见输出类型

type 命令的输出可能有以下几种:

  • builtin:shell 内置命令(如 cdechotype 本身)。
  • file:外部可执行文件(如 /bin/ls/usr/bin/git)。
  • alias:用户定义的别名(如 ll='ls -l')。
  • function:shell 函数(通常在配置文件中定义)。
  • keyword:shell 关键字(如 iffor)。

示例

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:显示目录中的内容

用法:lsls [选项] [目录名]

  • “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
posted @ 2025-07-07 16:12  落无一  阅读(19)  评论(0)    收藏  举报