自学内容网 自学内容网

Shell学习(一)——基础命令

01 find、grep

find

find pathname -options 
  • pathname 查找的目录路径, 例如 .表示当前目录, /表示根目录
  • -name 按文件名查找文件 (递归查找文件)
  • -size 按文件大小查找文件
  • -mtime 按文件修改时间查找文件,例如 -mtime -2 查找 48 小时内修改过的文件。

example:

find . -name '*.log'
find . -size +1000c
find . -name '*.log' -mtime +5

grep

grep "search_string" filename
  • grep -i "search_string" filename 使用 -i 选项可以忽略大小写进行搜索。
  • grep -r "search_string" filename 使用 -r 选项可以递归地搜索指定目录及其子目录中的所有文件。
  • grep -n "search_string" filename 使用 -n 选项可以显示匹配行的行号。
  • grep -l "search_string" filename 使用 -l 选项可以只显示包含匹配字符串的文件名,而不显示匹配的行。
  • grep -w"search_string" filename 使用 -w 选项可以只匹配整个单词,而不是部分匹配。

02 awk、sed

awk

awk 是一种编程语言,用于在文本文件中进行模式扫描和处理。它可以用来处理结构化数据,如 CSV 文件。以下是一些常见的 awk 用法:

基本用法

awk 'pattern {action}' filename

例如,打印文件中的所有行:

awk '{print}' filename
awk "{print $0}" finename

按字段分隔符处理

awk -F ',' '{print $1, $2}' filename

这将以逗号为分隔符,打印文件中的第一和第二列,适合处理csv文件

条件处理

awk '$3 > 100 {print $1, $2}' filename

这将打印第三列大于 100 的行的第一和第二列。

内置变量

  • NR:当前记录数(行号)。
  • NF:当前记录中的字段数。
  • FS:字段分隔符,默认是空格或制表符。

sed

sed -i "s|${old_string}|${new_string}|g" filename
# 文本替换、行插入、删除、查找

sed 是一种流编辑器,用于对文本进行逐行处理和编辑。它可以用来执行替换、删除、插入等操作。以下是一些常见的 sed 用法:

基本替换

sed 's/old/new/' filename

这将把文件中第一次出现的 old 替换为 new

全局替换

sed 's/old/new/g' filename

这将把文件中所有出现的 old 替换为 new

删除行

sed '3d' filename

这将删除文件中的第三行。

插入行

sed '2i\\This is a new line.' filename

这将在文件的第二行前插入一行 This is a new line.

行打印:

sed -n '2,4p' filenmae
sed -n 'p' file.txt
#  打印一个范围内的行,如打印第 2 到第 4 行
#  打印每一行

这将同时执行多个编辑命令。

03 chmod、ls

chmod

chmod 命令用于更改文件或目录的权限。基本语法如下:

chmod [选项] 模式 文件

例如,将文件 example.txt 的权限设置为 755

chmod 755 example.txt

这表示文件所有者有读、写、执行权限,组用户和其他用户有读、执行权限

ls

ls 命令在 Linux 系统中用于列出目录内容。它可以显示当前目录下的文件和子目录,并且可以显示文件类型、权限、大小等信息。以下是一些常见的用法和选项:

  1. 基本用法
    • ls:列出当前目录下的文件和子目录。
    • ls [目录]:列出指定目录下的文件和子目录。
  2. 常用选项
    • a:显示所有文件,包括隐藏文件(以 . 开头的文件)。
    • l:以长格式显示文件信息,包括权限、所有者、大小和修改时间。
    • h:与 l 结合使用,以人类可读的格式显示文件大小(例如 KB、MB)。
    • r:逆序显示文件和目录。
    • t:按修改时间排序,最近修改的文件排在最前面。
    • R:递归显示目录中的所有文件和子目录。
  3. 实例
    • ls -l:以长格式显示当前目录中的文件和目录信息。
    • ls -a:显示当前目录中的所有文件,包括隐藏文件。
    • ls -lh:以人类可读的格式显示当前目录中的文件大小。
    • ls -t:按修改时间排序显示当前目录中的文件和目录。
    • ls -R:递归显示当前目录中的所有文件和子目录。

04 echo、ps

echo

  • 基本功能
    • echo是一个用于在终端输出文本的简单命令。它可以将指定的字符串、变量值等内容显示在屏幕上,是在编写脚本或者简单的命令行交互中常用的工具。
  • 语法格式
    • echo [选项] [字符串]
  • 常见选项及示例
    • n选项:不输出换行符。例如,echo -n "Hello"输出Hello后不会换行,这样可以在同一行继续输出其他内容。如果接着执行echo " World",输出结果将是Hello World在同一行。
    • e选项:启用转义字符的解释。例如,echo -e "First line\\nSecond line"会输出两行内容,其中\\n是换行符。还可以使用其他转义字符,如\\t表示制表符,用于格式化输出。
  • 应用场景
    • 信息输出:在脚本中用于向用户输出提示信息、变量的值等。例如,echo "The value of variable x is $x"可以显示变量x的值。
    • 简单的文本生成:可以用于快速生成简单的文本文件。例如,echo "This is a test file content." > test.txt会创建一个名为test.txt的文件,并将指定的文本内容写入其中。

ps

  • 基本功能
    • ps用于查看系统中的进程状态信息。它可以显示正在运行的进程的各种细节,如进程 ID(PID)、用户 ID(UID)、CPU 使用率、内存占用等,帮助用户了解系统的运行情况。
  • 语法格式
    • ps [选项]
  • 常见选项及示例
    • ef选项:显示所有进程的详细信息。例如,ps -ef会输出包括 UID、PID、PPID(父进程 ID)、C(CPU 使用率)、STIME(启动时间)、TTY(终端)、TIME(累计 CPU 时间)、CMD(命令)等信息,用于查看系统中正在运行的所有进程。
    • aux选项:与ef类似,但输出格式稍有不同,并且可以方便地查看 CPU 和内存使用率等信息。例如,ps -aux | grep firefox可以查找firefox进程的相关信息,通过管道符|grep命令结合,可以筛选出包含firefox相关内容的进程信息。
  • 应用场景
    • 进程监控:在系统管理中,用于监控系统中的进程运行情况,查看是否有异常进程占用过多资源或者是否有恶意进程在运行。
    • 故障排查:当系统出现性能问题或者某个应用程序异常时,通过ps命令可以查看相关进程的状态,辅助定位问题,比如查看进程是否因为内存不足而崩溃或者 CPU 使用率过高导致系统卡顿。

05 top、free

top

  • 基本功能
    • top是一个动态查看系统资源使用情况的命令。它实时显示系统中各个进程的 CPU 使用率、内存使用率、进程 ID 等信息,并且会不断更新显示内容,让用户能够及时掌握系统的运行状态。
  • 运行方式和显示内容
    • 直接在终端输入top即可运行。第一行显示系统的运行时间、用户数、负载等情况;第二行显示进程相关的统计信息;下面的行则是各个进程的详细信息。
  • 操作方式
    • 可以通过按键来操作top。例如,按M键可以按照内存使用率排序进程,按P键可以按照 CPU 使用率排序进程,按q键可以退出top命令。
  • 应用场景
    • 系统性能实时监控:在服务器管理或者高性能计算环境中,实时监控系统的 CPU 和内存等资源的使用情况,以便及时发现资源瓶颈或者性能问题。
    • 进程资源管理:通过观察进程的资源占用动态变化,决定是否需要对某些进程进行优化或者终止,比如当一个进程长时间占用大量 CPU 资源导致系统性能下降时,可以通过top观察后采取相应措施。

free

  • 基本功能
    • free用于查看系统内存使用情况,包括物理内存、交换空间(如果有)等的总量、已使用量、空闲量等信息,让用户了解系统内存资源的分配和使用状态。
  • 语法格式
    • free [选项]
  • 常见选项及示例
    • h选项:以人类可读的方式显示内存信息,如将字节单位转换为 GB、MB 等。例如,free -h会显示总的内存量、已使用内存量、空闲内存量等信息,并且单位是比较直观的,如1.0G512M等。
    • m选项:以 MB 为单位显示内存信息。例如,free -m会将内存信息以 MB 为单位进行展示,方便用户在不需要精确字节数的情况下快速了解内存的大致使用情况。
  • 应用场景
    • 系统资源规划:在安装新软件或者配置服务器时,通过free命令查看系统内存的剩余情况,判断是否有足够的内存来支持新的应用程序或服务。
    • 性能优化:当系统出现性能问题,怀疑是内存不足导致时,使用free命令查看内存使用细节,确定是否需要增加物理内存或者优化内存使用的程序。

06 ln、mount

ln

ln 命令在 Linux 系统中用于创建文件或目录的链接。它有两种主要类型的链接:硬链接和软链接(符号链接)。

硬链接是指多个文件名指向同一个文件数据块。删除一个硬链接不会影响其他硬链接。软链接则类似于 Windows 系统中的快捷方式,指向另一个文件或目录。

以下是 ln 命令的基本用法和常见选项:

  1. 创建硬链接
    • 语法:ln [源文件] [目标文件]
    • 示例:ln file1.txt file2.txt,这会创建一个名为 file2.txt 的硬链接,指向 file1.txt
  2. 创建软链接
    • 语法:ln -s [源文件或目录] [目标文件或目录]
    • 示例:ln -s /path/to/file1.txt /path/to/link1.txt,这会创建一个名为 link1.txt 的软链接,指向 /path/to/file1.txt
  3. 常用选项
    • b:在覆盖目标文件之前进行备份。
    • d:允许超级用户创建目录的硬链接。
    • f:强制执行,覆盖已有文件。
    • i:交互模式,覆盖文件前提示用户确认。
    • n:把符号链接视为一般目录。
    • s:创建软链接。
    • v:显示详细的处理过程。
  4. 实例
    • 创建一个指向 log2013.log 的软链接 link2013ln -s log2013.log link2013
    • 创建一个指向 log2013.log 的硬链接 ln2013ln log2013.log ln2013

mount

mount 命令在 Linux 系统中用于挂载文件系统。以下是一些常见的用法和选项:

  1. 基本用法
    • mount [选项] 设备 挂载点
    • 例如:sudo mount /dev/sda1 /mnt/dev/sda1 设备挂载到 /mnt 目录。
  2. 常用选项
    • t <文件系统类型>:指定文件系统的类型,例如 ext4ntfs 等。
    • o <选项>:指定挂载选项,比如读写权限、访问控制等。例如,o ro 表示只读挂载,o rw 表示读写挂载。
    • a:挂载 /etc/fstab 中定义的所有文件系统。
    • r:以只读方式挂载。
    • w:以读写方式挂载。
    • L <标签>:根据标签挂载设备。
    • U <UUID>:根据 UUID 挂载设备。
  3. 实例
    • /dev/hda1 挂载到 /mnt 目录:mount /dev/hda1 /mnt
    • 以只读方式挂载 /dev/hda1mount -o ro /dev/hda1 /mnt
    • 使用 loop 模式挂载 ISO 文件:mount -o loop /tmp/image.iso /mnt/cdrom
  4. 卸载文件系统
    • 使用 umount 命令卸载文件系统:sudo umount /mnt
    • 如果文件系统正在使用,可以使用 l 选项进行“懒卸载”:sudo umount -l /mnt

07 which、cat

which

  • 基本功能
    • which是一个在 Linux 和 Unix 系统中用于查找可执行文件位置的命令。当你在终端中输入一个命令名称时,系统会在环境变量PATH所指定的一系列目录中查找对应的可执行文件,which命令的作用就是明确地告诉你这个可执行文件的具体位置。
  • 语法格式
    • which [选项] [命令名称]
  • 常见选项及示例
    • 一般情况下,直接使用which加上命令名称即可。例如,which ls会返回ls命令的完整路径,如/bin/ls。这表示当你在终端执行ls命令时,实际上是在执行/bin/ls这个文件。
    • a选项:用于列出所有匹配的可执行文件路径。例如,系统中可能安装了多个版本的 Python,which -a python会列出所有名为python的可执行文件路径,可能包括/usr/bin/python/usr/local/bin/python等,这样你就能清楚地看到不同版本 Python 的位置。

cat

  • 基本功能
    • cat主要用于查看文件内容、合并文件或者创建简单的文件。它可以将文件的内容输出到终端屏幕上,也可以将多个文件的内容按顺序合并输出。
  • 语法格式
    • cat [选项] [文件名称]
  • 常见选项及示例
    • 一般情况下,cat [文件名]可以查看文件内容。例如,cat file.txt会将file.txt文件中的内容显示在屏幕上。
    • n选项:在显示文件内容时,对每一行进行编号。例如,cat -n another_file.txt会在输出文件内容的同时,在每行前面加上行号,方便用户查看和引用文件中的特定行。
    • >>>操作符:cat可以和这些操作符结合用于文件创建和内容追加。例如,cat > new_file.txt会创建一个名为new_file.txt的文件,用户可以在终端输入内容,按Ctrl + D结束输入,内容就会保存到文件中。cat file1.txt >> file2.txt则会将file1.txt的内容追加到file2.txt的末尾。
  • 应用场景
    • 文件查看:快速查看文本文件的内容,如查看配置文件、日志文件等。
    • 文件合并和简单编辑:在脚本编写或者简单的文件处理中,用于合并文件内容或者创建简单的文本文件,如将多个日志文件合并为一个文件进行分析。

08 rm、df

rm

  • 基本语法
    • rm [选项]... 文件或目录...
  • 常用选项
    • f(force):强制删除文件或目录,不提示确认信息。例如,如果要强制删除一个名为test.txt的文件,可以使用rm -f test.txt。这个选项在编写脚本时很有用,因为它不会因为文件不存在或者权限问题而中断脚本的执行。
    • r(recursive)或R:递归地删除目录及其内容。当要删除一个非空目录时,必须使用这个选项。例如,要删除名为test_dir的目录及其内部的所有文件和子目录,可以使用rm -r test_dir
    • i(interactive):在删除每个文件或目录之前,提示用户进行确认。例如,rm -i file1.txt file2.txt会在删除file1.txtfile2.txt之前分别询问用户是否真的要删除。

df

  • 基本语法
    • df [选项]... [文件系统]...
  • 常用选项
    • h(human - readable):以人类可读的格式显示磁盘空间大小,例如将字节数转换为 KB、MB、GB 等单位。例如,df -h会以更直观的方式显示磁盘空间信息,如1K1M1G等单位,而不是原始的字节数。
    • T:显示文件系统类型。除了磁盘空间信息外,还会显示每个文件系统的类型,如ext4xfs等。例如,df -T会列出文件系统类型,这样用户可以清楚地知道每个挂载点对应的文件系统类型。
    • m:以 MB 为单位显示磁盘空间大小。这在比较不同文件系统的空间大小时很方便,例如,df -m会将磁盘空间信息以 MB 为单位显示。


原文地址:https://blog.csdn.net/qq_41945053/article/details/143806972

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!