【Linux】Linux命令

Linux的目录结构

Linux的目录结构是一个层次化的文件系统结构,它提供了组织和访问文件和目录的方式。以下是Linux目录结构的主要部分及其简要描述:

  1. /(根目录)
    • 这是整个文件系统的起点。所有的文件和目录都位于根目录下或其子目录中。
  2. /bin
    • 包含基本的、用户可执行的命令(binary)。这些命令在单用户模式下也可以运行。
  3. /boot
    • 包含Linux内核和引导加载程序(如GRUB)的配置文件。这是系统启动时首先读取的目录。
  4. /dev
    • 包含设备文件,这些文件代表连接到系统的物理设备或逻辑设备。例如,/dev/sda 可能代表第一个SATA硬盘。
  5. /etc
    • 包含系统配置文件。大多数配置文件都以.conf结尾。例如,/etc/fstab 包含了文件系统挂载表,/etc/passwd 包含了用户账户信息。
  6. /home
    • 包含用户的主目录。每个用户都有一个以其用户名命名的目录,如/home/username
  7. /lib和/usr/lib
    • 包含系统库文件,这些文件是运行程序所必需的。/lib 通常包含系统启动时需要的库,而/usr/lib 包含其他库。
  8. /lost+found
    • 在某些文件系统(如ext2, ext3, ext4)中,当文件系统检查(fsck)工具修复文件系统时,它会把找不到链接的文件放到这个目录下。
  9. /media和/mnt
    • 通常用于临时挂载可移动设备或外部文件系统。/mnt 是传统的挂载点,而/media 是现代Linux发行版中更常用的,它会自动为每个挂载的设备创建一个子目录。
  10. /opt
    • 用于安装第三方软件。这个目录通常用于存储不包含在标准Linux发行版中的软件包。
  11. /proc
    • 一个虚拟文件系统,包含了内核和进程的信息。它不是存储在磁盘上的,而是由内核在内存中创建的。
  12. /root
    • root用户(超级用户)的主目录。通常与/home/root 相同,但出于安全考虑,许多系统现在将root用户的主目录放在/root
  13. /sbin
    • 包含基本的、系统管理员可执行的命令(binary)。这些命令通常用于系统维护和管理。
  14. /srv
    • 包含服务器特定的数据。例如,Web服务器可能会把网页文件放在/srv/www
  15. /sys
    • 一个虚拟文件系统,提供了访问内核对象(如设备驱动程序和模块)的接口。与/proc类似,/sys也不是存储在磁盘上的。
  16. /tmp
    • 用于存储临时文件。这些文件在系统重启时通常会被删除。
  17. /usr
    • 包含用户可读的程序和数据。/usr/bin 包含用户可执行的命令,/usr/lib 包含库文件,/usr/share 包含共享数据(如文档和图标)。
  18. /var
    • 包含经常变化的数据,如日志文件、邮件队列和数据库。例如,/var/log 包含系统日志文件,/var/spool/mail 包含用户邮件。

终端命令格式

命令基本格式

command [选项] [参数]

组成部分

  1. command:命令本身,是你希望执行的操作。例如,lscdmkdir等。
  2. 选项(options):修改命令行为的标志,通常以---开头。例如,-l-a--help等。选项可以单独使用,也可以组合使用。
  3. 参数(arguments):命令操作的对象,例如文件名、目录名或其他值。

选项的使用

  • 短选项:通常以单个-开头,后跟一个字符。例如,-l
  • 长选项:通常以两个--开头,后跟完整的单词或短语。例如,--help

选项可以组合使用。例如,ls -la等价于ls -l -a

pwg命令:查看当前目录

pwd

直接输入pwd并回车,会显示当前工作目录的绝对路径。例如:

$ pwd
/home/user

cd命令:切换文件夹

基本用法

  1. 切换到指定目录

    cd [目录路径]
    

    例如,切换到/home/user目录:

    cd /home/user
    
  2. 返回主目录

    cd ~
    

    或者仅使用cd命令:

    cd
    
  3. 返回上一级目录

    cd ..
    
  4. 返回到上一次所在的目录

    cd -
    

目录路径

  • 绝对路径:从根目录(/)开始的完整路径。

    cd /home/user/documents
    
  • 相对路径:相对于当前目录的路径。

    cd documents/reports
    

特殊符号

  • ~:代表当前用户的主目录。

    cd ~
    cd ~/documents
    
  • .:代表当前目录。

    cd .
    
  • ..:代表上一级目录。

    cd ..
    cd ../projects
    
  • -:返回上一次所在的目录。

    cd /home/user/documents
    cd /etc
    cd -  # 返回 /home/user/documents
    

ls命令:查看目录内容

基本用法

  1. 列出当前目录内容

    ls
    
  2. 列出指定目录内容

    ls [目录路径]
    

    例如,列出/home/user/documents目录内容:

    ls /home/user/documents
    

常用选项

  1. -l:使用长格式显示,提供详细信息,如权限、所有者、文件大小和修改日期。

    ls -l
    
  2. -a:显示所有文件,包括隐藏文件(以.开头的文件)。

    ls -a
    
  3. -h:与-l选项一起使用,以人类可读的格式显示文件大小(如K、M、G)。

    ls -lh
    
  4. -R:递归列出目录内容,包括所有子目录。

    ls -R
    
  5. -t:按修改时间排序,最近修改的文件排在前面。

    ls -lt
    
  6. -r:反向排序,与其他排序选项(如-t)结合使用。

    ls -ltr
    
  7. -S:按文件大小排序,最大的文件排在前面。

    ls -lS
    

显示特定类型的文件

  1. 列出特定扩展名的文件

    ls *.txt
    
  2. 列出目录中的所有文件和目录

    ls -l /path/to/directory
    
  3. 列出当前目录中所有目录

    ls -d */
    

使用通配符

文件和目录操作时非常有用。以下是对常见通配符的详细解释及其用法的表格:

通配符描述示例匹配不匹配
*匹配零个或多个任意字符*.txtfile.txt, notes.txt, a.txtfile.doc, filetxt
?匹配单个任意字符file?.txtfile1.txt, fileA.txtfile.txt, file12.txt
[abc]匹配方括号内的任意一个字符file[1-3].txtfile1.txt, file2.txt, file3.txtfile4.txt, file.txt
[!abc]匹配方括号内的任意一个字符以外的字符file[!1-3].txtfile4.txt, fileA.txtfile1.txt, file2.txt, file3.txt
[a-z]匹配指定范围内的任意一个字符file[a-z].txtfilea.txt, filem.txt, filez.txtfileA.txt, file1.txt
[!a-z]匹配指定范围以外的任意一个字符file[!a-z].txtfile1.txt, fileA.txtfilea.txt, filem.txt

注意事项

  • 颜色编码ls命令通常会对不同类型的文件使用不同的颜色编码,以便快速区分目录、文件、链接等。这是由--color选项启用的,通常默认启用。

    ls --color
    
  • 权限和所有权:使用-l选项时,会显示文件的权限和所有权信息,格式如下:

    drwxr-xr-x 2 user group 4096 Jan 01 12:00 directory_name
    
    • d表示目录,-表示文件,l表示符号链接。
    • rwxr-xr-x表示权限(读、写、执行)。
    • 2表示链接数。
    • user表示文件所有者。
    • group表示所有者的组。
    • 4096表示文件大小(字节)。
    • Jan 01 12:00表示最后修改时间。
    • directory_name表示文件或目录名称。

mkdir命令:创建文件夹

基本用法

mkdir [选项] 目录名

常见选项

  1. -p:创建父目录。如果指定的路径中包含不存在的父目录,-p选项会一并创建这些父目录。

    mkdir -p /path/to/new/directory
    

    如果/path/to/new不存在,此命令会创建/path/to/new/path/to/new/directory

  2. -v:显示详细信息。创建目录时,显示每个创建的目录的名称。

    mkdir -v new_directory
    
  3. -m:设置目录的权限。使用指定的权限创建目录。

    mkdir -m 755 new_directory
    

    755是一个权限掩码,表示所有者有读、写、执行权限,组和其他用户有读、执行权限。

权限说明

权限掩码由三部分组成,每部分各占三位:

  • 第一部分:所有者权限
  • 第二部分:组权限
  • 第三部分:其他用户权限

每部分权限值:

  • 4:读权限(r)
  • 2:写权限(w)
  • 1:执行权限(x)

例如,755表示:

  • 所有者:读、写、执行(4+2+1=7)
  • 组:读、执行(4+1=5)
  • 其他用户:读、执行(4+1=5)

注意事项

  • 如果尝试创建一个已存在的目录,mkdir会返回一个错误。使用-p选项可以避免此问题。
  • 权限设置取决于系统的umask值,它会影响新创建目录的默认权限。可以使用umask命令查看或设置。

touch命令:创建文件

基本用法

touch [选项] 文件名

常见选项

  1. 创建新文件

    如果文件不存在,touch会创建一个新的空文件:

    touch filename
    

    如果文件已存在,touch不会改变文件内容,只会更新文件的访问和修改时间。

  2. -a:只更新访问时间(access time)。

    touch -a filename
    
  3. -m:只更新修改时间(modification time)。

    touch -m filename
    
  4. -c或**–no-create**:如果文件不存在,不创建新文件,只更新已有文件的时间戳。

    touch -c filename
    
  5. -t:使用指定的时间戳,格式为[[CC]YY]MMDDhhmm[.ss]

    touch -t 202306281230.45 filename
    

    这会将文件的时间戳设置为2023年6月28日12:30:45。

  6. -d:使用指定的日期和时间,格式可以是多种形式。

    touch -d "2023-06-28 12:30:45" filename
    
  7. -r:使用参考文件的时间戳。

    touch -r reference_file filename
    

    这会将filename的时间戳设置为与reference_file相同。

时间戳解释

  • 访问时间(atime):文件最后一次被读取的时间。
  • 修改时间(mtime):文件内容最后一次被修改的时间。
  • 状态改变时间(ctime):文件元数据(如权限、所有者)最后一次被改变的时间。

rm命令:删除

基本用法

rm [选项] 文件或目录

常见选项

  1. 删除单个文件

    rm filename
    
  2. -i:交互模式,在删除每个文件之前提示确认。

    rm -i filename
    
  3. -f:强制删除文件或目录,忽略不存在的文件,不提示确认。

    rm -f filename
    
  4. -r 或 -R:递归删除目录及其内容。

    rm -r directory
    rm -R directory
    
  5. -d:删除空目录。

    rm -d empty_directory
    
  6. -v:详细模式,显示删除的每个文件或目录。

    rm -v filename
    

注意事项

  • 危险性rm命令非常强大且危险,特别是使用-r-f选项时,可能会永久删除重要文件和目录。请务必小心使用,确保删除的是正确的文件或目录。
  • 不可恢复性:删除的文件通常无法恢复,除非使用专门的文件恢复工具。因此,使用rm命令前请确认备份重要数据。
  • 权限:删除文件或目录时需要有相应的权限,否则会提示权限错误。
  • 交互模式:对于批量删除操作,建议使用-i选项,防止误删。

cp命令:拷贝

基本用法

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录

常见选项

  1. -a:归档模式,递归复制,并保留所有文件属性,等同于-dR --preserve=all

    cp -a source_directory destination_directory
    
  2. -i:交互模式,如果目标文件存在,提示确认后再覆盖。

    cp -i source_file destination_file
    
  3. -r或**-R**:递归复制目录及其内容。

    cp -r source_directory destination_directory
    
  4. -f:强制复制,删除无法打开的目标文件。

    cp -f source_file destination_file
    
  5. -u:仅在源文件较新或目标文件不存在的情况下进行复制。

    cp -u source_file destination_file
    
  6. -v:详细模式,显示复制过程中的文件名。

    cp -v source_file destination_file
    
  7. -p:保留文件属性(如修改时间、所有者、权限)。

    cp -p source_file destination_file
    
  8. –preserve:保留指定的属性,可以是modeownershiptimestampslinksxattrall

    cp --preserve=mode,ownership source_file destination_file
    

注意事项

  • 覆盖警告cp命令默认会覆盖目标文件而不提示。因此,使用-i选项可以避免意外覆盖重要文件。
  • 权限:复制操作需要相应的读写权限,特别是在涉及系统文件或其他用户文件时。
  • 符号链接:如果需要复制符号链接本身而不是其指向的文件,可以使用-d选项(在某些系统上需要使用--preserve=links)。

mv命令:移动、重命名

基本用法

mv [选项] 源文件或目录 目标文件或目录

常见选项

  1. -i:交互模式,如果目标文件已存在,则在移动前提示确认。

    sh
    复制代码
    mv -i source_file.txt destination_file.txt
    
  2. -f:强制移动,覆盖目标文件而不提示确认。

    mv -f source_file.txt destination_file.txt
    
  3. -v:详细模式,显示移动的每个文件名。

    mv -v source_file.txt destination_file.txt
    

注意事项

  • 权限:移动操作需要适当的读写权限,特别是在移动系统文件或其他用户文件时。
  • 覆盖警告:默认情况下,mv命令会直接覆盖目标文件。使用-i选项可以避免意外覆盖重要文件。
  • 原子性mv命令是原子操作,即文件在移动过程中不会在源路径和目标路径之间存在副本。

cat命令:查看文件内容

基本用法

cat [选项] 文件

常见选项

  1. -n:显示行号,将文件内容与行号一起输出。

    cat -n filename
    
  2. -b:显示行号,仅对非空行进行编号。

    cat -b filename
    
  3. -E:在每行末尾显示行尾符号$

    cat -E filename
    
  4. -T:显示制表符为^I

    cat -T filename
    
  5. -A:等同于-vET,显示所有控制字符。

    cat -A filename
    

使用管道和重定向

将cat与管道结合使用

  • 显示文件内容并通过管道传递给其他命令

    cat filename | grep "pattern"
    

    filename文件的内容传递给grep命令进行模式匹配。

将cat的输出重定向到文件

  • 将cat的输出写入新文件

    cat filename > newfile
    

    filename文件的内容输出到newfile文件中。

  • 追加cat的输出到现有文件

    cat filename >> existingfile
    

    filename文件的内容追加到existingfile文件的末尾。

注意事项

  • 大文件处理:对于大文件,cat命令可能会将整个文件内容一次性读取到内存中,因此在处理大文件时需要注意内存消耗。
  • 文件格式cat命令默认将文件内容直接输出,不会解析或格式化文本内容。
  • 权限:执行cat命令需要有相应的文件读取权限。

more命令:查看文件内容

more 文件名

功能和特点

  1. 逐页显示more 命令将文本文件的内容分页显示在终端上,每次显示一屏的内容。
  2. 交互控制:可以使用键盘控制来浏览文件,如向下翻页、向上翻页、跳至文件开头或结尾等。
  3. 显示文件位置:在文件的末尾显示提示,指示当前文件的页数和剩余未显示的行数。

使用示例

  • 查看文件内容

    more filename.txt
    

    这将以一页一页的方式显示 filename.txt 文件的内容。可以使用空格键来向下翻页,使用 b 键来向上翻页。

  • 常用键盘命令

    • 空格键:向下滚动一页。
    • Enter 键:向下滚动一行。
    • b 键:向上滚动一页。
    • q 键:退出 more 命令,返回到命令行提示符。
  • 显示当前位置

    在文件内容的底部显示当前页数和剩余行数,如:

    (END) -- 列出更多 --
    

高级选项

more 命令的行为可以通过一些选项进行定制:

  • -d 选项:显示指导信息,提示如何使用 more 命令的交互控制键。

    more -d filename.txt
    
  • -num 选项:指定每页显示的行数。

    more -10 filename.txt   # 每页显示10行
    
  • +num 选项:从文件的第 num 行开始显示。

    more +50 filename.txt   # 从第50行开始显示
    

注意事项

  • 不支持编辑more 命令只能用于查看文件内容,不能用来编辑或保存文件。
  • 适用范围:适合查看较大的文本文件,避免一次性在屏幕上显示过多内容。
  • 与其他命令结合使用:可以将 more 命令与管道 | 结合,将其他命令的输出逐页查看。

重定向

基本重定向符号

  1. >:输出重定向,将命令的标准输出发送到文件,会覆盖文件原有内容。

    command > file.txt
    
    • 将命令 command 的输出写入 file.txt 文件中,如果文件已存在,则覆盖原有内容。
  2. >>:追加重定向,将命令的标准输出追加到文件末尾。

    command >> file.txt
    
    • 将命令 command 的输出追加到 file.txt 文件末尾,保留原有内容并在其后添加新内容。
  3. <:输入重定向,将文件内容作为命令的标准输入。

    command < file.txt
    
    • file.txt 文件的内容作为 command 命令的输入。

特殊用途和技巧

/dev/null:丢弃输出或输入

command > /dev/null   # 将命令输出丢弃
command < /dev/null   # 将空输入提供给命令
  • /dev/null 是一个特殊的设备文件,当将输出或输入重定向到它时,会将数据丢弃,用于忽略不需要的信息或提供空输入给命令。

注意事项

  • 权限和路径:确保文件的读写权限和正确的路径。
  • 覆盖和追加:使用 >>> 时要注意是否要覆盖或追加文件内容。
  • 错误重定向:标准错误重定向可以使用 2> 符号,例如 command 2> error.log 将命令的错误输出写入 error.log 文件中。

管道

基本语法

管道使用竖线 | 将两个或多个命令连接起来,形成数据流的传输路径:

command1 | command2 | command3 ...

基本示例

  • 将命令的输出传递给另一个命令

    ls -l | grep ".txt"
    
    • ls -l 命令的输出(当前目录下的文件列表及其详细信息)传递给 grep 命令,过滤出包含 .txt 的文件名。

结合多个命令

  • 结合多个命令进行复杂操作

    cat file.txt | grep "pattern" | sort | uniq > result.txt
    
    • file.txt 文件的内容传递给 grep 命令,搜索包含 "pattern" 的行,然后将结果通过管道传递给 sort 命令进行排序,最后使用 uniq 命令去重,将最终结果保存到 result.txt 文件中。

管道与循环结合使用

  • 使用循环和管道处理文件列表

    for file in *.txt; do
        cat "$file" | grep "keyword" | wc -l
    done
    
    • 对当前目录下所有 .txt 文件,逐个读取文件内容,通过管道传递给 grep 命令搜索包含 "keyword" 的行,并使用 wc -l 命令统计匹配行数。

注意事项

  • 数据流顺序:管道传递数据是按照命令的顺序依次处理的,确保命令的顺序和逻辑正确。
  • 错误处理:如果需要处理命令的错误输出,可以使用重定向符号 2> 将标准错误流导入管道中。
  • 性能影响:管道可以提高系统的效率和灵活性,但过多复杂的管道可能会降低执行效率,尤其是在处理大量数据时需要注意。

软链接

特点

  • 引用类型:软链接是指向文件或目录的路径名,类似于快捷方式。
  • 跨文件系统:可以跨越不同的文件系统或分区。
  • 独立存在:软链接可以存在于目标文件或目录被删除或移动后,变成“断开的链接”。
  • 权限影响:软链接本身没有权限,但它指向的目标文件或目录的权限会影响对其的访问。

创建软链接

  • 基本语法

    ln -s 源文件 目标链接
    
  • 示例

    ln -s /path/to/original/file /path/to/symlink
    
    • 创建一个软链接 symlink,指向 /path/to/original/file

管理软链接

  • 删除软链接

    rm /path/to/symlink
    
    • 只删除软链接,不影响目标文件或目录。
  • 列出软链接

    ls -l /path/to/symlink
    
    • 显示软链接的信息和它指向的目标文件或目录。

硬链接

特点

  • 引用类型:硬链接是指向同一个物理文件数据的多个引用,每个硬链接在文件系统中都看作是一个独立文件。
  • 同一文件系统:必须在同一文件系统或分区内创建硬链接。
  • 数据共享:所有硬链接共享同一数据块,任何一个硬链接的更改会影响所有链接。
  • 不易删除:只有当所有硬链接都被删除时,文件数据才会从文件系统中删除。

创建硬链接

  • 基本语法

    ln 源文件 目标链接
    
  • 示例

    ln /path/to/original/file /path/to/hardlink
    
    • 创建一个硬链接 hardlink,指向 /path/to/original/file

管理硬链接

  • 删除硬链接

    rm /path/to/hardlink
    
    • 只删除硬链接,文件数据仍然存在于其他硬链接中。
  • 列出硬链接

    ls -l /path/to/hardlink
    
    • 显示硬链接的信息,包含相同的inode号。

比较软链接和硬链接

特性软链接硬链接
引用类型指向路径名指向文件数据
跨文件系统可以不可以
删除目标软链接变成“断开的链接”文件数据仍存在
符号显示l(符号链接)普通文件(相同inode号)
创建命令ln -sln

使用场景

  • 软链接

    • 跨文件系统或分区链接文件或目录

    • 创建配置文件的快捷方式,如将常用的配置文件链接到一个统一目录。

    • 引用动态变化的文件或目录,如链接到最新版本的日志文件或软件包。

  • 硬链接

    • 在同一文件系统中节省存储空间,通过多个引用共享同一数据块。

    • 确保文件数据的持久性,即使删除一个硬链接,数据仍然存在于其他硬链接中。

    • 实现多个文件名指向同一个文件数据,方便管理和访问。

通过理解软链接和硬链接的特点和用法,可以更高效地组织和管理文件系统,满足不同的需求。

grep命令:查找文件内容

基本语法

grep [选项] 模式 [文件...]

常见选项

  1. -i:忽略大小写差异。

    grep -i "pattern" file.txt
    
  2. -v:反转匹配,只显示不匹配模式的行。

    grep -v "pattern" file.txt
    
  3. -r-R:递归搜索目录下的所有文件。

    grep -r "pattern" /path/to/directory
    
  4. -l:只显示包含匹配模式的文件名。

    grep -l "pattern" *.txt
    
  5. -n:显示匹配行的行号。

    grep -n "pattern" file.txt
    
  6. -c:只显示匹配的行数。

    grep -c "pattern" file.txt
    
  7. -A num:显示匹配行以及之后的 num 行。

    grep -A 3 "pattern" file.txt
    
  8. -B num:显示匹配行以及之前的 num 行。

    grep -B 3 "pattern" file.txt
    
  9. -C num:显示匹配行以及前后各 num 行。

    sh
    复制代码
    grep -C 3 "pattern" file.txt
    
  10. -e:使用多个模式。

    grep -e "pattern1" -e "pattern2" file.txt
    
  11. -E:使用扩展正则表达式。

    grep -E "pattern1|pattern2" file.txt
    
  12. -F:使用固定字符串(不解析正则表达式)。

    grep -F "pattern" file.txt
    
  13. -P:使用 Perl 兼容正则表达式。

    grep -P "pattern" file.txt
    

与其他命令结合使用

  • 管道和重定向

    dmesg | grep "error"
    
    • 通过管道将 dmesg 命令的输出传递给 grep,搜索包含 "error" 的行。

注意事项

  • 区分大小写:默认情况下,grep 是区分大小写的。使用 -i 选项可以忽略大小写。
  • 正则表达式:理解正则表达式的语法和规则可以充分发挥 grep 的强大功能。
  • 文件编码:确保文件的编码格式正确,避免字符集和编码问题导致的匹配错误。

find命令:查找文件

基本语法

find [起始目录] [搜索条件] [操作]

常见选项和条件

  1. -name:按名称搜索文件或目录。

    find /path/to/start -name "filename"
    
  2. -iname:按名称搜索(忽略大小写)。

    find /path/to/start -iname "filename"
    
  3. -type:按类型搜索。

    • f:文件
    • d:目录
    • l:符号链接
    find /path/to/start -type f
    
  4. -size:按大小搜索。

    find /path/to/start -size +100M   # 大于100MB的文件
    find /path/to/start -size -100M   # 小于100MB的文件
    
  5. -mtime:按修改时间搜索。

    • -n:在n天内修改过
    • +n:n天前修改过
    find /path/to/start -mtime -7   # 最近7天内修改过的文件
    
  6. -atime:按访问时间搜索。

    find /path/to/start -atime -7   # 最近7天内访问过的文件
    
  7. -ctime:按状态更改时间搜索。

    find /path/to/start -ctime -7   # 最近7天内状态更改过的文件
    
  8. -perm:按权限搜索。

    find /path/to/start -perm 755
    
  9. -user:按所有者搜索。

    find /path/to/start -user username
    
  10. -group:按用户组搜索。

    find /path/to/start -group groupname
    
  11. -exec:对搜索结果执行指定命令。

    find /path/to/start -name "filename" -exec rm {} \;
    

高级用法

多条件组合:使用 -and-or 组合条件

find /home/user \( -name "*.txt" -or -name "*.md" \) -and -size +10k
  • /home/user 目录及其子目录中搜索名称以 .txt.md 结尾且大小大于10KB的文件。

搜索结果的反向操作:排除特定模式的文件

find /home/user -not -name "*.bak"
  • /home/user 目录及其子目录中搜索不以 .bak 结尾的文件。

注意事项

  • 性能影响find 命令在大型文件系统中执行时可能较慢,特别是递归搜索时。可以通过限定搜索范围和条件来提高效率。
  • 权限问题:确保具有足够的权限来访问和操作搜索路径中的文件和目录。
  • 复杂命令组合:在使用复杂的条件组合和操作时,建议先进行测试,确保命令的正确性和预期效果。

tar命令:归档、打包

基本语法

tar [选项] [归档文件] [文件或目录...]

常见选项

  1. -c:创建一个新的归档文件。

    tar -cvf archive.tar file1 file2
    
  2. -x:解压缩一个归档文件。

    tar -xvf archive.tar
    
  3. -t:列出归档文件的内容。

    tar -tvf archive.tar
    
  4. -v:显示详细信息。

    tar -cvf archive.tar file1 file2
    
  5. -f:指定归档文件名。

    tar -cvf archive.tar file1 file2
    
  6. -z:通过 gzip 压缩或解压缩归档文件。

    tar -czvf archive.tar.gz file1 file2
    tar -xzvf archive.tar.gz
    
  7. -j:通过 bzip2 压缩或解压缩归档文件。

    tar -cjvf archive.tar.bz2 file1 file2
    tar -xjvf archive.tar.bz2
    
  8. -J:通过 xz 压缩或解压缩归档文件。

    tar -cJvf archive.tar.xz file1 file2
    tar -xJvf archive.tar.xz
    
  9. -C:切换到指定目录。

    tar -xvf archive.tar -C /path/to/directory
    

高级选项

  1. --exclude:排除指定文件或目录。

    tar -cvf archive.tar --exclude='*.log' dir1
    
    • 创建一个 tar 归档文件 archive.tar,但排除所有 .log 文件。
  2. -p:保留文件权限。

    tar -xvpf archive.tar
    
    • 解压 archive.tar,并保留文件的权限设置。
  3. --remove-files:打包后删除原文件。

    tar -cvf archive.tar file1 file2 --remove-files
    
    • 创建一个 tar 归档文件 archive.tar,然后删除 file1file2
  4. -P:保留绝对路径。

    tar -cvf archive.tar /absolute/path/to/file
    
    • 保留文件的绝对路径。

注意事项

  • 权限和路径:确保你有权限访问和修改要打包或解压的文件和目录,并指定正确的路径。
  • 压缩格式:选择适当的压缩格式(gzip、bzip2、xz)来平衡压缩率和解压速度。
  • 排除选项:使用 --exclude 选项排除不需要的文件,减少归档文件的大小。

gzip命令:压缩、解压

基本语法

gzip [选项] [文件...]

常见选项

  1. -d--decompress--uncompress:解压缩文件。

    gzip -d filename.gz
    
  2. -c--stdout--to-stdout:将输出结果发送到标准输出,不改变原始文件。

    gzip -c file > file.gz
    gzip -dc file.gz > file
    
  3. -k--keep:保留原始文件。

    gzip -k file
    
  4. -l--list:显示压缩文件的压缩信息。

    gzip -l file.gz
    
  5. -r--recursive:递归压缩目录中的文件。

    gzip -r directory
    
  6. -t--test:测试压缩文件的完整性。

    gzip -t file.gz
    
  7. -1-9:设置压缩级别,-1 表示最快速度(压缩率最低),-9 表示最慢速度(压缩率最高)。默认压缩级别是 -6

    gzip -1 file
    gzip -9 file
    
  8. -v--verbose:显示详细信息。

    gzip -v file
    
  9. --help:显示帮助信息并退出。

    gzip --help
    
  10. --version:显示版本信息并退出。

    gzip --version
    

bzip2命令:压缩、解压

基本语法

sh
复制代码
bzip2 [选项] [文件...]

常见选项

  1. -d--decompress--uncompress:解压缩文件。

    bzip2 -d filename.bz2
    
  2. -k--keep:保留原始文件。

    bzip2 -k file
    
  3. -c--stdout--to-stdout:将输出结果发送到标准输出,不改变原始文件。

    bzip2 -c file > file.bz2
    bzip2 -dc file.bz2 > file
    
  4. -z:压缩文件(默认行为)。

    bzip2 -z file
    
  5. -v--verbose:显示详细信息。

    bzip2 -v file
    
  6. -f--force:强制覆盖现有文件。

    bzip2 -f file
    
  7. -t--test:测试压缩文件的完整性。

    bzip2 -t file.bz2
    
  8. -1-9:设置压缩级别,-1 表示最快速度(压缩率最低),-9 表示最慢速度(压缩率最高)。默认压缩级别是 -9

    bzip2 -1 file
    bzip2 -9 file
    
  9. --help:显示帮助信息并退出。

    bzip2 --help
    
  10. --version:显示版本信息并退出。

    bzip2 --version
    

注意事项

  • 文件扩展名bzip2 会将压缩文件的扩展名改为 .bz2。如果你想要解压缩一个文件,确保文件的扩展名是 .bz2
  • 压缩率和速度:压缩级别选项(-1-9)允许你在压缩速度和压缩率之间进行权衡。默认压缩级别是 -9,表示最高压缩率。
  • 兼容性bzip2 创建的压缩文件通常可以使用其他支持 bzip2 格式的工具解压缩,如 bunzip2bzip2recover

zip命令:压缩、解压

基本语法

zip [选项] 压缩文件.zip 文件或目录...

常见选项

  1. -r:递归地压缩目录及其内容。

    zip -r archive.zip directory
    
  2. -u:更新已存在的压缩文件,只添加新文件或已更新的文件。

    zip -u archive.zip file1.txt
    
  3. -d:从压缩文件中删除指定的文件。

    zip -d archive.zip file1.txt
    
  4. -m:将文件移动(而不是复制)到压缩文件,并删除原始文件。

    zip -m archive.zip file1.txt
    
  5. -j:仅存储文件,不存储目录路径。

    zip -j archive.zip directory/file1.txt
    
  6. -l:显示压缩文件的详细信息。

    zip -l archive.zip
    
  7. -v:显示操作过程中的详细输出。

    zip -v archive.zip file1.txt
    
  8. -q:安静模式,不显示操作过程中的输出。

    zip -q archive.zip file1.txt
    
  9. -T:测试压缩文件的完整性。

    zip -T archive.zip
    
  10. -1-9:设置压缩级别,-1 表示最快速度(压缩率最低),-9 表示最慢速度(压缩率最高)。默认压缩级别是 -6

    zip -9 archive.zip file1.txt
    
  11. --help:显示帮助信息并退出。

    zip --help
    
  12. --version:显示版本信息并退出。

    zip --version
    

注意事项

  • 加密安全性:建议使用 -e 选项而不是 -P 选项来添加密码保护,因为使用 -P 可能会在系统日志中留下明文密码的记录。
  • 文件名大小写:在Unix/Linux系统中,zip 命令默认区分文件名的大小写。在压缩和解压缩时,请注意文件名的精确性。
  • 权限和所有权:压缩和解压缩文件时,请注意文件和目录的权限和所有权,特别是当使用 sudo 或其他管理员权限时。

which命令:命令位置

基本语法

which [选项] 命令名

示例和用法

  1. 查找命令的路径

    which ls
    
    • 这会显示 ls 命令的路径,通常是 /bin/ls 或类似的路径。
  2. 查找系统中是否存在某个命令

    which python
    
    • 这会显示 python 可执行文件的路径,如果 python 在系统路径中可执行,则显示其完整路径,否则不显示任何输出。
  3. 显示所有匹配的命令路径

    which -a python
    
    • 如果系统中有多个与 python 相关的可执行文件,这会显示所有匹配的路径。

选项

  • -a--all:显示所有匹配的路径,而不仅仅是第一个。

    which -a python
    
  • -s--skip-alias:跳过别名(不显示通过别名定义的命令)。

    which -s ls
    
  • -p--all:指定搜索路径(以冒号分隔的路径列表)。

    which -p ls
    
  • --version:显示 which 命令的版本信息。

    which --version
    
  • --help:显示 which 命令的帮助信息。

    which --help
    

注意事项

  • 路径变量which 命令依赖于系统的路径变量($PATH 环境变量),它会在路径变量指定的目录中搜索命令。
  • 别名和函数which 命令默认情况下会显示命令的路径,如果命令是通过别名或函数定义的,则可能不会显示任何输出。可以使用 -a 选项显示所有匹配的路径,包括别名和函数。

su命令:切换用户

基本语法

sh
复制代码
su [选项] [用户名]

示例和用法

  1. 切换到超级用户(管理员)账户

    su
    
    • 这会要求输入超级用户(root)的密码,成功验证后,当前用户将切换为超级用户,即 root 用户。默认情况下,没有指定用户名时,su 命令会尝试切换到超级用户账户。
  2. 切换到其他用户账户

    su username
    
    • 这会要求输入 username 用户的密码,验证成功后,当前用户将切换到 username 用户的身份。用户需要输入目标用户的密码来进行验证。
  3. 使用 - 选项切换完整环境

    su -
    

    或者

    su - username
    
    • 使用 - 选项会使 su 命令以目标用户的环境变量启动新的 shell 会话。这对于需要使用目标用户完整环境的情况很有用,包括路径、别名和其他环境设置。
  4. 切换到超级用户并执行命令

    su -c "command"
    
    • 这会以超级用户的身份执行指定的命令,而不需要交互式输入密码。

选项

  • -c command:在切换用户后执行指定的命令。

    su -c "ls /root"
    
  • -l--login:以目标用户的登录 shell 启动新会话,加载其完整的环境设置。

    su -l username
    
  • -m--preserve-environment:保持当前环境变量,不更改到目标用户的环境变量。

    su -m username
    
  • -s shell--shell shell:使用指定的 shell 执行 su 命令,默认是 /bin/sh

    su -s /bin/bash username
    

注意事项

  • 密码安全性:切换用户时,需要输入目标用户的密码。确保不要在非安全环境下输入密码,尤其是在共享或公共计算机上。
  • 权限管理su 命令通常需要超级用户(root)的密码才能成功切换到该用户账户。使用时要谨慎,以免误操作或错误使用导致系统问题。
  • 命令执行:使用 -c 选项可以方便地以其他用户的身份执行特定命令,适用于需要特定权限的临时任务。

password命令:密码操作

基本语法

passwd [选项] [用户名]

常见选项

  • -l:锁定用户账户,禁止登录。
  • -u:解锁用户账户,允许登录。
  • -d:删除密码,允许空密码登录。
  • -e:强制用户在下次登录时更改密码。

chmod命令:权限修改

基本语法

chmod [选项] 模式 文件或目录...

常见选项

  • -c:显示每个修改的文件的操作信息。
  • -f:在权限更改时不显示错误消息。
  • -v:显示详细的权限更改信息。

符号模式

符号模式通过符号来表示权限的增减和设定:

  • 设定权限
    • u:所有者(user)
    • g:所属组(group)
    • o:其他用户(others)
    • a:所有用户(all),等同于 ugo
  • 操作符
    • +:添加权限
    • -:移除权限
    • =:设定权限为指定的模式
  • 权限
    • r:读权限(4)
    • w:写权限(2)
    • x:执行权限(1)

示例:

# 将 file.txt 的所有者添加写权限
chmod u+w file.txt

# 将 file.txt 的所属组和其他用户移除执行权限
chmod go-x file.txt

# 将 file.txt 的所有权限设为 rw-r--r--
chmod a=rw file.txt

# 给 file.txt 的所有者添加读写权限,并显示操作信息
chmod -v u+rw file.txt

数字模式

数字模式使用三个八进制数字来表示权限:

  • 第一个数字:所有者的权限
  • 第二个数字:所属组的权限
  • 第三个数字:其他用户的权限

每个数字由 0 到 7 组成,分别对应以下权限:

  • 0:没有权限
  • 1:执行权限
  • 2:写权限
  • 3:写和执行权限
  • 4:读权限
  • 5:读和执行权限
  • 6:读和写权限
  • 7:读、写和执行权限

示例:

# 将 file.txt 的所有者权限设为 rw-, 所属组权限设为 r--, 其他用户权限设为 r--
chmod 644 file.txt

# 将 directory 的所有者权限设为 rwx, 所属组权限设为 rx, 其他用户权限设为 x
chmod 755 directory

注意事项

  • 权限数字模式:数字模式中的三个数字分别代表文件所有者、所属组和其他用户的权限。例如,644 表示文件所有者具有读写权限,而所属组和其他用户只有读权限。
  • 递归操作:如果操作对象是目录,则使用 -R 选项递归地修改其所有子目录和文件的权限。
  • 权限安全性:修改权限时要谨慎,确保文件和目录只开放必要的最小权限以防止安全风险。

exit命令:退出

exit 命令用于退出当前的 shell 会话或者关闭当前的终端窗口。在多个 shell 会话或者终端窗口中,执行 exit 命令会关闭当前的会话或窗口。没有额外的选项或参数。

who命令:登录信息

who 命令用于显示当前登录系统的用户信息。它显示登录用户的用户名、终端编号、登录时间等。常用的选项有 -q-a,分别用于显示登录用户的数量和详细信息。

基本语法

who [选项]

常见选项

  • -q:显示登录用户的数量。
  • -a:显示详细信息,包括登录时间、IP地址等。

reboot命令:重启

基本语法

reboot

shutdown 命令:定时关机

基本语法

shutdown [选项] 时间

常见选项

  • -h:关机后停止电源。
  • -r:关机后重启系统。

apt命令*:包管理

apt 命令是在基于 Debian 的 Linux 发行版(如 Ubuntu、Debian 等)中用于包管理的高级工具。它提供了一个简洁而强大的接口,用于安装、升级、删除和管理软件包及其依赖关系。以下是对 apt 命令的详细解释和使用方法:

基本语法

apt [选项] 命令

安装软件包

apt install 软件包1 软件包2 ...
  • 示例
apt install nginx            # 安装 nginx 软件包
apt install python3-pip      # 安装 Python 3 的 pip 工具
  • 选项
    • -y, --yes:自动回答 “yes” 所有提示,无需用户确认安装。
    • -f, --fix-broken:修复安装过程中出现的依赖问题。

更新软件包列表

apt update
  • 示例
apt update     # 更新可用软件包的列表
  • 选项

升级已安装的软件包

apt upgrade
  • 示例
apt upgrade    # 升级所有已安装软件包到最新版本
  • 选项
    • -y, --yes:自动回答 “yes” 所有提示,无需用户确认升级。

删除软件包

apt remove 软件包
  • 示例
apt remove nginx      # 卸载 nginx 软件包,保留配置文件
  • 选项
    • -y, --purge:卸载软件包并删除其配置文件。

搜索软件包

apt search 关键词
  • 示例
apt search mysql      # 搜索包含 "mysql" 关键词的软件包
  • 选项

显示软件包信息

apt show 软件包
  • 示例
sh
复制代码
apt show nginx        # 显示 nginx 软件包的详细信息
  • 选项

清理无用的软件包

apt autoremove
  • 示例
apt autoremove        # 清理系统中不再需要的无用软件包
  • 选项

列出可用的软件源

apt list --installed
  • 示例
apt list --installed  # 列出所有已安装的软件包
  • 选项
    • --all-versions:显示所有可用版本的软件包信息。

注意事项

  • 权限:执行 apt 命令通常需要管理员权限(使用 sudo 或者作为 root 用户登录)。
  • 更新频率:定期执行 apt update 来更新软件包列表,以便获取最新的软件包信息。
  • 谨慎操作:在删除或卸载软件包时,特别是使用 purge 选项时要小心,确保不删除必要的文件或配置。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值