初识shell

shell是系统的用户界面 ,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送 入内核去执行。实际上shell是一个命令解释器,它解释用户输入的命令并且把用户的意图传达给内核。 (可以理解为用户与内核之间的翻译官角色)
初识shell
我们可以使用shell实现对Linux系统单的大部分管理,例如:文件管理、用户管理、权限管理、磁盘管理、软件管理、网络管理……
使用shell的两种方式 :
输入命令:效率低,适合少量的工作
shell script:效率高,适合完成复杂,重复性工作

bash shell提示符

[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]# date
2025年 08月 21日 星期三 11:34:43 CST
[root@localhost ~]# whoami
root
[root@localhost ~]# useradd aaron
[root@localhost ~]# passwd aaron
更改用户 aaron 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

shell 语法

命令 选项 参数
命令:整条shell命令的主体
选项:会影响会微调命令的行为,通常以-或者--开头
参数:命令作用的对象(长参数、短参数)

[root@localhost ~]# ls
[root@localhost ~]# ls -a
[root@localhost ~]# ls -a /home

bash基本特性

自动补全

[root@localhost ~]# yum install -y bash-completion         #安装自动补全工具
[root@localhost ~]# ls /etc/sysconfig/network-scripts/
[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart crond.service
[root@localhost ~]# date -s 12:30

快捷键

快捷键 作用
^C 终止前台运行的程序
^D 退出 等价exit
^L 清屏
^A 光标移动到命令行的最前端
^E 光标移动到命令行的后端
^U 删除光标前所有字符
^K 删除光标后所有字符
^R 搜索历史命令,利用关键词
Alt+. 引用上一个命令的最后一个参数,等价于!$
ESC. 引用上一个命令的最后一个参数,等价于!$
[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat [ESC.]

历史命令

[root@localhost ~]# history

查看命令历史:history
命令历史文件:~/.bash_history
登录shell时会读取命令历史文件,并将后续操作命令添加到历史配置文件中(有时间延迟,-a立即添加)
‐ a:追加本次会话执行的命令历史列表至历史文件中
‐ d:删除历史中指定的命令
‐ c:清空历史命令

  1. 光标上下键 :切换上(下)一条命令
  2. ^R :搜索历史命令(输入一段某条命令的关键字:必须是连续的)
  3. !220:执行历史命令中第220条命令
  4. !字符串:搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
  5. !$:引用上一个命令的最后一个参数 ,当上一个命令没有参数的时候,!$代表的是上一个命令本身
[root@localhost ~]# ls /root/home
[root@localhost ~]# cd !$
[root@localhost ~]# ls /root/home
ls: 无法访问/root/home: 没有那个文件或目录
[root@localhost ~]# mkdir !$
mkdir /root/home
[root@localhost ~]# touch !$/file1
touch /root/home/file1
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# ls
anaconda-ks.cfg home
[root@localhost ~]# date
2019年 08月 21日 星期三 12:16:23 CST
[root@localhost ~]# !sy
systemctl restart crond

命令别名

[root@localhost ~]# alias wl=‘cat /etc/sysconfig/network-scripts/ifcfg-ens33‘
# 建立别名(临时的,仅在当前shell生效)
[root@localhost ~]# wl
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="1864a917-1e72-452d-a4c8-0c0d7e6757b0"
DEVICE="ens33"
ONBOOT="yes"
[root@xwz ~]# unalias wl
# 取消wl这个别名
[root@localhost ~]# alias # 查看系统当前的别名
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --showtilde‘
[root@localhost ~]# ll
总用量 4
-rw-------. 1 root root 1241 8月 22 2018 anaconda-ks.cfg
drwxr-xr-x. 2 root root 19 8月 21 12:15 home
[root@localhost ~]# type -a ls # 查看命令类型
ls 是 `ls --color=auto‘ 的别名
ls 是 /usr/bin/ls
[root@localhost ~]# /bin/ls
anaconda-ks.cfg home
[root@localhost ~]# ls # 别名优先
anaconda-ks.cfg home
[root@localhost ~]# \ls # 跳过别名
anaconda-ks.cfg home
[root@localhost ~]# cp -rf /etc /tmp # 第一次
[root@localhost ~]# cp -rf /etc /tmp # 第二次
cp:是否覆盖"/tmp/etc/fstab"?
[root@localhost ~]# \cp -rf /etc /tmp

永久别名

[root@localhost ~]# vi /etc/bashrc # 添加如下行
alias wl=‘cat /etc/sysconfig/network-scripts/ifcfg-ens33‘

Linux获得帮助

命令 --help

[root@localhost ~]# ls --help
# 用法:ls [选项] ... [文件] ...

ls常见选项

命令 作用
-a all,查看目录下的所有文件,包括隐藏文件
-l 长列表显示
-h human以人性化方式显示出来
-d 只列出目录名,不列出其他内容
-t 按修改时间排序
-S 按文件的Size排除
-r 逆序排列reverse
-l 显示文件的inode号(索引号)
[root@localhost ~]# date --help
[root@localhost ~]# date
[root@localhost ~]# date +%H
[root@localhost ~]# date +%F
[root@localhost ~]# date 0214232131
[root@localhost ~]# date 0214232131.00

man手册名

(针对命令帮助,针对配置文件帮助,针对函数帮助)
中文man手册

yum -y install man-pages-zh-CN.noarch
echo "alias cman=‘man -M /usr/share/man/zh_CN‘" >> .bashrc
source .bashrc
序 号 英文 中文
1* Executable programs or shell commands 可执行程序或shell命令
2 System calls (functions provided by the kernel) 系统调用
3 Library calls (functions within program libraries) 库调用
4 Special files (usually found in /dev) 特殊文件
5* File formats and conventions eg /etc/passwd 文件格式和约定
6 Games 游戏
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 杂项(包括宏和惯例)
8* System administration commands (usually only for root) 系统管理命令(通常仅适用 于root用户)
9 Kernel routines [Non standard] 内核例程(非标准)

命令帮助:章节1,章节8
函数帮助:章节2,章节3
文件格式:章节5
一般情况下不需要使用章节号

[root@localhost ~]# man ls
[root@localhost ~]# man man
[root@localhost ~]# man useradd
[root@localhost ~]# man setfacl /EXAMPLES

技巧1:按章节查询

[root@localhost ~]# /usr/bin/passwd # 修改用户口令命令
[root@localhost ~]# /etc/passwd # 包含用户信息的配置文件
[root@localhost ~]# man -f passwd
sslpasswd (1ssl) - compute password hashes
passwd (1) - update user‘s authentication tokens
[root@localhost ~]# man 1 passwd
[root@localhost ~]# man 5 passwd

技巧2:在所有章节中查询

[root@localhost ~]# man -a passwd

初识shell

上一篇:第14章:Linux实操篇 进程管理


下一篇:MacBook Pro年份型号规格明细