专栏名称: Linux就该这么学
专注于Linux运维技术培训,让您学习的每节课都有所收获,订阅本号后可每天获得最新Linux运维行业资讯、最实用的Linux免费教程以及独家Linux考证资料,三十多万技术小伙伴的选择,Linux就该这么学!
目录
相关文章推荐
Linux就该这么学  ·  Fedora 42 获准发布 WSL ... ·  9 小时前  
Linux就该这么学  ·  为什么 it 外包永远在招人? ·  昨天  
Linux就该这么学  ·  Bind DNS 服务——DNS 正向解析 ·  2 天前  
Linux就该这么学  ·  干运维,这 16 个数据你得张口就来? ·  2 天前  
Linux就该这么学  ·  B站程序员在前端代码中 “ 投毒 ” ... ·  2 天前  
51好读  ›  专栏  ›  Linux就该这么学

一位 10 年运维老兵的 Linux 命令武器库

Linux就该这么学  · 公众号  · linux  · 2025-01-25 08:02

正文

链接:https://www.cnblogs.com/maseus/p/17122690.html

重定向

标准输入stdin: 代码为0, 使用< 或<<
标准输出stdout: 代码为1, 使用>或>>
标准错误输出stderr: 代码为2, 使用2>或2>>
特殊写法:将stdout和stderr同时写入一个文件,使用2>&1

# 将ll的结果重定向到out.txt文件中,如果文件中有内容则覆盖
ll /home > out.txt

# 将ll的结果追加到out.txt文件中
ll /etc >> out.txt

# stdout和stderr写入同一个文件
find /home -name .bashrc > out.txt 2>&1 # 注意2>&1写在最后
find /home -name .bashrc &> out.txt # 或者使用&>

管道

使用command A | command B | command C命令,将A命令产生的标准输出作为B命令的标准输入(注意只能接收前一个命令的标准输出)。
每个管道后必须接指令,且指令必须可以接收stdin才可以。如less, more, head, tail 都可以,ls, cp, mv 则不行。
如果要接收前一个命令的stdout,则需要使用
2>&1将stdout转换为stdin。

tee命令

tee [OPTION]... [FILE]...
将stdin读取,写入stdout和file。
结合上面的管道,:

# 将ll结果同时显示在屏幕和记录到文件中
ll /home | tee list_home.out

# 将find结果(正常和错误)同时显示在屏幕和记录到文件中
find /home -name .bashrc 2>&1 | tee find.out

xargs命令

xargs [options] [command [initial-arguments]]
xargs读取stdin,以空格或换行作为分隔符,将stdin分割为参数。

# 将find的结果作为参数,传给ls -lh命令
find /usr/sbin -perm /7000 | xargs ls -lh

# 将find结果作为参数,传给du命令
find /home -name "*.go" | xargs du -cb

文本处理 - vim, grep, awk, sed, sort, wc, uniq, cut, tr

grep

grep [OPTION...] PATTERNS [FILE...]
从文本中查找符合某个模式的文本。

# 查找list.out中包含rvs字符的行
[leadcom@localhost test]$ grep rvs list.out
drwx------ 4 rvs rvs 127 1216 18:41 rvs
drwxrwxrwx 16 root root 285 84 10:03 rvslocal
drwxrwxrwx 2 root root 6 510 2021 rvsremote

# 结合管道查找前一个命令中包含某个字符的行
ps -ef | grep postgres

cut

cut OPTION... [FILE]...
根据option将文件中的每行做处理,输出到到标准输出。
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

# 以:为分割符,取第一个元素
gw1@gw1-PC:~$ echo $PATH
/home/gw1/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin
gw1@gw1-PC:~$ echo $PATH | cut -d ":" -f 1
/home/gw1/.local/bin

gw1@gw1-PC:~$ export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x DISPLAY="localhost:10.0"
declare -x HOME="/home/gw1"
declare -x LANG="zh_CN.UTF-8"
declare -x LANGUAGE="zh_CN"
declare -x LOGNAME="gw1"
...

# 只取export每行的declare -x之后内容,即第12个字符后内容
gw1@gw1-PC:~$ export | cut -c 12-
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
DISPLAY="localhost:10.0"
HOME="/home/gw1"
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN"
LOGNAME="gw1"
...

awk

gawk [ POSIX or GNU style options ] -f program-file [ -- ] file ...
gawk [ POSIX or GNU style options ] [ -- ] program-text file ...
  • 用法一

    awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号
    # 每行按空格或TAB分割,输出文本中的1、4项
    [leadcom@localhost test]$ cat log.txt
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange,apple,mongo

    [leadcom@localhost test]$ awk '
    {print $1,$4}' log.txt
    2 a
    3 like
    This'
    s
    10 orange,apple,mongo
  • 用法二 awk -F #-F相当于内置变量FS, 指定分割字符

    [leadcom@localhost test]$ awk -F, '{print $1,$4}' log.txt
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange

sed

sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed [-hnV][-e

tr

tr [OPTION]... SET1 [SET2]
Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

gw1@gw1-PC:~$ cat testfile
It uses a mix of theory and practicl techniques to
teach administrators how to install and
use security applications, as well as how the
applcations work and why they are necesary.

# 将小写转换为大写
gw1@gw1-PC:~$ cat testfile | tr a-z A-Z
IT USES A MIX OF THEORY AND PRACTICL TECHNIQUES TO
TEACH ADMINISTRATORS HOW TO INSTALL AND
USE SECURITY APPLICATIONS, AS WELL AS HOW THE
APPLCATIONS WORK AND WHY THEY ARE NECESARY.
gw1@gw1-PC:~$


END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:2636170

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


推荐文章
Linux就该这么学  ·  为什么 it 外包永远在招人?
昨天
Linux就该这么学  ·  Bind DNS 服务——DNS 正向解析
2 天前
Linux就该这么学  ·  干运维,这 16 个数据你得张口就来?
2 天前
数据分析与开发  ·  通过机器学习来自动调优 DBMS
7 年前
超级数学建模  ·  优秀的学者朋友,都订阅了这个公众号!
7 年前