【linux学习】基本指令

avatar
作者
筋斗云
阅读量:1

目录

指令介绍

1.1 pwd

pwd来查看当前目录在这里插入图片描述

1.2 ls指令

ls [选项][目录或文件]

对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
在这里插入图片描述

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。

  • 在这里插入图片描述

  • -l 列出文件的详细信息。

  • 在这里插入图片描述

    • ...开头的文件是隐藏目录任何目录下都会有-a可以进行查看在这里插入图片描述
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

  • 不会列出其下的任何子目录或文件在这里插入图片描述

  • -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件

  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
    在这里插入图片描述

  • -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)

  • -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)

  • -r 对目录反向排序。

  • -t 以时间排序。

  • -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)

  • -R 列出所有子目录下的文件。(递归)

  • -1 一行只输出一个文件。

1.3 cd指令

语法:cd 目录名

改变工作目录。将当前工作目录改变到指定的目录下

  • cd .. : 返回上级目录
  • cd ~:进入用户家目
  • cd -:返回最近访问目录
    在这里插入图片描述

家目录的名称通常与用户的用户名相对应,并位于特定的高级目录下。例如,在标准的Linux系统中,家目录通常位于/home目录下(如用户john的家目录通常是/home/john),而在macOS中,它们通常位于/Users目录下(如用户john的家目录会是/Users/john)。对于root用户(超级用户),家目录通常是/root
在这里插入图片描述

路径

绝对路径:

  • 绝对路径是从文件系统的根目录(在UNIX/Linux系统中是/路径分隔符),在Windows系统中通常是某个盘符如C:\)开始的完整路径,它详尽地指出了文件或目录的位置,不管当前位置在哪里。
  • 绝对路径总是以同一种方式解析,它不依赖于当前工作目录或者程序的运行上下文。
  • 例如,在Linux系统中,/home/user/documents/report.txt是一个绝对路径,它明确指向了/home/user/documents目录下的report.txt文件。

相对路径:

  • 相对路径是相对于当前工作目录的路径。换句话说,它根据当前的位置来指定目标文件或目录的位置。
  • 相对路径可能包括./表示当前目录,../表示上一层目录。它们通常比绝对路径短,并且可以在当前工作目录改变时保持不变(只要相对关系没变)。
  • 例如,如果当前的工作目录是/home/user/documents,则可以使用相对路径./report.txt来引用同一目录下的report.txt文件,或者使用../pictures/image.jpg来引用上一级目录中pictures目录下的image.jpg文件

路径必须具有唯一性,任何一个文件都只有一个父目录,访问任何文件前都得先找到这个文件
在这里插入图片描述

在这里插入图片描述

指令本质都是程序—指令、程序、可执行程序都是一回事。指令就是程序 --安装和卸载是在做什么呢?
把可执行程序拷贝/删除到系统路径下

which指令

在这里插入图片描述
which pwd 打印出系统所在的路径

在这里插入图片描述

alias

alias指令作用是给其他命令起别名
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述ll就是ls -l的别名
在这里插入图片描述

ls 直接执行的时候,带颜色
在这里插入图片描述

1.4 touch指令

语法:touch [选项]… 文件…

touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

  • -a 或–time=atime或–time=access或–time=use只更改存取时间。
  • -c 或–no-create 不建立任何文档。
  • -d 使用指定的日期时间,而非现在的时间。
  • -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  • -m 或–time=mtime或–time=modify 只更改变动时间。
  • -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  • -t 使用指定的日期时间,而非现在的时间
    在这里插入图片描述
    在当前路径下创建一个普通文件

stat 指令

在这里插入图片描述
我们可以看见更详细的内容

1.5 mkdir指令(重要)

语法:mkdir [选项] dirname…

功能:在当前目录下创建一个名为 “dirname”的目录

在这里插入图片描述
这个蓝色的list就是新的目录

  • -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

在这里插入图片描述

tree指令

以树状结构形式打印出目录结构
在这里插入图片描述

第一次是找不到这个执行命令的

yum -y install tree 

在这里插入图片描述
进行安装

在这里插入图片描述
在这里插入图片描述

ctrl + c

终止异常的命令

1.6 rmdir指令 && rm 指令

在这里插入图片描述

rmdir 它只能删除空目录

rm命令可以同时删除文件或目录

  • 语法:rm [-f-i-r-v][dirName/dir]

  • 适用对象:所有使用者

  • 功能:删除文件或目录

    -f 即使文件属性为只读(即写保护),亦直接删除
    -i 删除前逐一询问确认
    -r 删除目录及其下所有文件
    在这里插入图片描述

root账号下,它每次会进行询问,y代表yes,n代表no

在这里插入图片描述
在这里插入图片描述

一旦有不确定的目录或者文件,宁可备份,不可删除

*

*:表示一个通配符,匹配任意文件名

1.7 man指令(重要)

man 是 Linux 和 UNIX 系统中一个常用的命令,用于查看手册页面(manual pages)。手册页面是系统中大多数命令、程序、配置文件格式和通常的编程库函数的文档。手册页面提供了详细的用户级的文档,有助于用户了解如何使用这些命令和工具。

要使用 man 命令,可以在命令行终端输入 man 后跟你想了解相关信息的命令或程序名称。例如:

man ls 

在这里插入图片描述

以上命令将显示 ls 命令的手册页面,其中包含了关于如何使用 ls 以及它的各种选项的信息。

手册页面被分为几个不同的部分,以便于查找和浏览:

  1. 可执行程序或者 shell 命令
  2. 系统调用(内核提供的函数)
  3. 库调用(程序库中的函数)
  4. 特殊文件(通常在 /dev 下的设备文件)
  5. 文件格式与约定(例如 /etc/passwd)
  6. 游戏等杂项
  7. 宏包和约定(例如 man 文档格式)
  8. 系统管理员命令(通常只能由 root 用户执行)
  9. 内核例程(非标准)
    在这里插入图片描述

如果你想查看某个特定部分的手册页面,可以指定部分的数字。例如,要查看 printf 程序的手册页(通常是第 1 部分),可以输入:

man 1 printf 

而查看 printfC 库函数的手册页(第 3 部分),则可以输入:

man 3 printf 

还有一些有用的选项,可以用在 man 命令中:

  • -k: 搜索手册页的简短描述,对于不知道准确命令的情况很有用。
  • -f: 相当于 whatis 命令,显示命令的简短描述。

手册页对于新学习和使用 Linux 系统的用户来说是极其有用的资源,因为它们包含了所有命令的官方文档。在实践中,经常使用 man 命令可以更好地了解使用的工具和服务。

yum -y install man-pages 

1.8 cp指令(重要)

cp 是 Linux 和 Unix 系统中使用的一个基本命令,用于复制文件和目录。这个命令的一般语法如下:

cp [options] source destination 
  • source 是要复制的文件或目录的路径。
  • destination 是要将文件或目录复制到的路径。

如果 destination 是一个已经存在的目录,那么 source 文件会被复制进这个目录,并且保留原文件名。如果 destination 是一个文件名(在当前目录下不存在这个名字的文件),那么 source 文件会被复制并重命名destination。如果将多个文件复制到一个目录,需要在命令的最后指定目标目录。

以下是一些常用的 cp 命令选项:

  • -i: 询问用户在覆盖已存在的目标文件之前是否继续。
  • -r-R: 递归地复制目录及其内容
  • -v: 显示详细信息,展示文件复制的过程。
  • -p: 保持原文件的属性(权限、时间戳)。
  • -a: 归档模式,复制目录及其全部内容,同时保持属性和符号链接等。
  • -f: 强制复制,如果目标文件已经存在,不提示用户即删除原文件。
  • --preserve: 保留指定的文件属性(如:所有权、时间戳),类似 -p
  • --no-preserve: 不保留指定的文件属性。
  • --backup: 在覆盖文件之前为其创建备份。

这里有一些 cp 命令的示例:

  • 将单个文件复制到另一个目录中:
    cp file.txt /path/to/directory/ 
  • 将文件复制到当前目录中的另一个名称:
    cp file.txt newfile.txt 
  • 递归地复制一个目录及其所有内容:
    cp -R /path/to/source/directory /path/to/destination/directory 
  • 在覆盖目标文件之前询问用户:
    cp -i file.txt /path/to/directory/ 
  • 复制文件时显示详细信息:
    cp -v file.txt /path/to/directory/ 

在这里插入图片描述把file.txt拷贝到上级目录并改名为1234.txt

在这里插入图片描述
Linux中同一个目录下,不允许存在同名文件

1.9 mv指令(重要)

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录

它的语法如下:

mv [options] source destination 
  • source 是要移动或重命名的文件或目录的路径。
  • destination 是文件或目录的新位置或名称。

如果 destination 是一个存在的目录,source 文件会被移动到这个目录中,并保持原文件名。如果 destination 是一个文件名,并且不存在与其相同名称的文件,source 文件或目录会被重命名为 destination。如果命令中包含了多个 source 参数,那么最后的 destination 必须是一个已存在的目录。

以下是一些 mv 命令的选项:

  • -i: 在覆盖目标文件之前提示用户确认。
  • -u: 仅当源文件比目标文件新,或者目标文件不存在时,才移动文件。
  • -v: 显示详细的操作信息,包括每次移动的文件。
  • -f: 强制移动文件,无视目标位置的文件是否存在,不提示用户。
  • --no-clobber: 不会覆盖目标目录中已存在的文件。

这里有一些 mv 命令的使用示例:

  • 将文件重命名:

    mv old_name.txt new_name.txt 

    在这里插入图片描述

  • 将文件移动到另一个目录:

    mv file.txt /path/to/directory/ 
  • 将目录重命名:

    mv old_directory_name new_directory_name 
  • 在覆盖目标文件之前询问用户:

    mv -i file.txt /path/to/directory/ 
  • 移动一个目录到另一个目录中:

    mv /path/to/source_directory /path/to/destination_directory/ 

mv 命令非常高效,因为它没有实际移动文件数据本身,而只是更新了文件系统中的索引,除非是跨文件系统移动。若要查看 mv 命令的完整文档和可用的选项,可以使用 man mv 来查看其手册页。

在这里插入图片描述
将xuan.txt移入0623并改名为abcd.txt

快速写出代码

在这里插入图片描述

在这里插入图片描述
cat本质就是查看文件内容

在这里插入图片描述
-n 打印出行号

1.10 重定向

在这里插入图片描述
在 Unix 和类 Unix 系统中,包括 Linux,在命令行中,重定向(Redirection)是一种将命令的输出发送到除了标准输出(屏幕)以外的其他位置(如文件或另一个程序)的方法。它还可以用于从文件或程序而不是键盘获取输入。以下是几种重定向操作的基本介绍:

标准输出重定向(STDOUT)

  • 使用 > 符号可以将命令的输出重定向(原本要打印到显示屏上,现在重定向到文件中)到文件中,如果文件已经存在,则会覆盖文件的内容。例如,将 ls 命令的输出保存到 list.txt 文件中:
    ls > list.txt 
  • 使用 >> 符号可以将内容附加到文件中,而不是覆盖它。例如,将追加 ls 命令的输出到 list.txt 文件中:
    ls >> list.txt 

标准错误重定向(STDERR)

  • 使用 2> 符号可以将命令的错误输出重定向到文件中。例如,将 ls 对于不存在的文件的错误信息保存到 errors.txt
    ls file_not_found 2> errors.txt 
  • 使用 2>> 符号可以将错误信息附加到文件中。例如:
    ls file_not_found 2>> errors.txt 

标准输入重定向(STDIN)

  • 使用 < 符号可以使用文件内容作为命令的输入。例如,将 file.txt 的内容作为 grep 命令的输入:
    grep 'some_text' < file.txt 

同时重定向标准输出和标准错误

  • 使用 &>>& 符号可以同时重定向标准输出和错误输出到同一个文件中。例如:
    ls > all_output.txt 2>&1 
    或者
    ls &> all_output.txt 

使用特殊文件 /dev/null

  • /dev/null 是一个特殊文件,它会丢弃所有写入其中的数据(称为位桶)。将输出重定向到 /dev/null 就像是将输出丢弃掉了:
    ls > /dev/null 

使用重定向时,需要注意文件权限和已有内容可能被覆盖的问题。使用这些技巧可以在脚本中进行高级的数据流控制,或在日常使用命令行时更有效率地处理输出和输入。

我们可以直接用下面的方式创建新文件

 >file.txt 

在这里插入图片描述

所以,echo本身是写在显示器的文件中,现在输出或追加到新的文件中,重定向

在这里插入图片描述
cat 后面不接任何东西,默认从键盘文件读取内容,输入重定向从文件中读取内容

在这里插入图片描述

1.11 less指令

i=1; while [ $i -le 10000 ]; do echo "hello worle $i"; let i++; done > big.txt 

我们构建一个大文件
在这里插入图片描述
在这里插入图片描述

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
  • 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件 

less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件

  • -i 忽略搜索时的大小写
  • -N 显示每行的行号
  • /字符串:向下搜索“字符串”的功能
  • ?字符串:向上搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • q:quit

head和tail指令

如果我现在只想拿到开头的一点信息,我只需要用head指令即可:

在这里插入图片描述
tail指令提取文件的结尾
在这里插入图片描述
规定取五行
在这里插入图片描述
如果现在要取文件的8000到8010这十行呢?

方法一:我们先将前8010行提取到一个新文件中再取尾

方法二:
在这里插入图片描述
|这个竖划线符号,我们称为管道
Linux中的管道(pipe)是一种强大而常用的特性,它允许你将一个命令的输出直接作为下一个命令的输入。这使得你可以将多个简单的工具组合在一起,完成复杂的任务。管道在Linux命令行中使用竖线符号(|)表示。

下面是一些常用管道的例子:

  1. 基本示例:将 ls 命令的输出通过管道传递给 grep,以过滤出包含特定字符串的文件或目录。

    ls | grep 'pattern' 
  2. 逐层处理:将 ps 命令的输出通过管道传递给 grep,然后再通过 sort 排序。

    ps aux | grep 'some_process' | sort 
  3. 与其他命令结合:将 cat 命令的输出通过管道传递给 awk,处理文本数据。

    cat file.txt | awk '{ print $1 }' 
  4. 多层管道:将多个命令连接在一起进行复杂的处理。

    dmesg | grep 'keyword' | less 

在这里插入图片描述

  1. 统计数据使用 wc 命令统计文件内容的行数、单词数和字符数。
    cat file.txt | wc -l 

在这里插入图片描述

  1. 重定向和管道结合:可以将命令的输出通过管道传递并重定向到文件。
    ls -l | grep 'pattern' > output.txt 

通过管道,可以有效地组织和处理数据,减少手动操作,提升效率。熟练使用管道是成为Linux命令行高手的关键之一

1.12时间相关的指令

date显示

date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]

  • 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

    • %H : 小时(00…23)
    • %M : 分钟(00…59)
    • %S : 秒(00…61)
    • %X : 相当于 %H:%M:%S
    • %d : 日 (01…31)
    • %m : 月份 (01…12)
    • %Y : 完整年份 (0000…9999)
    • %F : 相当于 %Y-%m-%d
      在这里插入图片描述
  • 2.在设定时间方面

    • date -s //设置当前时间,只有root权限才能设置,其他只能查看。
    • date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
    • date -s 01:01:01 //设置具体时间,不会对日期做更改
    • date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
    • date -s “01:01:01 20080523″ //这样可以设置全部时间
    • date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
    • date -s “20080523 01:01:01″ //这样可以设置全部时间
  • 3.时间戳

  • 时间戳(Timestamp)是一种用于记录事件发生的特定时间点的数据。在计算机和信息技术领域,时间戳通常以特定的格式表示日期和时间,可以精确到秒或毫秒。这些时间信息可以用于多个目的,包括事件记录、数据同步、日志记录、版本控制等

时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
在这里插入图片描述

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

例如,Unix时间戳 1633096800 对应于2021年10月1日00:00:00

1.13 cal指令

cal命令可以用来显示公历(阳历)日历
在这里插入图片描述

  • -3 显示系统前一个月,当前月,下一个月的月历

  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

  • 在这里插入图片描述

  • -y 显示当前年份的日历
    在这里插入图片描述

1.14 find指令(重要)

find 是一个强大和灵活的命令,用于在Linux文件系统中搜索文件和目录。它能够按多种条件搜索文件,并对找到的文件执行操作。下面是一些 find 基本用法和常见示例:

基本用法

find [搜索路径] [搜索条件] [操作] 

常用选项和条件

  • -name [名称]:按名称搜索(支持通配符)。
  • -iname [名称]:按名称搜索(忽略大小写,支持通配符)。
  • -type [类型]:按文件类型搜索(文件:f,目录:d,符号链接:l)。
  • -size [大小]:按文件大小搜索(如 +100M 表示大于100MB的文件)。
  • -mtime [天数]:按修改时间搜索(如 -mtime -7 表示7天内修改的文件)。
  • -atime [天数]:按访问时间搜索。
  • -ctime [天数]:按创建时间搜索。
  • -exec [命令] \;:对找到的文件执行指定命令。
  • -delete:删除找到的文件(使用时需谨慎)。

示例

  1. 在当前目录及其子目录中按名称搜索文件

    find . -name "filename.txt" 
  2. 在指定目录中模糊匹配名字(忽略大小写)

    find /path/to/search -iname "*.txt" 
  3. 搜索大于100MB的文件

    find / -size +100M 
  4. 搜索类型为目录的文件

    find /path/to/search -type d 
  5. 搜索最近7天内修改过的文件

    find /path/to/search -mtime -7 
  6. 搜索并执行命令(如删除文件)

    find /path/to/search -name "*.tmp" -exec rm {} \; 
  7. 搜索并重定向结果到文件

    find /path/to/search -name "*.log" > log_files.txt 
  8. 按权限搜索文件

    find /path/to/search -perm 644 

高级用法

利用 find 可以组合使用多个条件,如逻辑操作符 -and(默认)、-or-not

# 查找目录中修改时间在7天内并且文件名包含 ".log" 的文件 find /path/to/search -mtime -7 -name "*.log"  # 查找目录中名字为 ".log" 或 ".txt" 的文件 find /path/to/search \( -name "*.log" -or -name "*.txt" \)  # 查找目录中文件名不包含 ".bak" 的文件 find /path/to/search -not -name "*.bak" 

通过结合多种条件和操作,find 命令可以实现几乎任何文件搜索需求,成为Linux系统中极为重要的工具。系统管理员和开发人员通过熟练掌握 find 可以有效提高工作效率,执行复杂的文件操作。

1.15 grep指令

语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:

  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
    在这里插入图片描述

1.16 zip/unzip指令

zipunzip 是Linux系统中常用的压缩和解压缩工具。它们分别用来创建和解压缩ZIP格式的压缩文件。

使用 zip 创建压缩文件

基本用法
zip [选项] 压缩文件名.zip 要压缩的文件或目录 
常用选项
  • -r:递归地压缩目录中的文件。
  • -x:排除特定文件。
  • -9:使用最佳压缩方法(范围从 -0-9,数字越大压缩比越高但速度越慢)。
  • -q:安静模式,不显示压缩过程中的信息。
  • -e:对压缩文件进行加密。
示例
  1. 压缩单个文件

    zip archive.zip file.txt 
  2. 递归压缩目录

    zip -r archive.zip directory/ 
  3. 高压缩比压缩文件

    zip -9 archive.zip file.txt 
  4. 排除目录中的某些文件

    zip -r archive.zip directory/ -x "*.tmp" 
  5. 创建加密的压缩文件

    zip -e archive.zip file.txt 

使用 unzip 解压缩文件

基本用法
unzip [选项] 压缩文件名.zip 
常用选项
  • -d:指定解压缩目录。
  • -n:若文件已存在,不覆盖。
  • -o:若文件已存在,覆盖。
  • -q:安静模式,不显示解压缩过程中的信息。
  • -l:列出压缩文件中的内容而不解压。
示例
  1. 解压缩文件到当前目录

    unzip archive.zip 
  2. 解压缩到指定目录

    unzip archive.zip -d /path/to/destination/ 
  3. 若文件已存在,不覆盖

    unzip -n archive.zip 
  4. 覆盖已存在的文件

    unzip -o archive.zip 
  5. 列出压缩文件中的内容而不解压

    unzip -l archive.zip 

结合zipunzip

你经常可能会在脚本中组合使用这两个命令。例如,你可能需要先压缩当前目录下的文件,然后在另一台机器解压缩:

# 在当前目录下创建一个压缩文件 zip -r backup.zip /path/to/data  # 传输 backup.zip 到另一台机器后,在目标机器解压 unzip backup.zip -d /path/to/extract/ 

通过熟练掌握 zipunzip 命令,你可以方便、快捷地处理文件压缩和解压缩,提高工作效率。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!