Bootstrap

Linux系统常用指令

一. Linux系统的文件结构

Linux系统的文件结构是树状结构,以根目录(/)作为起点,所有的文件和目录都从根目录开始进行组织和管理。

1、根目录(/)

根目录是整个文件系统的起点,存储系统文件的关键路径。虽然根目录本身不会直接存放应用程序和用户文件,但它是所有文件系统的连接点。操作系统在引导过程中,必须能访问根目录,任何损坏或权限问题都会导致系统无法启动。

2、基本目录

  1. /bin:存放系统所需的基本命令(可执行文件),包括常用的基础命令,如ls、cp、mv等。这些命令在系统启动后就可以直接使用,用于系统的日常运维和管理。
  2. /dev:存放Linux的外部设备,包括硬盘、终端、打印机等。在Linux中,访问设备的方式和访问文件的方式是相同的,这些设备都以文件的形式表示出来,并存放在/dev目录内。
  3. /etc:存放系统配置文件和子目录。这些配置文件用于设置和管理系统的各种参数和行为,是系统管理员进行日常管理和维护的重要工具。
  4. /lib:存放系统最基本的动态连接共享库,这些库文件为系统中的各种应用程序提供必要的支持和功能。类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。

3、系统管理与配置目录

  1. /boot:存放引导程序和内核文件,系统启动时必须访问此目录。这些文件包括内核映像、引导加载程序等,是系统启动和运行的关键。
  2. /sbin:存放系统管理员使用的管理工具,如ifconfig、fdisk、reboot等。这些命令通常需要较高的权限才能执行,用于系统的管理和维护。
  3. /proc:一个虚拟文件系统,提供关于系统进程和内核状态的信息。它不占用磁盘空间,而是由内核动态生成的,用于访问系统硬件状态和进程信息。
  4. /sys:另一个虚拟文件系统,提供了对内核对象模型的访问。与硬件设备、驱动程序、模块相关的信息都会存放在这里,管理员可以通过该目录与系统硬件进行交互。

4、用户相关目录

  1. /home:用户的主目录,用于存放用户的数据、配置文件等个性化信息。每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  2. /root:超级用户(root)的主目录,存放超级用户的数据和配置文件。

5、应用程序与第三方软件目录

  1. /usr:存放几乎所有用户级别的应用程序和文件,以及系统共享资源。这个目录包含了大量的子目录和文件,用于支持系统的运行和用户的操作。其中,/usr/bin目录存放了用户级别的可执行文件,/usr/lib目录存放了用户级别的库文件,/usr/share目录存放了共享的资源文件等。
  2. /opt:给主机额外安装软件所摆放的目录。一些大型软件套件或商用软件(如Oracle、VMware)会默认安装到/opt目录中,以避免与系统软件产生冲突。

6、挂载点目录

挂载点目录用于将额外的存储设备(如硬盘、U盘、网络文件系统等)挂载到Linux文件系统的某个位置。Linux文件系统没有C:、D:这样的驱动器划分方式,所有存储设备都是通过挂载点与根目录/关联的。常见的挂载点目录包括:

  1. /mnt:一个临时挂载点,用于系统管理员手动挂载文件系统,尤其是在故障排查或数据恢复过程中。
  2. /media:用于挂载可移动设备的目录,比如U盘、CD/DVD光盘。当插入这些设备时,许多Linux发行版会自动将其挂载到/media/下的子目录中。

7、特殊目录

  1. /var:存放经常变化的文件,如系统日志、邮件队列、缓存等。这些文件会随着系统的运行和用户的操作而不断变化和增长。
  2. /tmp:存放临时文件。这个目录通常用于存放系统运行过程中产生的临时文件和数据。
  3. /lost+found:当系统非法关机后,Linux会自动识别一些设备,并尝试挂载它们。如果挂载过程中发现了一些无法识别的文件系统碎片或孤立文件,就会将它们存放在这个目录下。管理员可以检查这个目录以找回可能丢失的文件。

二. 常见指令

1. ls 指令

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

功能

  • 列出指定目录下的所有子目录和文件(如果指定的是目录)。
  • 列出指定文件的文件名和其他信息(如果指定的是文件)。

常用选项

  1. -a

    • 功能:列出目录下的所有文件,包括以 . 开头的隐含文件(隐藏文件)。
    • 示例:ls -a
      ls-a
  2. -d

    • 功能:将目录像文件一样显示,而不是显示其下的文件。
    • 示例:ls -d 指定目录
  3. -i

    • 功能:输出文件的 i 节点(inode)的索引信息。
    • 示例:ls -i 指定文件ls -ai(结合 -a 选项)
  4. -k

    • 功能:以 k 字节(1024 字节)的形式表示文件的大小。
    • 示例:ls -k 指定文件ls -alk(结合 -a 和 -l 选项)
  5. -l

    • 功能:列出文件的详细信息,包括权限、所有者、组、大小、修改时间和文件名。
    • 示例:ls -l
      ls -l
  6. -n

    • 功能:用数字的 UID(用户ID)和 GID(组ID)代替名称。
    • 示例:ls -n
    • UID 和 GID:在 Linux 系统中,每个用户和组都有一个唯一的数字 ID。UID 是用户 ID,GID 是组 ID。使用 -n 选项可以显示这些数字 ID 而不是用户名和组名。
  7. -F

    • 功能:在每个文件名后附上一个字符以说明该文件的类型。
    • 示例:ls -F
    • 文件类型字符
      • *:表示可执行的普通文件。
      • /:表示目录。
      • @:表示符号链接。
      • |:表示 FIFO(命名管道)。
      • =:表示套接字(sockets)。
  8. -r

    • 功能:对目录内容进行反向排序。
    • 示例:ls -r
  9. -t

    • 功能:根据文件的修改时间进行排序,最近修改的文件排在最前面。
    • 示例:ls -t
  10. -s

    • 功能:在 -l 选项的基础上,在文件名后输出该文件的大小(以块为单位)。
    • 示例:ls -ls
    • 找到目录下最大的文件:可以结合 -r-S(注意是大写的 S,表示按文件大小反向排序)选项来找到目录下最大的文件,但标准 ls 命令没有 -S 选项,你可能需要使用 ls -lS(在某些系统或带有特定扩展的 ls 版本中可能有效)或 du 命令结合其他工具来实现这一功能。
  11. -R

    • 功能:递归地列出所有子目录下的文件。
    • 示例:ls -R



2. cd 指令

语法 : cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。

  1. 切换到指定目录

    • 使用绝对路径:从根目录(/)开始的完整路径。例如,/home/user
    • 使用相对路径:从当前目录开始的路径。例如,如果当前目录是/home/user,则cd Documents会切换到/home/user/Documents
  2. 切换到上一级目录

    • 使用..表示上一级目录。例如,cd ..
  3. 切换到用户主目录

    • 使用~表示当前用户的主目录。例如,cd ~
    • 不带任何参数的cd命令也会将当前工作目录更改为当前用户的家目录。
  4. 切换到根目录

    • 使用/表示根目录。例如,cd /
  5. 使用-切换回上一个目录

    • cd -命令可以在当前目录和前一次所在的目录之间来回切换。
  6. 使用.表示当前目录

    • 虽然使用cd .实际上不会改变当前目录,但.可以表示当前目录的路径。
  7. 使用环境变量表示路径

    • 例如,$HOME表示当前用户的主目录,因此cd $HOME等价于cd ~
  8. 使用通配符匹配部分路径

    • 例如,cd /var/log/sys*会匹配/var/log/syslog



3. touch指令

是Linux和Unix系统中用于创建空文件或更新文件时间戳的常用命令。

一、基本功能

  1. 创建空文件:如果指定的文件不存在,touch命令会创建一个新的空文件。
  2. 更新文件时间戳:如果文件已经存在,touch命令会更新文件的访问时间(atime)和修改时间(mtime)。默认情况下,这两个时间戳都会被更新为当前时间。

二、常用选项

  1. -a:仅更新文件的访问时间,不改变修改时间。
  2. -m:仅更新文件的修改时间,不改变访问时间。
  3. -c :如果文件不存在,不会创建新文件,只更新时间戳(如果存在)。
  4. -d:使用指定的时间和日期,而不是当前时间。时间字符串的格式可以是相对时间(如“3 days ago”)或绝对时间(如“2024-12-25 12:34”)。
  5. -t:使用指定的时间戳(格式为[[CC]YY]MMDDhhmm[.ss])来更新文件的时间戳。
  6. -r:使用另一个文件的时间戳来更新目标文件的时间戳。
  7. -h:影响符号链接本身,而不是链接所指向的文件。

三、使用示例

  1. 创建一个空文件
touch myfile.txt

如果myfile.txt不存在,则创建一个新的空文件。

  1. 更新文件的访问和修改时间
touch existingfile.txt

如果existingfile.txt已经存在,则更新其访问和修改时间为当前时间。

  1. 只更新文件的访问时间
touch -a myfile.txt

只更新myfile.txt的访问时间,不改变其修改时间。

  1. 使用指定的时间戳更新文件时间戳
touch -t 202412251234.56 myfile.txt

myfile.txt的访问和修改时间更新为2024年12月25日12:34:56(注意:秒是可选的)。

  1. 批量创建文件
touch file1.txt file2.txt file3.txt

同时创建file1.txtfile2.txtfile3.txt三个空文件。
示例


touch




4. mkdir指令

一、基本语法

mkdir [选项] 目录名

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

二、常用选项

  1. -p:递归创建目录。如果目标目录的父目录不存在,会自动创建。例如,mkdir -p path/to/new/directory会创建path/to/new(如果不存在)以及directory
  2. -m:设置新目录的权限。权限值是一个八进制数,表示文件的权限。例如,mkdir -m 755 newdir会创建一个名为newdir的目录,其权限为755(即rwxr-xr-x)。

三、使用示例

  1. 创建单个目录
mkdir documents

在当前目录下创建一个名为documents的目录。

  1. 递归创建目录
mkdir -p path/to/new/directory

创建多级目录结构,如path/to/new不存在,也会一并创建。

  1. 创建目录并设置权限
mkdir -m 700 private_data

创建一个名为private_data的目录,其权限为700(即只有所有者有读写执行权限)。

  1. 使用通配符创建多个目录
mkdir dir1 dir2 dir3

同时创建名为dir1dir2dir3的三个目录。




5. rm指令

一、基本语法

rm [选项] 文件或目录...

二、常用选项

  1. -f :强制删除文件或目录,不会提示确认,即使文件或目录是只读的。
  2. -i :交互式删除,每次删除前都会询问确认。
  3. -r :递归删除目录及其内容(包括子目录和文件)。

三、使用示例

  1. 删除单个文件
rm file.txt

删除当前目录下的file.txt文件。

  1. 删除多个文件
rm file1.txt file2.txt file3.txt

同时删除file1.txtfile2.txtfile3.txt三个文件。

  1. 递归删除目录及其内容
rm -r directory/

删除名为directory的目录及其所有内容。

  1. 强制删除文件
rm -f file.txt

强制删除file.txt文件,即使该文件是只读的也不会提示确认。




6. man指令

man指令是Linux和类Unix操作系统中的一个重要命令,用于显示系统手册页(Manual pages),这些手册页包含了各种命令、系统调用、库函数等的详细说明和用法。

一、基本语法

man [选项] [命令/工具/程序名字]

二、常用选项

  1. -a:在所有的手册页中搜索,显示所有匹配的条目。
  2. -f:显示给定关键字的简短描述信息。
  3. -k :使用关键字搜索所有与该关键字相关的手册页。
  4. -P:指定内容时使用分页程序。

三、手册页分区

Linux的手册页通常分为不同的区(section),每个区对应着不同类型的文档。常见的分区包括:

  1. 1:用户在shell中可以操作的命令或可执行文件。
  2. 2:系统内核可调用的函数与工具等。
  3. 3:库函数(通常为C的函数库libc)。
  4. 4:特殊文件(比如/dev中的设备文件)。
  5. 5:配置文件或某些文件格式。
  6. 6:游戏。
  7. 7:杂项,如惯例、协议、字符集标准等。
  8. 8:系统管理员可用的管理命令。
  9. 9:与内核相关的文件。

四、使用示例

  1. 查看ls命令的手册页
man ls

这将显示ls命令的详细用法和选项。

  1. 查找与passwd相关的所有手册页
man -a passwd

这将显示所有与passwd相关的手册页,包括用户密码文件、系统管理工具等。

  1. 显示printf命令的简短描述
man -f printf

这将显示printf命令的简短描述信息。

  1. 搜索与关键字相关的手册页
man -k keyword

这将列出所有与指定关键字相关的手册页。

五、浏览手册页内容

在查看手册页时,可以使用以下按键进行浏览:

  • 空格键:向下翻一页。
  • Enter键:向下翻一行。
  • b键:向上翻一页。
  • q键:退出查看手册页。
  • /:在手册页中搜索关键字,按n键查找下一个匹配项,按N键查找上一个匹配项。



7. cp指令

cp指令是Linux和Unix系统中用于复制文件和目录的基本命令。

一、基本语法

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

二、常用选项

  1. -a:归档模式,保留源文件或目录的所有属性,包括权限、所有者、时间戳等。这相当于-dpR选项的组合。
  2. -b:若目标文件已存在,则在覆盖前先备份目标文件。
  3. -d:当复制符号链接时,把目标文件或目录也建立为符号链接,并指向与源文件或目录相同的文件或目录。
  4. -f :强制复制文件或目录,即使目标文件或目录已存在也不会提示,直接覆盖。
  5. -i :覆盖目标文件或目录前询问是否确认。
  6. -n :不覆盖已存在的文件。如果目标文件已存在,则不会进行复制。
  7. -p:保留原文件的属性(权限、修改时间等)。
  8. -r :递归复制目录及其包含的所有子目录和文件。
  9. -s:对源文件建立符号链接,而非复制文件。
  10. -u:仅当源文件比目标文件新或目标文件不存在时才进行复制。
  11. -v :显示详细的复制进度信息,列出正在复制的文件或目录。
  12. -l:对源文件建立硬链接,而非复制文件。但请注意,硬链接只能在同一文件系统内创建。

三、使用示例

  1. 复制单个文件
cp file1.txt file2.txt

file1.txt复制为file2.txt

  1. 复制文件到目录
cp file1.txt /path/to/directory/

file1.txt复制到指定目录/path/to/directory/中。

  1. 递归复制目录
cp -r directory1/ directory2/

递归复制directory1/目录及其所有内容到directory2/中。

  1. 保留文件属性复制
cp -p file1.txt file2.txt

复制file1.txtfile2.txt,并保留其属性。

  1. 强制覆盖复制
cp -f file1.txt existing_file.txt

强制将file1.txt覆盖到已存在的existing_file.txt上。

  1. 交互式复制
cp -i file1.txt existing_file.txt

在覆盖existing_file.txt前会询问确认。

  1. 仅当源文件更新时才复制
cp -u file1.txt existing_file.txt

仅当file1.txtexisting_file.txt新时才进行复制。

  1. 显示详细复制信息
cp -v file1.txt /path/to/directory/

显示将file1.txt复制到指定目录的详细过程。




8. mv指令

mv指令是Linux和Unix系统中用于移动文件或目录,以及重命名文件或目录的常用命令。以下是关于

一、基本语法

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

二、常用选项

  1. -i :在覆盖文件之前提示用户确认。这是防止不小心覆盖重要文件的有用选项。
  2. -f :强制移动文件或目录,即使目标文件已经存在也不会提示,直接覆盖。但请谨慎使用,以免意外覆盖或删除重要文件。
  3. -n:如果目标文件已存在,则不会进行移动操作。这个选项可以用来防止覆盖已存在的文件。
  4. -r:递归地移动整个目录及其所有内容。如果目标目录不存在,则创建它。
  5. -p:保留源文件的元数据(例如权限和时间戳)并应用于目标文件。默认情况下,mv命令会删除源文件的元数据并替换为目标文件的元数据。

三、使用示例

  1. 移动文件
mv old_directory/file.txt new_directory/

old_directory目录中的file.txt文件移动到new_directory目录中。

  1. 重命名文件
mv oldname.txt newname.txt

oldname.txt文件重命名为newname.txt

  1. 移动多个文件到目录
mv file1.txt file2.txt file3.txt /path/to/directory/

file1.txtfile2.txtfile3.txt文件移动到指定目录/path/to/directory/中。

  1. 递归移动目录
mv -r directory1/ /path/to/destination/

递归地移动directory1/目录及其所有内容到/path/to/destination/中。




9. find指令

find是Unix/Linux系统中非常强大和常用的命令,用于在指定目录下查找文件和目录。

一、基本语法

find命令的基本语法如下:

find [path...] [expression]
  • [path...]:指定要搜索的起始目录,可以指定一个或多个目录,并且可以使用相对路径或绝对路径。如果不指定起始目录,则默认从当前目录开始搜索。
  • [expression]:用于指定搜索条件的参数,可以是多个表达式组成的组合。find命令会根据这些表达式逐个进行匹配。

二、常用选项和表达式

  1. 按名称搜索

    • -name:按文件名搜索,可以使用通配符进行模糊匹配。例如,find . -name "*.txt"会在当前目录及子目录中查找所有以.txt结尾的文件。
    • -iname:按文件名搜索,不区分大小写。例如,find /home/user -iname "*.TXT"会查找所有以.TXT(不区分大小写)结尾的文件。
  2. 按类型搜索

    • -type f:搜索普通文件。
    • -type d:搜索目录。
    • -type l:搜索符号链接。
    • 其他类型还包括字符设备文件(-type c)、块设备文件(-type b)、套接字文件(-type s)和管道文件(-type p)。
  3. 按大小搜索

    • -size +10M:搜索大于10MB的文件。
    • -size -10M:搜索小于10MB的文件。
    • -size 10M:搜索正好10MB的文件。
    • 常见的文件大小单位有KB(k)、MB(M)、GB(G)和字节(c,默认单位)。
  4. 按时间搜索

    • -mtime +7:搜索修改时间超过7天的文件。
    • -mtime -7:搜索修改时间在7天内的文件。
    • -mtime 7:搜索修改时间恰好为7天的文件。
    • 类似地,-atime用于按访问时间搜索,-ctime用于按更改时间搜索。
  5. 按权限搜索

    • -perm 755:精确匹配权限为755的文件。
    • -perm -755:3个权限位都必须至少匹配755的文件。
    • -perm /755:3个权限位中任意一个匹配755的文件。
  6. 按用户和组搜索

    • -user username:搜索属于特定用户的文件。
    • -group groupname:搜索属于特定组的文件。
  7. 组合条件

    • -and:逻辑与(默认)。
    • -or:逻辑或。
    • !:逻辑非。
    • 例如,find /home/user -name "*.txt" -or -name "*.log"会查找所有以.txt.log结尾的文件。
  8. 执行操作

    • -exec:对找到的每个文件执行指定的命令。例如,find /home/user -name "*.txt" -exec rm {} \;会删除所有以.txt结尾的文件。{}表示找到的文件或目录,\;表示-exec命令的结束。
    • -ok:与-exec类似,但在执行命令前会提示用户确认。
    • -delete:直接删除找到的文件。例如,find /home/user -name "*.tmp" -delete会删除所有以.tmp结尾的文件。
  9. 限制搜索深度

    • -maxdepth n:限制搜索的最大深度为n。
    • -mindepth n:限制搜索的最小深度为n。
  10. 其他选项

    • -empty:搜索空文件或空目录。
    • -inum:按inode号搜索文件。
    • -regex:使用正则表达式匹配文件路径。
    • -iregex:使用正则表达式匹配文件路径,不区分大小写。

三、使用示例

  1. 查找指定文件:find /etc -name "hosts"会在/etc目录及子目录中查找名为hosts的文件。
  2. 查找空文件或空目录:find . -empty会在当前目录及子目录中查找空文件或空目录。
  3. 查找大于100MB的文件:find . -size +100M会在当前目录及子目录中查找大于100MB的文件。
  4. 删除指定类型的文件:find . -type f -name "*.tmp" -exec rm {} \;会删除当前目录及子目录中所有以.tmp结尾的文件。



10.grep指令

grep命令是Linux和Unix系统中用于搜索文本的强大工具。它允许用户在文件中搜索符合特定模式的字符串,并输出匹配的行。

一、基本语法

grep [选项] '模式' 文件名
  • [选项]:用于控制grep的行为,可以是多个选项的组合。
  • '模式':要搜索的字符串或正则表达式。
  • 文件名:要在其中搜索的文件。

二、常用选项

  1. -i–ignore-case:忽略字符大小写的差别。例如,grep -i 'hello' file.txt会查找file.txt中所有包含hello(不区分大小写)的行。
  2. -n–line-number:在显示匹配行的同时,标示出该行的行号。例如,grep -n 'error' logfile.txt会显示匹配error的行及其行号。
  3. -v–invert-match:反转匹配,只显示不包含匹配文本的行。例如,grep -v 'temp' file.txt会显示file.txt中所有不包含temp的行。
  4. -c–count:计算并输出匹配模式的行数。例如,grep -c 'example' textfile.txt会输出textfile.txt中包含example的行数。
  5. -E–extended-regexp:使用扩展正则表达式进行匹配。例如,grep -E 'hello|world' file.txt会匹配file.txt中包含helloworld的行。

三、使用示例

  1. 查找文件中包含特定字符串的行:
grep 'hello' file.txt
  1. 忽略大小写查找:
grep -i 'HELLO' file.txt
  1. 递归查找目录中的文件:
grep -r 'hello' /path/to/directory
  1. 查找并显示匹配行的行号:
grep -n 'error' logfile.txt
  1. 查找并列出包含匹配文本的文件名:
grep -l 'test' *.txt
  1. 显示匹配行及其前后几行的内容:
grep -C 3 'hello' file.txt



3. 其他指令

安装和登录命令

  • login:用于用户登录系统。
  • shutdown:用于关闭系统,可以设定关机的时间,可以立即关机也可以延迟关机。
  • halt:立即停止系统,等同于一次电气断电。
  • reboot:重启系统。
  • install:通常用于安装软件包(但现代Linux发行版多使用包管理器如apt、yum等)。
  • mount:挂载文件系统,比如将光盘、U盘等挂载到某个目录以便访问。
  • umount:卸载已挂载的文件系统。
  • chsh:更改用户的登录Shell。
  • exit:退出当前Shell会话。
  • last:显示最近登录到系统的用户信息。

文件处理命令

  • file:识别文件类型。
  • mkdir:创建目录。
  • dd:转换和复制文件,常用于备份整个分区或磁盘。
  • diff:比较两个文件的内容差异。
  • cat:连接文件并打印到标准输出。
  • ln:创建硬链接或符号链接。

系统管理相关命令

  • df:显示磁盘空间使用情况。
  • top:实时显示系统中各个进程的资源占用情况。
  • free:显示内存使用情况。
  • quota:显示磁盘使用配额。
  • at:在指定时间执行一次性任务。
  • lp:打印文件(现代系统可能使用lpr等命令)。
  • adduser:添加新用户。
  • groupadd:添加新组。
  • kill:终止进程。
  • crontab:编辑用户的cron表,用于设定周期性任务。

网络操作命令

  • ifconfig(已被ip取代,但在一些旧系统中仍可用):配置网络接口。
  • ip:显示/操作路由、设备、策略路由和隧道,是ifconfig的现代替代品。
  • ping:测试网络连通性。
  • netstat:显示网络连接、路由表、接口状态等。
  • telnet:远程登录协议(现代系统可能使用SSH)。
  • ftp:文件传输协议。
  • route:显示/修改IP路由表。
  • rlogin:远程登录(现代系统可能使用SSH)。
  • rcp:远程复制文件(现代系统可能使用scp)。
  • finger:查询用户信息。
  • mail:发送和接收邮件。
  • nslookup:查询DNS记录。

系统安全相关命令

  • passwd:更改用户密码。
  • su:切换用户。
  • umask:设置创建文件时的默认权限掩码。
  • chgrp:更改文件/目录的组。
  • chmod:更改文件/目录的权限。
  • chown:更改文件/目录的所有者。
  • chattr:改变文件属性。
  • sudo:以另一个用户的身份(通常是超级用户)执行命令。
  • ps:显示当前进程状态。
  • who:显示当前登录到系统的用户。

其它

  • tar:归档文件。
  • unzip:解压缩zip文件。
  • gunzip:解压缩gzip文件。
  • unarj:解压缩arj文件。
  • mtools:用于操作DOS文件系统的工具集。
;