大一升大二暑期学校 NJU暑期课程 Linux系统基础(1) 20240720

一.操作系统

操作系统Operating System简称OS,是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁。
操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序。

Q1:什么是文件?
文件是计算机系统中存储信息的一种基本单位,它可以包含文本、图片、视频、程序代码等不同类型的数据。文件通常具有文件名、文件类型、文件大小等属性,并存储在磁盘或其它存储设备上。

Q2:什么是文件系统?
文件系统是一种用于存储、组织和访问文件的系统。它定义了文件和目录(文件夹)的层次结构,以及文件的存储方式和访问方法。文件系统负责管理磁盘空间,跟踪文件的位置,以及处理文件的创建、删除、移动和修改等操作。

Q3:操作系统是干什么的?
操作系统是计算机系统的核心软件,负责管理计算机的硬件资源和提供用户与计算机交互的接口。操作系统的主要功能包括:

  1. 管理硬件资源,如CPU、内存、磁盘等。
  2. 管理文件系统,提供文件的存储、访问和组织。
  3. 提供用户界面,允许用户通过命令行或图形界面与计算机交互。
  4. 管理进程和线程,调度任务的执行。
  5. 提供网络通信功能,允许计算机与其他设备进行数据交换。

Q4:软件是怎么运行起来的?
软件的运行过程通常包括以下几个步骤:

  1. 编写源代码:程序员使用编程语言编写软件的源代码。
  2. 编译:编译器将源代码转换为机器语言,生成可执行文件。
  3. 链接:链接器将可执行文件与所需的库和资源连接起来,生成最终的可执行程序。
  4. 加载:操作系统将可执行程序加载到内存中。
  5. 执行:CPU执行程序中的指令,完成指定的任务。
  6. 输入/输出:程序可以通过标准输入/输出接口与用户或其他程序进行交互。
    在这个过程中,操作系统提供了必要的支持和服务,如内存管理、进程调度、I/O操作等,以确保软件能够顺利运行。

Q5:What is Linux Distribution?
Linux 不同于 Windows 和 macOS 这类系统,它没有官方维护的版本。Linux 的官方只负责维护核心,而给这个核心加上各种软件变成能用的操作系统的重任,就交给了下游的各个组织和公司。所谓发行版,就是把一系列的软件和核心放在一起,经过测试之后,做成一个完整的系统,分发给用户。

这个模式给 Linux 提供了多样性。用户可以选择适合自己的发行版。虽然在早期这使适配软件变得有些困难,使不同发行版割裂开来,给 Linux 的发展带来了阻碍。但是现在是 2023 年,随着包管理的规范化和新一代打包系统的兴起,这个状况得到了极大的改善。现在我们可以自由选取发行版,而不用过度担心软件适配的问题。

简而言之,GNU/Linux 加包管理加桌面约等于Linux发行版,虽然不严谨,但是差不多贴近事实。
Linux发行版的根本区别在于软件包的更新不同。各个发行版更新的策略不同,最常用的是Ubuntu.

linux系统只有一个统一的根目录,与windows不同。

二、linux系统中的路径

在Linux系统中,路径是指文件或目录在文件系统中的位置。路径可以是绝对路径或相对路径。

  1. 绝对路径:从根目录 / 开始的完整路径。例如:

    • /home/user/documents 表示用户目录下的 documents 文件夹。
    • /usr/bin/ls 表示系统目录下的 bin 文件夹中的 ls 命令。
  2. 相对路径:相对于当前工作目录的路径。例如:

    • ./documents 表示当前目录下的 documents 文件夹。
    • ../documents 表示当前目录的父目录下的 documents 文件夹。

如何进行路径切换

在Linux中,使用 cd 命令来切换当前工作目录。以下是一些例子:

  1. 切换到根目录

    cd /
    

    这会将当前工作目录切换到根目录。

  2. 切换到用户主目录

    cd ~
    

    或者

    cd
    

    这两个命令都会将当前工作目录切换到当前用户的主目录。

  3. 切换到上一级目录

    cd ..
    

    这会将当前工作目录切换到当前目录的父目录。

  4. 切换到特定目录

    cd /usr/local/bin
    

    这会将当前工作目录切换到 /usr/local/bin 目录。

  5. 使用相对路径切换目录

    cd documents
    

    如果你已经在 /home/user 目录中,使用 cd documents 会切换到 /home/user/documents 目录。

示例

假设你的当前工作目录是 /home/user,你想切换到 /usr/local/bin 目录:

  1. 首先,输入以下命令:

    cd /usr/local/bin
    

    这会将你的工作目录切换到 /usr/local/bin

  2. 现在,如果你想返回到你的主目录,可以使用:

    cd ~
    

    或者简单地:

    cd
  3. 如果你想查看当前的工作目录,可以使用:

    echo $PWD
    

    这会显示当前的工作目录路径。

通过这些命令,你可以在Linux系统中轻松地导航和管理文件和目录。

4./etc装的是配置文件。

三.linux常用指令的记忆

ls(列出目录内容)
记忆方法:想象成 “list” 的简写。
cd(更改目录)
记忆方法:将其看作 “change directory” 的缩写。
pwd(显示当前工作目录)
记忆方法:将其理解为 “print working directory” 的缩写。
cp(复制文件或目录)
记忆方法:将其看作 “copy” 的简写。
mv(移动或重命名文件或目录)
记忆方法:将其理解为 “move” 的简写。
rm(删除文件或目录)
记忆方法:将其看作 “remove” 的简写。
mkdir(创建目录)
记忆方法:将其看作 “make directory” 的缩写。
rmdir(删除空目录)
记忆方法:将其理解为 “remove directory” 的缩写。
touch(创建空文件)
记忆方法:想象你的手指 “touch” 创建了一个文件。
cat(查看文件内容)
记忆方法:将其看作 “concatenate” 的简写,意为连接文件并显示。
grep(在文本中搜索特定模式)
记忆方法:想象你正在 “抓” 搜索结果。
find(查找文件或目录)
记忆方法:将其看作 “find”(寻找) 的意思。
sudo(以管理员权限执行命令)
记忆方法:将其理解为 “super user do” 的缩写。
chmod(更改文件或目录权限)
记忆方法:将其看作 “change mode” 的缩写。
chown(更改文件或目录所有者)
记忆方法:将其理解为 “change owner” 的缩写。
df(显示磁盘空间使用情况)
记忆方法:将其看作 “disk free” 的缩写。
du(显示目录空间使用情况)
记忆方法:将其看作 “disk usage” 的缩写。
ps(显示当前进程)
记忆方法:将其理解为 “process status” 的缩写。
kill(结束进程)
记忆方法:想象你要 “kill”(杀死)一个进程。
top(显示实时系统状态)
记忆方法:想象一个 “top”(顶部)视图,显示系统最活跃的进程。
uname(显示系统信息)
记忆方法:将其看作 “unix name” 的简写,显示系统相关信息。
hostname(显示或设置系统主机名)
记忆方法:想象你要查看或更改你的 “host”(主机)的 “name”(名称)。
ifconfig(显示或配置网络接口)
记忆方法:将其看作 “interface configuration” 的缩写。
ping(检测网络连接)
记忆方法:想象网络连接像乒乓球一样 “ping”(弹)来 “pong”(弹)去。
wget(从网络下载文件)
记忆方法:将其看作 “web get” 的简写,从网络上 “get”(获取)文件。
curl(传输数据)
记忆方法:想象你的数据像卷发一样 “curl”(卷曲)起来。
tar(打包或解压文件)
记忆方法:将其看作 “tape archive” 的缩写,像用磁带存档一样打包或解压文件。
gzip(压缩或解压缩文件)
记忆方法:想象文件被 “zipped”(压缩)成一个 “g”(更小的)大小。
ssh(安全远程登录)
记忆方法:将其理解为 “secure shell” 的缩写,提供安全的远程登录。
scp(安全文件传输)
记忆方法:将其看作 “secure copy” 的缩写,提供安全的文件传输。
cron(定时任务)
记忆方法:将其看作 “chronos”(时间)的缩写,用于执行定时任务。
systemctl(控制系统服务)
记忆方法:将其理解为 “system control” 的缩写,用于管理系统服务。
passwd(更改用户密码)
记忆方法:将其看作 “password”(密码)的简写,用于修改密码。
useradd(添加用户)
记忆方法:想象你在 “add”(添加)一个 “user”(用户)。
usermod(修改用户属性)
记忆方法:将其看作 “user modify” 的缩写,用于修改用户属性。
groupadd(添加用户组)
记忆方法:想象你在 “add”(添加)一个 “group”(组)。
awk(文本处理)
记忆方法:想象你在用一个 “awk”(鹰嘴锄)挖掘文本。
sed(流编辑器)
记忆方法:将其看作 “stream editor” 的缩写,用于编辑数据流。
cut(删除文件的某些部分)
记忆方法:想象你用剪刀 “cut”(剪切)掉文件的一部分。
sort(对文本文件进行排序)
记忆方法:将其看作 “sort”(排序)的意思,对文件内容进行排序。
uniq(从文本文件中删除重复行)
记忆方法:将其看作 “unique”(唯一)的简写,只保留唯一的行。
wc(统计文本文件的行数、字数和字符数)
记忆方法:将其理解为 “word count” 的缩写,用于统计文件的内容。
head(显示文件的开头部分)
记忆方法:想象你在查看文件的 “head”(头部)。
tail(显示文件的结尾部分)
记忆方法:想象你在查看文件的 “tail”(尾部)。
ln(创建硬链接或符号链接)
记忆方法:将其看作 “link”(链接)的简写,用于创建文件链接。
alias(为命令创建别名)
记忆方法:想象你给某个命令起了一个新的 “alias”(别名)。
mount(挂载文件系统)
记忆方法:想象你把一个文件系统 “mount”(安装)到某个目录。
umount(卸载文件系统)
记忆方法:将其看作 “unmount”(卸载)的简写,用于卸载文件系统。
fdisk(磁盘分区管理)
记忆方法:将其看作 “fixed disk” 的缩写,用于管理磁盘分区。
dd(复制和转换文件)
记忆方法:将其看作 “data duplicator” 的缩写,用于复制和转换文件。

四、shell中的通配符

Shell脚本中的通配(Wildcard)是一种特殊的字符,用于匹配文件名或路径。通配符非常有用,因为它们允许你一次性对多个文件执行命令,而不是逐一指定每个文件名。以下是一些常用的通配符:

  1. *(星号):匹配任意数量的任意字符。

    • 例子:*.txt 匹配任何以.txt结尾的文件。
  2. ?(问号):匹配单个任意字符。

    • 例子:file?.txt 匹配以file开头、.txt结尾,中间有一个任意字符的文件,例如file1.txtfilea.txt
  3. [...](方括号):匹配方括号内的任意单个字符。

    • 例子:file[1-9].txt 匹配以file开头、.txt结尾,中间有一个1到9之间的数字的文件。
  4. [!...]:匹配除了方括号内的任意单个字符之外的字符。

    • 例子:file[!1].txt 匹配以file开头、.txt结尾,中间不是1的任意单个字符的文件。
  5. {}(大括号):匹配大括号内的多个选项(不包含空格)。

    • 例子:{file1,file2}.txt 匹配file1.txtfile2.txt
  6. **:在某些shell中,双星号**可以匹配任意数量的目录。

    • 例子:somedir/**/*.txt 匹配somedir目录及其所有子目录下的.txt文件。

示例

假设你在当前目录下有以下文件:

document1.txt
document2.txt
image.png
notes.txt
script.sh
  • 使用*.txt运行ls命令将会列出所有以.txt结尾的文件:

    ls *.txt
    
  • 使用doc?ment?.txt将会匹配document1.txtdocument2.txt

    ls doc?ment?.txt
    
  • 使用file[1-3].txt将会匹配file1.txtfile2.txtfile3.txt(如果这些文件存在):

    ls file[1-3].txt
    
  • 使用{script,notes}.txt将会匹配script.txtnotes.txt(如果这些文件存在):

    ls {script,notes}.txt
    
  • 在bash 4.0及以上版本中,使用**来匹配所有子目录下的.txt文件:

    ls **/*.txt
    

通配符是shell脚本中非常强大的工具,可以大大提高工作效率,尤其是在处理大量文件时。

五、shell脚本相关

Shell脚本是一段由一系列命令组成的文本文件,这些命令可以由shell(一种命令行解释器)执行。Shell脚本在Unix、Linux和类Unix操作系统中非常常见,用于自动化任务、执行系统管理、文件操作、文本处理等。

特点和用途:

  • 自动化: Shell脚本可以自动执行重复性的任务,减少人工干预。
  • 简洁性: 脚本通常使用简短的命令行语法,易于编写和理解。
  • 可重用性: 编写一次脚本后,可以多次重复使用。
  • 强大的文本处理: 利用shell内置的文本处理功能或外部工具如sedawk等,进行复杂的文本分析和转换。
  • 系统管理: 用于系统启动、监控、备份、恢复等任务。

Shell脚本的基本结构:

  1. Shebang: 脚本的第一行通常是shebang(#!),指明脚本应该由哪个解释器执行。例如,#!/bin/bash表示使用Bash解释器。

  2. 变量: Shell脚本可以定义和使用变量来存储数据。

  3. 控制结构: 包括条件语句(if-else)、循环(for、while)等。

  4. 函数: 脚本可以包含函数,以模块化的方式组织代码。

  5. 注释: 以#开头的行是注释,不会被执行,用于解释脚本的功能。

  6. 命令: 脚本由一系列命令组成,可以是系统命令、shell内置命令或调用其他脚本和程序。

示例:

下面是一个简单的shell脚本示例,该脚本打印出"Hello, World!":

#!/bin/bash
# 这是一个简单的shell脚本

echo "Hello, World!"

保存这段代码为hello_world.sh,然后按照前面提到的步骤使它可执行并执行它。

Shell脚本是系统管理员和开发人员的重要工具,它们提高了工作效率,减少了错误,并使得复杂的任务变得简单化。

posted @   陆舟LandBoat  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示