提升你的命令行技能:Bash 和 Linux 符号与命令的完整指南
在本指南中,我们将探索Linux和Bash符号与命令的广阔世界。从文件系统导航到文本处理、网络、系统管理等,我们将涵盖各种主题,并提供每个命令的实际示例。无论你是经验丰富的Linux用户还是刚刚入门,本指南都能帮助你提升命令行技能,在日常工作中变得更加高效。所以打开你的终端,让我们开始吧!
重定向
Bash 最基本但最强大的功能之一是能够重定向命令的输入和输出。以下是一些可用于重定向的符号:
>
:将命令的输出重定向到文件,如果文件已存在则覆盖其内容。例如,ls > linuxmi.txt
将命令的输出写入ls
名为linuxmi.txt
.>>
:将命令的输出重定向到文件,如果文件已存在,则将其附加到文件末尾。例如,echo "Hello, world!www.linuxmi.com" >> linuxmi.txt
将附加字符串“Hello, world!www.linuxmi.com” 到文件末尾。<
:将命令的输入从键盘改为从文件中获取。例如,sort < linuxmi.txt
将对linuxmi.txt
的内容进行排序。2>
:用于将命令的错误输出重定向到文件。2>>
:用于将命令的错误输出附加到文件。&>
:用于将命令的输出和错误输出都重定向到文件。&>>
:用于将命令的输出和错误输出附加到文件。
管道
- 管道允许您将多个命令链接在一起,以便一个命令的输出成为另一个命令的输入。管道的符号是
|
。以下是一个例子:
ls -l | grep "linuxmi"
此命令以长格式 ( ) 列出当前目录的内容ls -l
,然后将输出传递给grep
命令,命令在输出中搜索字符串“linuxmi”。
tee
:用于拆分命令的输出并将其发送到文件和标准输出。
通配符和通配符
Bash 支持称为通配符的强大功能,它允许您使用通配符来匹配文件名模式。以下是 globbing 中最常用的一些符号:
*
: 匹配文件名中任意数量的字符。例如,ls *.txt
将列出当前目录中所有以.txt
.?
: 匹配文件名中的任何单个字符。例如,ls file?.txt
将列出当前目录中所有以 开头file
且后面只有一个字符的文件,后跟.txt
.[ ]
: 匹配一组字符中的任何一个。例如,ls file[123].txt
将列出当前目录中以、或开头file
和结尾的所有文件,后跟.1
2
3
.txt
常用表达
grep
:用于在文件或流中搜索模式。sed
:用于对文件或流执行文本转换。awk
:用于图形扫描和处理。egrep
:用于扩展的正则表达式。fgrep
:用于固定字符串正则表达式。regex
:使用特殊字符和运算符指定文本模式的符号。
相关:
变量扩展和环境变量
$
:用于引用变量的值。export
:用于在 Bash 中创建或修改环境变量。${}
:用于进行变量扩展。$(())
:用于进行算术展开。env
:用于显示当前环境变量。echo
:用于显示环境变量的文本或值。
通配符和通配符
*
: 匹配文件名中任意数量的字符。?
: 匹配文件名中的任何单个字符。
否定
!
:与其他命令结合使用,执行取反。
算术运算
+
:算术表达式中的加法运算符。例如,echo $((2+3))
将输出5
.-
:算术表达式中的减法运算符。例如,echo $((16-5))
将输出11
.*
:算术表达式中的乘法运算符。例如,echo $((4*5))
将输出20
./
: 算术表达式中的除法运算符。例如,echo $((20/2))
将输出10
.$((expression))
:用于在 Bash 中执行算术运算。例如,echo $((2 + 6))
将打印值 8。expr
:用于执行算术运算。
比较
==
:用于比较条件表达式中两个值是否相等。例如,if [ "$name" == "linuxmi" ]; then echo "Hello, linuxmi!"; fi
将输出“Hello, linuxmi!
” 如果变量的name
值为“linuxmi”。!=
:用于比较条件表达式中的两个值是否不相等。例如,if [ "$name" != "linuxmi" ]; then echo "You're not linuxmi!"; fi
将在变量name
的值不为“John”输出“You’re not linuxmi!”。
条件执行
- &&:用于仅在前一个命令成功执行时执行后续命令。例如,command1 && command2 会仅在 command1 成功执行后才执行command2。
- ||:用于仅在前一个命令失败时执行后续命令。例如,command1 || command2会仅在 command1 失败后才执行 command2。
条件语句
if
:用于检查条件是否为真并相应地执行命令。例如,if [[ $foo == "bar" ]]; then echo "foo is bar"; fi
将检查变量是否foo
等于“bar”,如果为真则打印“foo is bar”。elif
if
:如果语句中的先前条件为假,则用于检查其他条件。例如,if [[ $foo == "bar" ]]; then echo "foo is bar"; elif [[ $foo == "baz" ]]; then echo "foo is baz"; else echo "foo is something else"; fi
将检查是否foo
等于“bar”并在为真时打印“foo is bar”,否则检查是否foo
等于“baz”并在为真时打印“foo is baz”,最后打印“foo is something else”如果前面两个条件都为假。[[ ]]
:用于在 Bash 中执行条件测试。case
:用于将变量与模式列表进行匹配并相应地执行命令。例如,
case $fruit in
apple)
echo "It's an apple"
;;
banana)
echo "It's a banana"
;;
*)
echo "It's something else"
;;
esac
将检查变量的值fruit
,如果等于“apple”则打印“It’s an apple”,如果等于“banana”则打印“It’s a banana”,对于任何其他值则打印“It’s something else”。
循环
for
: 用于创建一个遍历项目列表的循环。例如,for fruit in apple banana orange; do echo $fruit; done
将在不同的行中输出“apple”、“banana”和“orange”。while
:用于创建一个循环,只要条件为真,该循环就会继续执行命令。例如,while true; do echo "Hello"; sleep 1; done
会重复输出“Hello”,直到脚本被中断。until
:用于执行命令,直到条件为真。
函数
function
:用于在 Bash 中定义一个函数。例如,function hello { echo "Hello, $1!"; }
定义一个名为hello
的函数,它接受一个参数并打印“Hello,”后跟参数。$1
,$2
, 等:用于指代传递给函数的第一个、第二个、第三个等参数。例如,在上面定义的函数中hello
,$1
指的是传递给函数的第一个参数。
数组
[]
:用于在 Bash 中定义一个数组。例如,my_array=(apple banana orange)
定义一个名为my_array
“apple”、“banana”和“orange”的数组。${array[@]}
:用于引用 Bash 中数组中的所有元素。例如,echo ${my_array[@]}
将在一行中输出“apple banana orange”。
过程控制和管理
&
:用于在后台运行命令。ctrl-c
:用于终止正在运行的命令。ctrl-z
:用于暂停正在运行的命令。ps
:用于显示有关正在运行的进程的信息。kill
:用于终止正在运行的进程。nohup
:用于在后台运行命令,即使终端已关闭。nice
:用于设置进程的优先级。renice
:用于修改已经运行的进程的优先级。
文件系统操作
cp
:用于复制文件。mv
:用于移动或重命名文件。rm
:用于删除文件。mkdir
:用于创建目录。rmdir
:用于删除目录。ln
:用于创建文件或目录之间的链接。
文件和文本操作
head
: 用于显示文件的前几行。tail
:用于显示文件的最后几行。sort
:用于按字母或数字对文本行进行排序。uniq
:用于删除重复的文本行。cut
:用于从文本行中提取特定的列或字段。paste
:用于合并来自多个文件的行。
权限
chmod
:用于更改文件和目录的权限。chown
:用于更改文件或目录的所有者。chgrp
:用于更改文件或目录的组。umask
:用于设置新建文件和目录的默认权限。
字符串操作、搜索和比较
cut
:用于从文件或流中提取特定列。tr
:用于翻译或删除字符。sort
:用于对文本行进行排序。uniq
:用于从文件或流中删除重复行。grep
:用于在文件或流中搜索模式。sed
:用于对文件或流执行文本转换。awk
:用于图形扫描和处理。diff
: 用于逐行比较两个文件。cmp
:用于逐字节比较两个文件。
网络
ping
:用于测试与网络主机的连接。curl
:用于向服务器传输数据或从服务器传输数据。wget
:用于从互联网下载文件。ssh
:用于安全地连接到远程计算机。nslookup
:用于查询 DNS 服务器以将主机名解析为 IP 地址。ifconfig
:用于显示和配置网络接口。netstat
:用于显示网络统计信息和活动连接数。
SSH 和加密
ssh-keygen
:用于生成和管理用于安全远程访问的 SSH 密钥。scp
:用于通过 SSH 连接在系统之间安全地传输文件。openssl
:用于加密功能,例如生成和管理 SSL/TLS 证书、加密和解密。gpg
:用于加密、解密和数字签名验证。
系统信息、维护和管理
sudo
:用于运行具有提升权限的命令。su
:用于切换到不同的用户帐户。systemctl
:用于管理基于 systemd 的 Linux 发行版中的系统服务。uptime
:用于显示系统运行了多长时间。journalctl
:用于查看系统日志。fdisk
:用于创建和操作磁盘分区。mount
:用于在系统上挂载文件系统。top
:用于显示系统资源使用情况。htop
top
:提供实时系统监控和资源使用信息的更高级版本。ps
:用于显示有关正在运行的进程的信息。df
:用于显示磁盘空间使用情况。du
:用于显示文件或目录的大小。apt-get
:用于安装、删除和更新软件包的包管理工具。dpkg
:用于安装和管理软件包的包管理工具。shutdown
:用于关闭或重启系统。free
:用于显示系统内存使用情况。uname
:用于显示内核版本、主机名等系统信息。lscpu
:用于显示CPU信息。lsusb
:用于显示系统连接的USB设备。nmon
:用于显示详细的系统性能信息,包括CPU、内存、磁盘I/O和网络使用情况。sar
:用于收集和报告一段时间内的系统性能数据。lshw
:用于显示系统硬件信息。dmidecode
:用于显示系统的BIOS和硬件信息。lsblk
:用于显示系统中块设备(如硬盘)的信息。lspci
:用于显示系统连接的PCI设备信息。lsusb
:用于显示系统连接的USB设备信息。
用户输入
read
:用于从命令行读取用户输入。select
:用于向用户显示选项菜单。
命令行编辑
ctrl-a
:用于将光标移动到行首。ctrl-e
:用于将光标移动到行尾。ctrl-k
:用于删除从光标位置到行尾的文本。ctrl-u
:用于删除从光标位置到行首的文本。
文本编辑
nano
:一个简单的命令行文本编辑器。vi
或vim
:具有许多功能的更高级的文本编辑器。cat
:用于在终端上显示文件的内容。head
: 用于显示文件的前几行。tail
:用于显示文件的最后几行。
作业控制
jobs
:用于显示后台作业列表。fg
:用于将后台作业带到前台。bg
:用于将暂停或停止的作业移至后台。kill
:用于终止正在运行的进程。
用户和组管理
useradd
:用于创建新的用户帐户。usermod
:用于修改现有用户帐户。userdel
:用于删除用户帐户。groupadd
:用于创建新的用户组。groupmod
:用于修改已有的用户组。groupdel
:用于删除用户组。passwd
:用于更改用户密码。
调试和故障排除
strace
:用于跟踪进程发出的系统调用和信号。ltrace
:用于跟踪进程进行的库调用。gdb
: 一个强大的调试器,用于调试 C 和 C++ 程序。tcpdump
:用于捕获和分析网络流量。wireshark
: 用于分析网络流量的基于 GUI 的工具。ellaneousecho
:用于在终端上显示消息。printf
:用于格式化和显示数据。date
:用于显示或设置系统日期和时间。tar
:用于创建或提取压缩档案。
各种各样的
cal
:用于显示日历。date
:用于显示或修改系统日期和时间。sleep
:用于将脚本或命令的执行延迟指定的时间量。tee
:用于将输出重定向到屏幕和文件。history
:用于显示当前shell会话的命令历史。echo
:用于将文本打印到终端或输出到文件。
注意:请注意,本指南中提供的符号分类并非绝对,它基于一种可能的分类方式。某些符号可能适用于多个类别,并且可能存在一些重叠或重复。提供的符号列表也并非详尽无遗,可能因Linux发行版和版本的不同而有所变化。我们鼓励读者参考其系统文档获取更多信息。本指南旨在提供关于Linux和Bash符号和命令的全面概述,但并不意味着是权威资源。
感谢阅读我们关于Linux和Bash符号和命令的全面指南。希望您发现本指南对掌握命令行非常有帮助。为了及时了解有关在日常工作中使用这些命令的最新技巧、技巧和最佳实践,请务必长期关注Linux迷www.linuxmi.com以获取未来的文章。我们将提供深入的示例和用例,帮助您成为更熟练的Linux用户和命令行专家。
The post 提升你的命令行技能:Bash 和 Linux 符号与命令的完整指南 first appeared on Linux迷.
共有 0 条评论