Shell命令
Flag
Shell
是一个用C
语言编写的程序,它是用户使用Linux
的桥梁。文字操作系统与外部最主要的接口就叫做Shell
。Shell
是操作系统最外面的一层。
Shell
管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
命令替代品
- https://github.com/ibraheemdev/modern-unix
- https://github.com/vastutsav/command-line-quick-reference
- https://github.com/onetrueawk/awk
- https://github.com/Equationzhao/g
- https://github.com/junegunn/fzf
- https://github.com/ajeetdsouza/zoxide
- 历史记录 https://github.com/ddworken/hishtory
- https://github.com/YiNNx/cmd-wrapped
- kill https://github.com/jkfran/killport
- ack https://github.com/ggreer/the_silver_searcher
- 终端图像查看 https://github.com/stefanhaustein/TerminalImageViewer
- 地图 https://github.com/rastapasta/mapscii
- 电子表格 https://github.com/saulpw/visidata
- 逆向工程 https://github.com/radareorg/radare2
- 查看日志文件 https://github.com/bensadeh/tailspin
- https://github.com/Textualize/toolong
- cat https://github.com/swsnr/mdcat
- 文件管理 https://github.com/sxyazi/yazi
- SCP https://github.com/lengyijun/smartscp
- CP https://github.com/tarka/xcp
- 加密 https://github.com/candiddev/rot
- JSON https://github.com/stedolan/jq
- https://github.com/simeji/jid
- https://github.com/wader/fq
- https://github.com/ynqa/jnv
- HTML https://github.com/ericchiang/pup
运行程序
- Linux下执行一个可执行的文件,不需要命令,直接写文件路径,会自动执行
- 执行当前目录下的文件:./文件名
- 直接用绝对路径:/hone/文件名
查看邮箱
cat /var/spool/mail/root
清除屏幕输出
clear
命令、reset
命令(可修正光标位置)或Ctrl + L组合快捷键,并不是真正的清空屏幕,当用鼠标向上滚时,你仍然能看到之前的命令操作留下来的输出
printf "\033c"
或printf "\ec"
真正的清空了终端屏幕,它的功能跟DOS
里CMD.EXE
提供的CLS
效果很相似。
\033 == \x1B == 27 == ESC
,于是,这个命令变成了<ESC>c
,它是VT-XXX中表示Full Reset (RIS)
的转义码。
现今我们使用的所有的终端都是VT兼容的,但如果你发现自己使用的是一个非常奇怪的终端,那这个命令你可能用不了。printf
是bash
里内置的命令,内置命令的优先级比其它可执行文件要高。
过滤结果
ls -l | grep test | awk '{print $5}' | sed -n '2p'
grep
文本过滤命令,包含test的文件
由正则表达式或者字符及基本文本字符所编写的过滤条件
参数 | 说明 |
---|---|
-a --text | 不要忽略二进制数据。 |
-A <显示行数> --after-context=<显示行数> | 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 |
-b --byte-offset | 在显示符合范本样式的那一行之外,并显示该行之前的内容。 |
-B<显示行数> --before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
-c --count | 计算符合范本样式的列数。 |
-C<显示行数> --context=<显示行数>或-<显示行数> | 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 |
-d<进行动作> --directories=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 |
-e<范本样式> --regexp=<范本样式> | 指定字符串作为查找文件内容的范本样式。 |
-E --extended-regexp | 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 |
-f<范本文件> --file=<规则文件> | 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 |
-F --fixed-regexp | 将范本样式视为固定字符串的列表。 |
-G --basic-regexp | 将范本样式视为普通的表示法来使用。 |
-h --no-filename | 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 |
-H --with-filename | 在显示符合范本样式的那一列之前,标示该列的文件名称。 |
-i --ignore-case | 忽略字符大小写的差别。 |
-l --file-with-matches | 列出文件内容符合指定的范本样式的文件名称。 |
-L --files-without-match | 列出文件内容不符合指定的范本样式的文件名称。 |
-n --line-number | 在显示符合范本样式的那一列之前,标示出该列的编号。 |
-P --perl-regexp | PATTERN 是一个 Perl 正则表达式 |
-q --quiet或–silent | 不显示任何信息。 |
-R/-r --recursive | 此参数的效果和指定“-d recurse”参数相同。 |
-s --no-messages | 不显示错误信息。 |
-v --revert-match | 反转查找。 |
-V --version | 显示版本信息。 |
-w --word-regexp | 只显示全字符合的列。 |
-x --line-regexp | 只显示全列符合的列。 |
-y | 此参数效果跟“-i”相同。 |
-o | 只输出文件中匹配到的部分。 |
-m 数量 --max-count=数量 | 找到num行结果后停止查找,用来限制匹配行数 |
awk
文本处理命令,print
后面是你要获取第几列sed
行编辑器,-n
是指定第几行。p
显示d
删除a
添加c
替换w
写入i
插入
cut
命令用于显示每行从开头算起num1到num2的文字-b
:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了-n
标志。-c
:以字符为单位进行分割。-d
:自定义分隔符,默认为制表符。-f
:与-d一起使用,指定显示哪个区域。-n
:取消分割多字节字符。仅和 -b 标志一起使用。- 如果字符的最后一个字节落在由
-b
标志的List参数指示的范围之内,该字符将被写出;否则,该字符将被排除
ll | cut -c1-10
截取末尾字符串
echo "1:3:5" | awk -F ":" '{print $NF}'
echo "1:3:5" | sed 's/.*:\([^:]*\)$/\1/'
echo "1:3:5" | cut -d : -f 3
过滤多个结果
# grep -A n 可以显示匹配内容以及后面的n行内容
# grep -B n 可以显示匹配内容以及前面的n行内容
# grep -C n 可以显示匹配内容以及前后面的n行内容
ls -l | grep "postfix\|dovecot"
# 或者
ls -l | grep -e postfix -e dovecot
# 或者
ls -l | grep -E "postfix|dovecot"
# 或者
ls -l | egrep "postfix|dovecot"
# 或者
ls -l | awk "/postfix|dovecot/"
定时任务
crontab
命令常用于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令
# 编辑crontab文件
crontab -e
在linux中执行shell脚本可以用相对路径找到文件,但是如果通过计划任务
crontab
执行shell脚本时,却不能通过相对路径找到文件!
进制转换
# 转换为16进制,大写转换为小写。
echo "obase=16; 值" | bc
# 转换为16进制,\n换行
printf "%x\n" 值
进程与线程
查看进程启动路径
ps -aux | grep nginx
# 每个进程启动之后在 /proc下面有一个于pid对应的路径
ls -l /proc/PID
ps -A | grep "nginx" | awk '{print "/proc/"$1"/exe"}' | xargs ls -l
查看系统进程和线程限制
- 查看系统允许的最大线程数
ulimit -a | grep processes
ulimit -u
- 系统支持的最大线程数
操作系统线程ID的最大值
cat /proc/sys/kernel/pid_max
- 内核支持的最大线程数
sysctl kernel.pid_max
修改值(临时):
sysctl -w kernel.pid_max=值
修改值(永久):
echo 'kernel.pid_max=值' >>/etc/sysctl.conf
- 单个进程可创建的线程数