Linux Shell 基础知识


说明


此博文为《跟阿铭学Linux》的读书笔记

(部分)基本命令

  • history

shell builtin CMD

查看当前用户的历史命令, 用户登出系统后上次登入系统所进行的操作会被写入 ~/.bash_history 文件中, 写入数量与 HISTSIZE 和 HISTFILESIZE 有关

  • alias & unalias

shell builtin CMD

定义/取消命令别名, 用法为 alias [-p] [name[=value] ...]unalias [-a] [name ...]

alias 或者 alias -p 都是打印当前环境下设置的命令别名

alias name=value [...] 用来定义一个或多个命令别名, 注意带空格的命令使用 单引号 或者 双引号 包裹, 不要使用 反引号 来定义!!!

unalias 用来取消命令别名, -a 参数可以取消所有别名

注意: -a 会把配置文件中预设的别名一并取消, 当然这是暂时的, 下次配置文件载入时还会重新生效

  • jobs & bg & fg

shell builtin CMD

作业控制命令

对于持续执行的命令, 使用 Ctrl + Z 可以将它暂停, 此时使用 jobs [jobspec] 可以查看所有/某条 job

jobspec 为 jobs 命令显示的第一列中的数字, 在 jobs/bg/fg 命令使用时可以使用 n 或者 %n 来表示, jobspec 前面的 +/- 中的 + 表示默认操作任务

fg [jobspec] 将默认/某条 job 调至前台执行, bg [jobspec] 将默认/某条 job 放至后台执行

在其它不仅仅针对 jobs 进行操作的命令中, 比如 kill 中, 要对 job 进行操作, 必须使用 %n

  • env

env 可以列出预设的全部系统变量, 比如 HOSTNAME/SHELL/HISTSIZE/MAIL/PATH/PWD etc.

  • set

shell builtin CMD

set 列出的除了 env 包含的信息外, 还会打印用户自定义的信息, 比如一些 alias

  • split

用来切割文档, 用法为 split [OPTION]... [INPUT [PREFIX]]

OPTION

-b, --byte=SIZE

指定每个分割档的字节数

-l, --lines=NUMBER

指定每个分割档的行数

–additional-suffix=SUFFIX

指定后缀

INPUT

不指定或者使用 ‘-’ , 则读取 STDIN

PREFIX

分割后的文件名为 PREFIXaa, PREFIXab …

如果不指定PREFIX, 那么默认使用 ‘x’

  • tr

用来对字符进行替换或删除, 用法为 tr [OPTION]... SET1 [SET2]

OPTION

-d, --delete

删除 SET1

它会将 SET1 完全删除, 区分大小写, SET1 可以包含多个字符

只能接收 SET1 , 无法加 SET2 参数

-s, --squeeze-repeats

字符去重

把 SET1 中的每个字符进行压缩, 即多个重复字符压缩为 1 个

可以接 SET2 , 接 SET2 的话会压缩完之后进行替换操作

SET2 的长度随意, 但是仅有不长于 SET1 部分会生效

SET1 和 SET2 的匹配规则是相同位置的字符做替换, 若 SET2 中缺失则以 SET2 最后一个字符为准

  • tee

类似重定向 ‘>’ , 但它重定向的同时, 还会进行 STDOUT , 用法为 tee [OPTION]... [FILE]...

tee 可以不接任何参数, 但是这么做没有任何意义

可以接 ‘-’ , 这样会在屏幕打印两次 STDOUT

OPTION

一般使用时不带参数

-a, --append

向文件附加, 而不是覆盖写入

-i, --ignore-interrupts

忽略中断信号

  • sort

排序文件, 用法为 sort [OPTION]... [FILE]... 或者 sort [OPTION]... --files0-from=F

OPTION

-t, --field-separator=SEP

指定分隔符, 命令默认使用的是空白作为分隔

-u, --unique

去重

MAN PAGE 里提及它与 -c 连用是 check for strict ordering

我又看了下 -c , 它是用来检查哪一行开始乱序的

目前试验结果表示 -uc 和 -c 输出没啥差别

-n, --numeric-sort

数字排序

把字符也当做数字来比较, 不同的 LANG 下可能排序结果会不同

比如 LANG=C 时, 数字字母排序为 0 1 2 3 4 … A B C D … Z a b c d … z

LANG=zh_CN 时, 排序为 0 1 2 3 4 … a A b B … z Z

-r, --reverse

反向排序

默认是小到大, 使用后大到小

-k, --key=KEYDEF

指定比较列, -k3,5 表示第三列到第五列顺序比较

注意这是连续的一个范围, 而不是比较第三和第五列

个人理解: 如果需要不连续的几个列作比较, 使用 -kn1 -kn2 …

–files0-from=F

这个应该是从文件读取所需排序的文件列表

  • wc

字符统计, 用法为 wc [OPTION]... [FILE]... 或者 wc [OPTION]... --files0-from=F

OPTION

-c, --bytes

统计字节数

-l, --lines

统计行数

-w, --words

统计单词数

-m, --chars

统计字符数

  • uniq

删除重复行, 用法为 uniq [OPTION]... [INPUT [OUTPUT]]

它更多时候与 sort 配合使用

OPTION

-c, --count

同时输出重复行的重复次数

  • cut

从输入中截取部分字段, 用法为 cut OPTION... [FILE]...

OPTION

-d, --delimiter=DELIM

指定分隔符, 默认以 TAB 为分隔

可以使用 ‘DELIM’ 方式来指定, 正常情况下不加也是可以的, 单引号/双引号用来指定如 空格 等特殊的空格符

-c, --characters=LIST

选出指定字符

-f, --fields=LIST

选出指定列

LIST

一个或多个范围

形如 1, 3-5, 7, 10

即 N, N-, N-M, -M 几种表示方式, 用 ‘,’ 将它们关联

(部分)特殊字符

  • !!

执行上条命令

  • !n

执行第n条历史命令

  • !COMMAND_PART

执行最近一条头部匹配 COMMAND_PART 的命令

  • * 和 ?

通配符, ‘*’ 匹配零个或任意多个字符, ‘?’ 匹配一个字符

  • >、>>、<

输出/输入重定向, 这个在之前的博文中有详细说过

  • |

管道符, 用来将前道命令的 STDOUT 作为后道命令的 STDIN

  • $

变量引用符

$$ 表示当前 shell 的 pid

$? 表示上一条命令执行的返回值, 若正常执行一般是 0

  • \

转义符

注释符

  • ;、&&、||

命令连接符

  • []

表示字符范围, 比如 [0-9] 表示 0~9 十个数字中的任意一个

  • ~

表示用户家目录

  • &

后台执行符

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值