1. Linux的终端与工作区
1.1 终端概述
Linux操作体系通常提供多个终端,用户可以在这些终端之间切换,以实现多使命处理。常见的终端分别如下:
- tty1 到 tty6:这些是命令行控制台终端,通常在没有图形界面时利用,每个终端都是独立的工作情况。
- tty7:这个终端通常是图形用户界面(GUI),如GNOME、KDE等图形化桌面情况。
1.2 切换终端
- 切换终端:用户可以通过按 Alt + F1 到 Alt + F6 来切换差别的命令行终端。这对于多使命处理非常有用,尤其在必要监控多个使命或会话时。
- 从图形界面切换到命令行终端:按 Ctrl + Alt + F1 到 Ctrl + Alt + F6 可以跳到一个命令行终端。在图形界面下可以通过 Ctrl + Alt + F7 切换回图形情况。
这种终端管理方式有助于在没有图形界面的情况下进行体系管理,大概在资源受限的情况下实行一些体系使命。
2. Shell语言解释器
2.1 Shell概述
Shell是用户与Linux体系之间的命令语言解释器,主要用于实行命令并与操作体系内核交互。最常见的Shell是Bash(Bourne Again Shell),它具有以下特性:
- 命令自动补齐:Bash允许通过按 Tab 键来自动补全命令和文件名,极大进步了命令输入的服从。
- 历史记录:Bash会保存用户输入的命令历史,用户可以通过上下箭头欣赏和重新实行之前的命令。
- 别名:用户可以为常用命令设置别名,简化常见操作。例如,设置 alias ll='ls -l' 可以让 ll 等同于 ls -l。
- 输入输出重定向和管道:可以将命令的输出重定向到文件或通过管道将一个命令的输出传递给另一个命令。例如:ls | grep "txt" 通过管道将 ls 命令的输出传递给 grep 命令。
- 通配符:Bash支持多种通配符,如 * 匹配恣意字符,? 匹配单个字符,[] 匹配指定范围的字符,增强了文件名和目录匹配功能。
这些特性让用户能更高效地与体系交互,实行复杂的命令使命。
3. 用户登录与身份切换
3.1 su 命令
su(Switch User)命令用于切换到指定的用户账户,特殊是切换到root账户,以获取更高的权限。其根本格式为:
- su [-lm] [-c command] username
复制代码
- -l:模仿用户登录情况,通常用于切换到root账户时利用。
- -m:保留当前情况变量(常用于保留用户的情况)。
- -c:实行指定的命令。
3.2 sudo 命令
sudo(SuperUser Do)命令允许平凡用户在输入自己密码后,以root权限实行命令,而不必要知道root账户的密码。sudo可以增加安全性并限制root权限的利用。格式为:
- -u user:指定实行命令的用户(默认为root)。
- command:要实行的命令。
与su差别,sudo命令仅授予用户在特定情况下实行特权命令的权限,淘汰了滥用root权限的风险。
4. 文件、目录操作命令
4.1 pwd
命令
pwd
(Print Working Directory)命令用于表现当前工作目录的绝对路径。常用格式:
- -P 参数:表现实际路径,避免符号链接路径的干扰。
4.2 cd 命令
cd(Change Directory)命令用于更改当前工作目录。常见用法包罗:
- cd ~:进入用户的主目录(即 /home/username)。
- cd -:返回上一个访问的目录。
- cd ..:进入上一级目录。
- cd ../..:进入上两级目录。
4.3 ls 命令
ls(List)命令用于列出目录中的文件和子目录。常用选项包罗:
- -a:列出所有文件(包罗隐藏文件,即以.开头的文件)。
- -l:以长格式列出文件信息,包罗文件的权限、所有者、大小、修改时间等。
- ls -l == ll;
- -F:在文件名后添加标识符,表示文件类型(如目录后加 /,可实行文件后加 *)。
- -R:递归列出目录及其所有子目录的内容。
- -t:按文件的修改时间排序,近来修改的文件排在前面。
4.3.1 ls 指令叠加利用
- ls -al | more :命令会列出当前目录下的所有文件(包罗隐藏文件),并利用长格式表现它们的详细信息,然后通过 more 命令分页表现这些信息。如许,当目录中文件许多时,你可以逐页查看输出,而不会一次性表现所有内容。
4.4 mkdir 命令
mkdir(Make Directory)命令用于创建目录。常用选项包罗:
- -m:指定目录的权限。
- -p:递归创建多级目录,例如 mkdir -p /path/to/directory 可以一次性创建多个目录。
4.5 rmdir 命令
rmdir(Remove Directory)命令用于删除空目录。常用选项包罗:
- -p:递归删除父目录,只有在目录为空时才能删除。
- -v:表现删除过程。
4.6 cp 命令
cp(Copy)命令用于复制文件或目录。常用选项包罗:
- -f:强制覆盖目的文件。
- -i:在覆盖文件时进行提示。
- -R:递归复制目录及其内容。
- -b:备份已存在的目的文件。
- -a:保持文件的原有属性(包罗权限、时间戳等)。
4.7 rm 命令
rm(Remove)命令用于删除文件或目录。常用选项包罗:
- -d:删除空目录。
- -f:强制删除,不提示确认。
- -r 或 -R:递归删除目录及其内容。
- -v:表现删除过程。
4.8 mv 命令
mv(Move)命令用于移动或重定名文件。常用选项包罗:
- -b:在覆盖目的文件之前备份文件。
- -f:强制覆盖目的文件。
- -i:在覆盖文件时进行确认。
- -u:仅当源文件比目的文件新时,才实行覆盖
这里 aa就被重定名为ab了
4.9 cat 命令
cat(Concatenate)命令用于表现文件内容、创建文件或合并多个文件。常用选项包罗:
- -n:为输出的每行加上行号。
带行号查看testfile.txt的内容。
合并aa.txt 和bb.txt 并重定名为cc.txt。(aa,bb不会删除)
4.10 more 和 less 命令
这两个命令用于分页表现文件内容。
- more:从文件开头开始表现,按空格键翻页。
- less:与more类似,但提供更强盛的导航功能,用户可以向前或向后翻页,支持搜刮等。
less查看testfile.txt
4.11 head 和 tail 命令
- head:表现文件的前n行。例如:head -n 10 file.txt 表现文件的前10行。
- tail:表现文件的后n行。例如:tail -n 10 file.txt 表现文件的后10行。
4.12 touch 命令
touch 命令用于修改文件的时间戳(访问时间和修改时间),大概创建新的空文件。常用选项包罗:
4.13 ln 命令
ln(Link)命令用于创建硬链接或符号链接。常用选项包罗:
- -s:创建符号链接(软链接)。
- -f:强制覆盖已有链接。
- -i:在覆盖已有的链接时,提示用户确认。
- -v:表现命令的详细信息,表现已创建的链接。
4.13.1 硬链接(Hard Link)
硬链接是指多个文件名指向同一个 inode(文件内容和元数据的集合)。删除一个硬链接不会删除文件内容,除非所有指向该 inode 的链接都被删除。
根本用法:
- 命令格式
- ln <源文件> <目标链接>
- 示例:
- ln file1.txt file2.txt
- 这条命令会创建一个名为 file2.txt 的硬链接,它指向 file1.txt 文件的同一个内容。
复制代码 注意:
硬链接不能跨文件体系(即不能链接到差别的磁盘分区)。
硬链接无法创建对目录的链接(除非利用超等用户权限)。
4.13.2 符号链接(Symbolic Link / Symlink)
符号链接是一个指向另一个文件或目录的快捷方式。它类似于 Windows 中的快捷方式。符号链接可以跨文件体系,并且可以创建对目录的链接。
- 命令格式:
- ln -s <源文件> <目标链接>
- 示例:
- ln -s /path/to/file1.txt /path/to/symlink.txt
- 这条命令会创建一个名为 symlink.txt 的符号链接,它指向 /path/to/file1.txt。
- 查看符号链接: 使用 ls -l 命令查看符号链接的详情。符号链接通常会显示目标文件,例如:
- ls -l symlink.txt
- 输出:
- lrwxrwxrwx 1 user user 20 Oct 1 10:00 symlink.txt -> /path/to/file1.txt
- 其中,l 表示这是一个符号链接,-> /path/to/file1.txt 表示符号链接指向的目标。
- 删除符号链接: 删除符号链接不会影响原文件内容,只是删除链接本身。
- rm symlink.txt
复制代码 5. 信息表现命令
5.1 grep 命令
- grep 命令的基本语法:
- grep [选项] '模式' 文件
- 模式:是要搜索的文本或正则表达式。
- 文件:指定要搜索的文件名。
- 常见的 grep 命令用法:
- 基本用法:查找文本中的模式
- grep 'pattern' file.txt
- 该命令会在 file.txt 文件中查找包含 "pattern" 的行,并将匹配的行输出。
- 示例:
- grep 'hello' file.txt
- 这会列出 file.txt 中所有包含 "hello" 的行。
- 忽略大小写(-i 选项) -i 选项使 grep 在搜索时忽略大小写。
- grep -i 'pattern' file.txt
- 示例:
- grep -i 'hello' file.txt
- 这个命令会匹配 hello、Hello、HELLO 等。
- 显示行号(-n 选项) -n 选项让 grep 在输出时显示匹配行的行号。
- grep -n 'pattern' file.txt
- 示例:
- grep -n 'hello' file.txt
- 输出类似:
- 2:hello world
- 5:Hello there
- 显示不匹配的行(-v 选项) -v 选项会显示不匹配给定模式的行。
- grep -v 'pattern' file.txt
- 示例:
- grep -v 'hello' file.txt
- 这个命令会显示 file.txt 中所有不包含 "hello" 的行。
- 匹配整个单词(-w 选项) -w 选项确保匹配的是完整的单词。
- grep -w 'pattern' file.txt
- 示例:
- grep -w 'hello' file.txt
- 这个命令只会匹配包含 "hello" 作为单独单词的行,而不会匹配 "helloworld" 或 "myhello"。
- 递归查找(-r 或 -R 选项) -r 或 -R 选项使 grep 在指定目录及其子目录中递归查找。
- grep -r 'pattern' /path/to/directory/
- 示例:
- grep -r 'hello' /home/user/
- 这个命令会递归查找 /home/user/ 目录及其子目录中的所有文件,列出包含 "hello" 的行。
- 显示匹配的文件名(-l 选项) -l 选项只显示包含模式的文件名,而不显示匹配的行内容。
- grep -l 'pattern' *.txt
- 示例:
- grep -l 'hello' *.txt
- 这个命令会列出当前目录下所有包含 "hello" 的 .txt 文件的文件名。
- 显示匹配的行数(-c 选项) -c 选项让 grep 输出匹配模式的行数,而不是显示匹配的行。
- grep -c 'pattern' file.txt
- 示例:
- grep -c 'hello' file.txt
- 这个命令会输出 file.txt 中包含 "hello" 的行数。
- 显示匹配前后的上下文(-B, -A, -C 选项)
- -B N:显示匹配行之前的 N 行。
- -A N:显示匹配行之后的 N 行。
- -C N:显示匹配行之前和之后的 N 行(上下文行)。
- 示例:
- grep -B 2 'hello' file.txt
- 这个命令会显示所有包含 "hello" 的行及其之前的 2 行内容。
- grep -A 3 'hello' file.txt
- 这个命令会显示所有包含 "hello" 的行及其之后的 3 行内容。
- grep -C 2 'hello' file.txt
- 这个命令会显示所有包含 "hello" 的行及其前后各 2 行内容。
- 使用正则表达式(-E 选项) grep 默认使用基本正则表达式。如果你需要使用扩展正则表达式(如 +、?、{} 等),可以使用 -E 选项,或者使用 egrep(egrep 是 grep -E 的简写)。
- 示例:
- grep -E 'he+llo' file.txt
- 这个命令会匹配 hello、heello、heeeello 等字符串。
- 结合管道使用 grep
- grep 通常与其他命令结合使用,通过管道 (|) 将其他命令的输出传递给 grep 进行筛选。
- 示例:
- ps aux | grep 'nginx'
- 这个命令会列出所有包含 "nginx" 的进程信息。
复制代码 5.2 file 命令
file 命令的根本语法:
file [选项] 文件名
文件名:要检测类型的文件或目录。
选项:可选,用于控制命令的举动。
常见用法和示例:
查看单个文件的类型:
输出示例:
这表示 example.txt 文件是一个 ASCII 文本文件。
查看二进制文件的类型:
输出示例:
这表示 example.bin 文件是一个二进制数据文件。file 会根据文件的内容尝试辨认类型。
查看一个图像文件的类型:
输出示例:
- example.jpg: JPEG image data, EXIF standard 2.21
复制代码 这表示 example.jpg 是一个 JPEG 图像文件,并且包罗 EXIF 信息。
查看可实行文件的类型:
输出示例:
- example.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 4.15.0, not stripped
复制代码 这表示 example.out 是一个 64 位 ELF 可实行文件。
查看多个文件的类型:
- file example1.txt example2.jpg example3.bin
复制代码 输出示例:
- example1.txt: ASCII text
- example2.jpg: JPEG image data, EXIF standard 2.21
- example3.bin: data
复制代码 这表示 file 可以一次性检测多个文件,并表现每个文件的类型。
查看文件类型并输出详细信息(-i 选项): -i 选项表现文件的 MIME 类型,这对于确定文件的详细格式(如文本编码、图像格式等)非常有用。
输出示例:
- example.txt: text/plain; charset=us-ascii
复制代码 这表示 example.txt 是一个平凡文本文件,字符集为 US-ASCII。
查看文件类型并输出文件的编码(-b 选项): -b 选项用于省略 file 命令的文件名输出,只表现文件的类型信息。
输出示例:
这表示 example.txt 是一个 ASCII 文本文件,并且仅输出类型信息而不表现文件名。
查看文件是否是压缩文件: 如果你不确定文件是否被压缩,可以利用 file 命令查看:
输出示例:
- example.tar.gz: gzip compressed data, from Unix, last modified: Mon May 10 10:21:33 2021
复制代码 这表示 example.tar.gz 是一个 GZIP 压缩文件。
查看文件的 MIME 类型(-m 选项): -m 选项可以让你指定一个自界说的魔法文件来剖析文件类型(通常不常用)。
- file -m /usr/share/file/magic example.txt
复制代码 查看一个目录中所有文件的类型(递归查抄): 利用 find 和 file 配合,可以查看一个目录中所有文件的类型:
- find /path/to/dir -type f -exec file {} \;
复制代码 这条命令会递归地查看 /path/to/dir 目录下的所有文件并表现它们的类型。
5.3 find 命令
find 是一个强盛的命令,用于在文件体系中查找符合条件的文件或目录。它通过递归搜刮指定目录及其子目录中的文件,并根据用户指定的条件(如文件名、修改时间、大小等)进行过滤。
find 命令的根本语法:
- 路径:要开始搜刮的目录路径,通常为 /(根目录)或当前目录 .。
- 条件:指定查找的条件,如文件名、文件类型、修改时间等。
- 操作:对查找到的文件进行操作,如删除、打印、修改权限等。
常见用法和示例:
- 查找指定目录下的所有文件:
这条命令会递归查找 /path/to/directory 目录下的所有文件和子目录。
- 查找指定目录下的所有文件(包罗子目录)并按文件名查找:
- find /path/to/directory
- -name 'pattern'
复制代码 其中 pattern 是文件名的模式,支持通配符。
示例:
查找 /home/user/ 目录下所有以 .txt 结尾的文件:
- find /home/user -name '*.txt'
复制代码 - 忽略大小写进行查找(-iname):
-iname 选项可以在查找文件时忽略大小写。
示例:
查找所有以 hello 或 HELLO 等形式定名的文件:
- find /home/user -iname 'hello*'
复制代码 - 查找某个类型的文件(-type):
利用 -type 选项查找指定类型的文件:
- f:平凡文件
- d:目录
- l:符号链接(symlink)
示例:
查找 /home/user/ 目录下的所有目录:
查找 /home/user/ 目录下的所有平凡文件:
- 查找文件并实行操作(-exec):
-exec 选项允许在找到符合条件的文件时实行指定的命令。常用于删除、移动文件或修改文件权限等操作。
示例:
查找所有 .log 文件并删除:
- find /path/to/directory
- -name '*.log' -exec rm {} \;
复制代码
- rm {}:实行删除命令。
- {} 是一个占位符,表示 find 找到的每个文件。
- \; 用来结束 -exec 选项。
示例:
查找所有 .txt 文件并修改权限:
- find /home/user -name '*.txt'
- -exec chmod 644 {} \;
复制代码
- 查找修改时间在一定范围内的文件(-mtime、-atime、-ctime):
- -mtime:按文件的最后修改时间查找文件。
- -atime:按文件的最后访问时间查找文件。
- -ctime:按文件的状态改变时间查找文件。
选项背面可以跟数字或带符号的数字:
- +n:表示查找修改时间凌驾 n 天的文件。
- -n:表示查找修改时间在 n 天内的文件。
- n:表示查找恰好修改时间为 n 天的文件。
示例:
查找 7 天前修改的文件:
- find /path/to/directory
- -mtime +7
复制代码 查找已往 7 天内访问过的文件:
- find /path/to/directory
- -atime -7
复制代码
- 查找指定大小的文件(-size):
-size 选项用于查找特定大小的文件。单位可以是:
- b:块(512字节)
- c:字节
- k:KB
- M:MB
- G:GB
示例:
查找大于 100MB 的文件:
- find /path/to/directory
- -size +100M
复制代码 查找小于 10KB 的文件:
- find /path/to/directory
- -size -10k
复制代码
- 查找并列出空文件或空目录(-empty):
-empty 选项用于查找空文件或空目录。
示例:
查找空目录:
- find /path/to/directory
- -type d -empty
复制代码 查找空文件:
- find /path/to/directory
- -type f -empty
复制代码 - 查找指定权限的文件(-perm):
-perm 选项用于查找具有特定权限的文件,可以指定权限的数字值或符号模式。
示例:
查找权限为 755 的文件:
- find /path/to/directory
- -perm 755
复制代码 查找所有可实行的文件:
- find /path/to/directory
- -perm /111
复制代码 - 查找文件并限制最大搜刮深度(-maxdepth 和 -mindepth):
- -maxdepth N:限制搜刮的最大深度为 N 级。
- -mindepth N:限制搜刮的最小深度为 N 级。
示例:
查找 /path/to/directory 中最多一层深度的文件:
- find /path/to/directory
- -maxdepth 1
复制代码
5.4 locate 命令
locate 是一个非常快速的文件查找工具,它通过查询一个预先构建的数据库来查找文件,而不是实时遍历文件体系。因此,locate 命令的查找速度非常快,但前提是数据库必须是最新的。默认情况下,locate 利用的数据库是由 updatedb 命令定期更新的。
locate 命令的根本语法:
- 查找模式:这是你要查找的文件或目录的名称模式,支持通配符(如 *、?)来进行含糊匹配。
常见用法和示例:
- 查找文件:
这条命令会在 locate 数据库中查找所有包罗 “filename” 的文件路径。
示例:
查找所有包罗 “nginx” 的文件路径:
输出示例:
- /etc/nginx/nginx.conf
- /var/log/nginx/access.log
- /usr/sbin/nginx
复制代码 - 利用通配符查找文件:
locate 支持利用通配符来进行含糊匹配:
- *:匹配恣意字符(包罗零个字符)。
- ?:匹配一个字符。
示例:
查找所有 .txt 结尾的文件:
查找以 “log” 开头且以 “.txt” 结尾的文件:
- 查找并限制结果表现(-n 选项):
-n 选项用来限制表现的结果数。
示例:
表现匹配到的前 10 个结果:
- 查看详细路径信息(-i 选项):
-i 选项用于忽略大小写进行查找。
示例:
查找所有不区分大小写的 “nginx” 文件:
- 查看文件的完备路径(-c 选项):
-c 选项会表现匹配到的文件数量,而不是文件路径。
示例:
查找包罗 “nginx” 的文件,并输出文件总数:
- 更新数据库(updatedb 命令):
locate 利用的数据库并非实时更新,而是定期通过 updatedb 命令来更新。通常这个过程是由体系定时使命(如 cron)来实行的,但用户也可以手动实行 updatedb 来更新数据库。
示例:
手动更新数据库:
- 查找文件路径中包罗特定目录(-r 选项):
-r 选项用于利用正则表达式来查找路径中符合条件的文件。
示例:
查找路径中包罗 “nginx” 的文件:
- 查找文件路径中排除某个目录(-e 选项):
-e 选项用于排除包罗某个目录的文件。
示例:
查找包罗 “log” 的文件,但排除路径中包罗 “nginx” 的文件:
locate 与 find 的比较:
- 速度:locate 基于一个预先构建的数据库来查找文件,因此搜刮速度非常快;而 find 则是实时查找文件,速度较慢,尤其是在大文件体系上。
- 实时性:locate 依赖于数据库,如果数据库没有实时更新,可能无法找到近来添加的文件。而 find 是实时查找,能找到最新的文件。
- 利用场景:如果你必要快速查找文件且不必要实时更新,可以利用 locate;如果必要实时查找文件,大概必要复杂的查找条件(如查找文件类型、大小等),则应利用 find。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |