主要介绍
-
shell:壳,命令解释器,负责解析用户输入的命令
-
man bash
man cd
man ls -
type 查看命令是file、alias还是builtin
-
内置命令 (shell内置)。
-
外置命令,在文件系统的某个目录下,有个与命令名称相同的文件。
-
-区别:shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多。
-t 仅列出命令执行时的依据
-a 列出当前命令可以如何执行
那命令怎么知道是那个路径下的命令呢?系统为了让用户在命令行快速方便地执行命令,用一种机制来实现,这种机制就叫做环境变量。
变量是什么?变量是命名的内存空间。
shell的变量功能
变量简单说就是让某一个代特定字符串表不固定的内容。
- 设置变量(变量名的规则:用“=”连接;等号两边不能有空格符;只能使用数字和字母,且不能用数字开头;):
myname=redhat(变量声明的过程就是申请内存使用的过程)
环境变量
定义当前用户工作环境属性的变量
PATH:从哪些路径中查找用户键入的命令字符串所对应的的命令文件:echo $PATH
取消变量:unset 变量名称
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
-
/bin/bash优点:
命令与文件补全功能
命令别名设置功能
命令记忆功能
通配符等等 -
history 命令历史
命令历史文件为~/.bash_history
命令 | 解释 |
---|---|
n | 列出目前最近的n条信息 |
-c | 清除命令历史 |
!! | 执行上一个命令 |
! | number 执行命令历史中第几条命令 |
- shell中的通配符:bash中常用的通配符有”*“,”?“,”[]“
命令 | 解释 |
---|---|
* | 表示匹配任意零个或多个字符 |
? | 表示匹配任意单一字符 |
[] | 匹配任何包含在方括号内的单字符 |
- shell中的引用:在bash中有很多特殊字符,这些特殊字符就具有特殊含义。引用就是通知shell将这些特殊字符当作普通字符来处理。
- 转义字符“\”:如果将\放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待。
mkdir 1*
ls -ld 1*
ll -d 1*
- 单引号:如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义被忽略。
ll -d 1’*’
- 双引号:双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍然有一些特殊字符保留自己的特殊含义,比如”$“和“\”以及“ ` ”
ll -d 1"*"
myname=redhat
echo “$myname”
echo “\$$myname”
echo "`date` "
文本编辑vim
- 命令模式:按esc键可回到命令模式
命令 | 解释 |
---|---|
dd | 删除当前行 |
dw | 按单词删除 |
u | 撤销当前操作 |
ctrl+r | 重做 |
yy | 复制光标所在行 |
2 yy | 复制光标所在行和光标下一行 |
p | 粘贴到光标下一行 |
cc | 剪切 |
行数cc | 剪切当前行开始的几行 |
x | 删除光标所在位置的内容 |
w,b | 按单词进行移动光标 |
gg | 跳转到文档首部行首 |
dgg | 删除光标至文档首部 |
G | 跳转到文档尾部行首 |
/字符串1 | 查找字符串1 |
$ | 行尾 |
^ | 行首 |
h | 往左按字符移动光标 |
j | 往下(后)按行移动光标 |
k | 往上(前)按行移动光标 |
l | 往右按字符移动光标 |
H | 跳转到当前屏幕输出的最上面一行 |
L | 跳转到当前屏幕输出的最下面一行 |
M | 跳转到当前屏幕输出的中间那一行 |
- 插入模式:
命令 | 解释 |
---|---|
i | 在光标前插入 |
I | 在光标所在行行首插入 |
a | 在光标后插入 |
A | 在光标所在行末尾插入 |
s | 删除光标所在位置字符并插入 |
S | 删除光标所在行并插入 |
o | 在光标所在行下一行插入 |
O | 在光标所在行上一行插入 |
- 末行模式:
命令 | 解释 |
---|---|
:wq | 保存退出 |
:q | 退出(未修改文件内容才可以退出) |
:wq! | 强制保存退出 |
:q! | 强制退出,不保存 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:行号 | 跳转到指定行号 |
:3,5 d | 删除3-5行 |
:r 文件名1 | 读出文件1的内容到当前文件里 |
:%s/字符串2/字符串3 | 字符串3替换字符串2 |
:%s/1/2/g | 将1替换为2,全局修改 |
:w 文件名1 | 另存为文件名1 |
文本查看命令
-
cat连接并显示文件内容到标准输出
显示文件内容并显示行号:cat -n 文件名 -
黑洞机制(shell脚本里面经常用)
将文件内容重定向到/dev/null:cat 文件 >/dev/null
不带任何选项时,从标准输入接收输出到标准输出 -
逆序显示文件:tac
-
从头开始逐行查看:more /var/log/messages
在没有翻到最后一屏时支持向前翻 -
前后查看文件内容:less /var/log/messages
man手册查看命令用法默认用less打开 -
默认查看文件前10行:head /etc/passwd
指定查看前5行:head -5 /etc/passwd -
默认查看后10行:tail /etc/passwd
查看后5行:tail -5 /etc/passwd
文本处理
- 文本切割显示:
cut -d 指定分隔符 -f 指定第几列 被切割文件
命令 | 解释 |
---|---|
cut -f 1,3 | 切割第一列和第三列 |
cut -f 1-3 | 切割第一列到第三列 |
cut -c 1-4 | 切割指定第一到第四个字符 |
指定分隔符的时候空格需要用单引号或双引号引起来
cut -d : -f 1-3 --output-delimiter=@ /etc/passwd
- 文本排序显示
命令 | 解释 |
---|---|
sort 文件名 | 排序显示(默认根据字符在ASCII码中的升序排序): |
sort -n 文件名 | 按照数值大小排序 |
sort -u 文件名 | 排序并去掉重复的 |
sort -r 文件名 | 逆序排序 |
sort -t 指定分隔符 -k 指定第几列 -n /etc/passwd | 按照用户uid数字大小排序显示: |
sort -f 文件名 | 排序时忽略字符大小写 |
sort uniq 文件名 | 去掉重复的行,重复的行必须相邻 |
sort -d 文件名 | 只显示重复的行 |
sort -D 文件名 | 显示所有重复的行 |
sort -c 文件名 | 显示重复行重复的次数 |
- 文本统计
wc——word count
- 在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节
命令 | 解释 |
---|---|
wc 文件名 | 显示文件行数、单词数、字节数和文件名 |
wc -w 文件名 | 只显示单词数 |
wc -c 文件名 | 只显示字节数 |
wc -l 文件名 | 只显示行数 |
wc -m 文件名 | 只显示字符数 |
wc -L 文件名 | 显示最长的一行的字符数 |
- 统计当前目录下的文件数:
ls -l | wc -l
ls | wc -l
4.文本过滤
- grep可以根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容
命令 | 解释 |
---|---|
grep h 文件名 | 查找文件里有字符h的字符串: |
grep -w 单词 文件名 | 匹配整个单词: |
grep ^ [ q ] 文件名 | 匹配以q开始的行: |
grep q$ 文件名 | 匹配以q结束的行: |
grep ^ [0-9] 文件名 | 匹配以数字开头的行: |
grep ^ [qf] 文件名 | 匹配以q或者f开头的行: |
grep “^#” | 匹配以#号开头的行: |
grep “^$” | 过滤空白行: |
grep -r h ./* | 如果要明确搜索子目录: |
grep -d skip h ./* | 忽略子目录: |
grep -i | 搜索时忽略大小写: |
grep -v | 搜索时显示没有匹配到的行: |
grep -A 2 | 搜索时显示匹配到的那一行以及下2行: |
grep -B 2 | 搜索时显示匹配到的那一行以及上2行: |
grep -C 2 | 搜索时显示匹配到的那一行以及上下2行 |
- 管道符|:管道符左边命令的输出作为管道符右边命令的输入。
- tee命令:在输出到文件的同时输出到屏幕,既想把输出保存到文件中,又想在屏幕上看到输出内容。
- 文件搜索:
- 查找文件路径:
find 路径 -name 文件名:find / -name passwd