Linux学习笔记(指令篇)

Cdostan MVP++

Linux目录结构

在Linux系统中,目录结构与Windows系统类似,都是树形结构,不同的是,Windows系统可以有多个树,也即其能有很多个磁盘,但Linux系统只有一棵树,即所有文件和目录都放在根目录下。

Linux系统中,以“/”表示顶级目录即根目录,层次关系也通过“/”表示

路径格式

  • 绝对路径:即以根目录“/”开头
  • 相对路径:相对于当前工作目录下的路径,例如当前工作目录下有一个test目录,则其相对路径就是test
  • 特殊路径符:
    • .:表示当前目录
    • ..:表示上一级目录
    • ~:表示HOME目录

命令格式

在Linux系统中,每一条命令都是一个可执行的程序,命令都按以下格式:

1
command+(option)+(parameter)
  • command即指令名,如ls,cd,mkdir……
  • option是选项,用来执行一些特定的操作
  • parameter是相关参数,通常是文件或目录路径

基本命令

ls命令

格式:

1
ls+(-a -l -h)+(parameter)

ls命令的作用是查看相应的目录里的内容,如果不加参数,则默认展示当前工作目录的内容,加上参数则会展示指定目录的内容。
该指令有三个选项可选:

  • -a 将该目录里的所有内容展示,包括隐藏内容
  • -l 以列表的形式将目录里的内容展示,同时把文件或文件夹所属的用户,用户组,相关权限以及文件大小展示出来
  • -h 必须结合-l使用,可以将文件大小显示的更加清晰

cd命令

格式:

1
cd+(parameter)

cd命令的作用是切换工作目录到指定目录,如果不加参数,则默认切换到用户的HOME目录,一般是/home/username

pwd命令

格式:

1
pwd

pwd命令的作用是展示当前工作目录

mkdir命令

格式:

1
mkdir+(-p)+parameter

mkdir命令的作用是创建新的目录,参数必填
-p选项表示自动创建不存在的父目录,这样可以创建一个当前目录下很多层的目录

touch命令

格式:

1
touch+parameter

touch命令的作用是创建一个文件

cat命令

格式:

1
cat+parameter

cat命令的作用是查看文件内容

more命令

格式:

1
more+parameter

more命令的作用也是查看文件内容,但它会将内容非常多的文件一页一页的展示,通过空格翻页,按q退出查看

cp命令

格式:

1
cp+(-r)+parameter

cp命令的作用是复制文件或文件夹,需要两个参数,第一个是要复制的文件或文件夹的路径,第二个是要复制去的地方,-r选项在复制文件夹的时候使用

mv命令

格式:

1
mv+parameter

mv命令的作用是移动文件或文件夹,同样需要两个参数,第一个是要移动的文件或文件夹的路径,第二个是要移动去的地方,若目标不存在,则进行改名

rm命令

格式:

1
rm+(-r -f)+parameter

rm命令的作用是删除文件或文件夹,参数必填,数量不限,-r选项表示删除文件夹,-f选项表示强制删除,一般在以root用户登录的情况下使用

which命令

格式:

1
which+parameter

which命令的作用是查看命令的程序文件存放在哪里,因此这里的参数是命令名

find命令

格式:

1
find+起始路径+ -name/-size +"被查找文件名"/"+-NMGB"

find命令的作用是搜索指定的文件,首先要指定起始路径,再选择是以文件名的方式搜索还是以文件大小的方式搜索,以文件名方式搜索需要填写文件名称,以文件大小搜索需要填写相应的文件大小范围,其中“+”代表大于,“-”代表小于。

grep命令

格式:

1
grep+(-n)+parameter

grep命令的作用是从一个文件中过滤相应的文件行,需要两个参数,第一个是过滤的关键字,第二个是文件的路径,-n选项可选,用来显示匹配的行的行号

wc命令

格式:

1
wc+(-c -m -l -w)+parameter

wc命令的作用是统计文件的行数,单词数量,若不加选项,则会以行数、单词数、字节数的顺序显示相关数量,而其可选的四个选项意义如下:

  • -c 统计字节数量
  • -m 统计字符数量
  • -l 统计行数
  • -w 统计单词数

echo命令

格式:

1
echo+parameter

echo命令的作用与printf函数类似,将指定内容输出到命令行里面,若内容过于复杂可以加上引号(有空格等特殊符号)

tail命令

格式:

1
tail+(-f -num)+parameter

tail命令的作用是拿来查看文件尾部内容,其中参数部分是文件的路径。选项意义:

  • -f 代表持续追踪,可以用来查看文件变换
  • -num 指定要查看的行数,若不带此选项,则默认查看尾部十行

进阶命令

tree命令

格式:

1
tree+(-a -d)+parameter

tree命令的作用和ls命令类似,不过其可以根据文件目录生成文件树,参数部分是文件或目录的路径。
选项意义:

  • -a 代表列出全部文件
  • -d 只列出目录

tree命令可能需要安装之后才能使用,使用yum/apt……安装即可

diff命令

格式:

1
diff+(-b -B -q)+file1+file2

diff命令用于比较文件的差异。
选项意义:

  • -b 不检查空白字符的不同
  • -B 不检查空行
  • -q 仅显示有无差异,不显示详细信息

sed命令

格式:

1
sed+(-n -i -e)+'command'+input

sed命令的作用是对文件进行处理,其可以将数据进行替换、删除、新增、选取等。相较于一般的命令形式,sed命令需要一个单独的“command”,而input即是输入文本。
“command”内容及作用:

  • [行号]+a+[内容] 该命令的作用是在对应行号的行后新增一行,其内容即为所输入的内容。行号可以是数字,代表某一特定的行,也可以是“起始行,终止行”的形式,代表在所属范围的每一行后都新增内容为输入内容的一行,其中$代表最后一行,$-1代表倒数第二行,以此类推,如果忽略行号部分,则代表对每一行都进行操作。(后续command里的行号和该条相同)
  • [行号]+c+[内容] 用输入的内容取代相应行
  • [行号]+i+[内容] 在当前行的上面插入一行文本,内容为输入内容
  • [行号]+d 删除相应行的内容
  • [行号]+p 输出选择的内容,通常与-n选项搭配使用
  • [行号]+s/re/string(/g) 将re(正则表达式)匹配的内容替换为string,如果没有/g,则只会将每一行匹配的第一个字符串替换为string,而加上/g则表示在整行范围内替换。

选项意义:

  • -n sed默认将文件所有内容输出,而该选项可以使其只显示经过它处理的内容
  • -i 直接修改读取的内容,而不是输出到屏幕,若没有该选项则原文件不会发生变化
  • -e 允许在同一行里执行执行多条命令

awk命令

格式:

1
awk+(-F -v -f)+'模式 {操作}'+输入文件

awk是一个功能十分强大的文本处理工具,其可以进行数据提取、文本处理、模式匹配、报告生成和自动化任务等。要能够运用awk命令,我们要知道以下内容:

  1. 模式是什么:模式可以是一个正则表达式,也可以是一个条件表达式,表示对于匹配或满足条件的行再进行操作,其也可以是空,这时就代表对所有行进行操作。还有一些特殊模式,比如BEGINEND,后面紧跟一个操作,分别代表在处理任何输入之前执行的操作,处理完所有输入后执行的操作。
  2. 字段和变量:awk需要用内置的变量来处理文本数据,有以下常用的变量:
  • $0:表示当前行的完整内容
  • $1,$2,$3……:表示当前行的第几个字段(由字段分隔符分隔)
  • NF:表示当前行的字段数
  • NR:表示当前行的行号
  • FS:字段分隔符,默认为空格或制表符
  • OFS:输出字段分隔符,默认为空格
  • ORS:输出记录分隔符,默认为换行符

选项意义:

  • -F 指定字段分隔符
  • -v 设置变量的初始值
  • -f 从文件中读取awk脚本

举些例子更好理解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#------------------------------------------------------------------------------
awk '{print}' filename #打印文件中所有行
#------------------------------------------------------------------------------
awk '{print $2}' filename #打印文件中的第二列
#------------------------------------------------------------------------------
awk '/pattern/ {print}' filename #打印包含特定模式的行
#------------------------------------------------------------------------------
awk 'NR>=3 && NR<=5 {print}' filename #打印第三行到第五行
#------------------------------------------------------------------------------
awk -F, '{print $1,$3}' filename #以逗号为字段分隔符,再打印第一列和第三列
#------------------------------------------------------------------------------
awk '$2>10 {print}' filename #打印第二列大于10的行
#------------------------------------------------------------------------------
awk '/ERROR/ {count++} END {print "Error count:", count}' log.txt
#统计文件里有ERROR的行数
#------------------------------------------------------------------------------
awk -F, 'BEGIN {OFS=":"} {print $1, $2, $3}' data.txt
#以逗号为字段分隔符,并以分号为输出字段分隔符将第一、二、三列输出

一些特殊的符号

管道符

管道符符号:|
作用:将左边命令的输出作为右边命令的输入,例如:

1
cat a.txt | grep "something"

反引号

被反引号修饰(包围)的字符串会作为命令来执行,例如:

1
echo pwd

输出结果为pwd

1
echo `pwd`

输出结果则是当前工作目录

重定向符

分为输入重定向符和输出重定向符。

  • 输入重定向符:<,代表将右边的内容(文件……)作为输入传给左边的指令,例如现在有一个可执行文件out,需要传入一个参数,正常执行可以写为:
1
./out parameter

但若现在已经有一个文件a.txt含有了我们想要的输入参数,则可以通过输入重定向符来实现:

1
./out < a.txt
  • 输出重定向符:将左边命令的结果写入右边的文件
    • 覆盖输出重定向符:>,左边命令的结果将会覆盖文件原有的内容
    • 追加输出重定向符:>>,左边命令的结果将会追加到文件的末尾,文件原有内容仍会保留
  • Title: Linux学习笔记(指令篇)
  • Author: Cdostan
  • Created at : 2025-02-13 20:02:30
  • Updated at : 2025-03-03 00:04:34
  • Link: https://cdostan.github.io/2025/02/13/linux/linux学习/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments