[01 Linux&Shell ] 清华大学电子系科协软件部2023暑期培训

简介: [01 Linux&Shell ] 清华大学电子系科协软件部2023暑期培训

本视频为清华大学电子系科协软件部2023年暑期培训内容的录屏,主要培训内容为游戏开发、网站建设中常用的软件工具,为未来一年软件部新部员维护科协网站、开发清华大学人工智能挑战赛(THUAI)作知识铺垫。本次培训还邀请到两位嘉宾讲授Minecraft红石与计算机图形学的部分内容作为拓展。 电子系公众号中有培训内容的简介:https://mp.weixin.qq.com/s/aCCMlLYLMppVT8fiC11-KA

本次培训的课件与作业链接如下:

链接:https://pan.baidu.com/s/1tGu16pndFFc3wdmwS5aG0g?pwd=6ufe

提取码:6ufe

2023 年暑期培训终于出啦!内容涉及从 .NET 开发到网站开发与运维等一系列多人协作开发的相关知识,让它成为你步入全栈开发的敲门砖。

此外,相比于往年的暑期培训,今年暑期培训邀请了清华大学的一位知名的精通计算机图形学的学生讲解《计算机图形学》的专业知识,并且该讲师开创性地以【电子信息与通信工程】的全新角度看待计算机图形学,更加深入地探讨了图形学的本质,这在图形学入门教学中属于【首创】,欢迎同学们来听!

目录

Linux&Shell

windows powershell

文件常见存储路径:

列表命令ls:

目录切换命令cd:

管理目录

处理文件

复制

移动

文件显示和编辑

文档编辑器vim

linux用户管理

用户账号的新建修改 查看 删除

切换用户su

修改密码password

用户组

linux系统和磁盘管理

系统管理

软件安装

其他常用Shell命令

shell脚本

SSH超简介

Linux&Shell

Linux 是一种开放源代码的类 Unix 操作系统,它可以在多种平台上运行,包括个人计算机、服务器和嵌入式系统。Shell 是 Linux 系统中的命令行解释器,它允许用户与操作系统进行交互,执行命令并管理文件系统。在 Linux 中,有多种不同的 Shell,比如常见的 Bash(Bourne Again Shell)、Zsh(Z Shell)和Fish 等。

Shell 编程是指使用 Shell 脚本编写一系列命令来完成特定任务,这些任务可以包括文件操作、系统管理、自动化任务等。Shell 脚本可以帮助用户简化重复性操作,提高工作效率。

当你使用 Linux 系统时,Shell 编程可以帮助你完成许多任务,比如:

  1. 文件操作:创建、复制、移动和删除文件或目录等。
  2. 系统管理:执行系统命令、管理进程、监控系统资源等。
  3. 自动化任务:编写脚本来定时运行任务,比如备份数据、清理临时文件等。
  4. 用户交互:编写交互式脚本,提示用户输入信息并做出相应的处理。

windows powershell

Windows PowerShell 是由 Microsoft 开发的命令行脚本环境和任务自动化框架。它是 Windows 系统中的一种强大工具,可以帮助用户管理和控制操作系统、应用程序和网络服务等。

与传统的命令提示符(Command Prompt)相比,PowerShell 提供了更多功能和灵活性。它使用了对象导向的脚本语言,具有丰富的命令集和强大的脚本编程能力。

使用 PowerShell,你可以:

  1. 执行系统管理任务,如创建和管理用户账户、安装和卸载软件等。
  2. 自动化重复性的任务,比如批量处理文件、定期备份数据等。
  3. 编写脚本来监控和管理网络服务、服务器和应用程序等。
  4. 与其他 Microsoft 产品(如 Active Directory、Exchange Server)进行集成和管理。

常见的操作和用途:

1. 执行命令和脚本:你可以直接在 PowerShell 窗口中输入命令,执行系统管理任务或运行脚本文件。例如,你可以使用 `Get-Process` 命令获取正在运行的进程列表。

2. 管理文件和目录:PowerShell 提供了许多命令来处理文件和目录。你可以使用 `Get-ChildItem` 命令列出目录中的文件和子目录,使用 `Copy-Item` 命令复制文件,使用 `Remove-Item` 命令删除文件等。

3. 系统管理和配置:PowerShell 允许你管理计算机、网络和操作系统设置。你可以使用命令行工具如 `Set-ExecutionPolicy` 来管理脚本执行策略,使用 `Get-Service` 命令获取系统服务的状态,使用 `Set-ItemProperty` 命令修改注册表项等。

4. 远程管理:PowerShell 提供了远程管理功能,你可以通过 PowerShell 连接到远程计算机,并执行命令和脚本。例如,你可以使用 `Enter-PSSession` 命令建立与远程计算机的交互式会话。

5. 脚本编写和自动化:你可以使用 PowerShell 编写脚本来自动化常见任务。脚本可以包括控制流、条件语句、循环等结构,以及调用其他命令和函数。你可以使用 `New-Item` 命令创建新的脚本文件,使用 `Invoke-Expression` 命令执行脚本等。

文件常见存储路径:

windows下的路径:

在 Windows 操作系统中,文件的常见存储路径可以是以下几种:

1. 绝对路径:绝对路径是指从文件系统的根目录开始的完整路径。在 Windows 中,根目录通常表示为驱动器字母(如 C、D)后跟冒号(:),例如 `C:\`、`D:\`。绝对路径可以包括多个目录层级,例如 `C:\Users\Username\Documents\file.txt`。

2. 相对路径:相对路径是相对于当前工作目录或其他已知目录的路径。例如,如果当前工作目录为 `C:\Users\Username`,则相对路径 `Documents\file.txt` 表示 `C:\Users\Username\Documents\file.txt`。

在 Unix 和 Linux 操作系统中,文件的路径表示方式略有不同:

1. 绝对路径:绝对路径从根目录 `/` 开始,并指定文件在整个文件系统中的完整路径。例如,`/home/username/file.txt` 表示根目录下的 `home` 目录中的 `username` 目录中的 `file.txt` 文件。

2. 相对路径:相对路径是相对于当前工作目录的路径。例如,如果当前工作目录为 `/home/username`,则相对路径 `Documents/file.txt` 表示 `/home/username/Documents/file.txt`。

Linux 采用虚拟目录的形式,将计算机所有存储设备的文件路径都纳入统一的单目录结构下,所有文件和目录都放在根目录 `/` 下。这意味着 Linux 中的绝对路径总是从根目录开始。

需要注意的是,Windows 使用反斜杠(\)作为路径分隔符,而 Unix 和 Linux 使用正斜杠(/)作为路径分隔符。

Unix下的路径:linux采用虚拟目录的形式,将计算机所有存储设备的文件路径都纳入统一的单目录下,所有文件盒目录都放在根目录 / 下

Windows和Linux在文件存储方面有几点显著的区别:

1. 文件路径表示:在Windows系统中,文件路径使用反斜杠(\)作为目录分隔符,例如 C:\Users\Username\Documents\File.txt。而在Linux系统中,文件路径使用正斜杠(/)作为目录分隔符,例如 /home/username/documents/file.txt。

2. 文件系统:Windows通常使用NTFS(New Technology File System)作为主要的文件系统,而Linux系统则支持多种文件系统,包括但不限于ext4、XFS、Btrfs等。这些文件系统在存储管理、权限控制等方面有不同的特点。

3. 文件权限:在Linux系统中,文件和目录的访问权限是通过用户、组和其他用户来控制的,可以设置读、写、执行等权限。而在Windows系统中,也有类似的文件权限控制,但采用了不同的权限模型。

4. 文件名大小写敏感:在Linux系统中,文件名是区分大小写的,而在Windows系统中,默认情况下文件名不区分大小写,这意味着在Windows系统中,文件名 MyFile.txt 和 myfile.txt 被视为相同的文件名。

列表命令ls:

当使用ls命令时,可以使用不同的参数来定制所需的输出。以下是每个参数的详细介绍:

- -a:该参数用于显示所有文件和目录,包括隐藏文件和目录(以点号开头的文件或目录)。默认情况下,ls命令不会显示隐藏文件和目录。

- -l:使用长格式列表显示文件和目录的详细信息。该参数将列出文件类型、权限、所有者、组、文件大小、创建时间等详细信息。

- -r:该参数用于倒序显示文件和目录,即从后往前排序。默认情况下,ls命令按照字母顺序升序排列。

- -t:按照修改时间(最近修改的文件或目录显示在最前面)排序。使用该参数,将根据文件或目录的修改时间进行排序。

- -A:类似于-a参数,但不会列出当前目录和上级目录的简单链接文件(“.”和“..”)。这对于只想查看当前目录下的文件和目录而不包括链接文件的情况很有用。

- -F:在文件名后面加上一个特殊符号来表示文件类型。例如,目录后面加上“/”,可执行文件加上“*”,符号链接加上“@”等。

- -R:递归地列出子目录下的所有文件和目录。使用该参数,将会显示当前目录及其所有子目录中的文件和目录。

这些参数可以组合使用,以满足不同的需求。例如,要列出当前目录下的所有文件和目录,并且显示详细信息和按照修改时间排序,可以使用以下命令:

```

ls -alt

```

这将会把结果按照修改时间由新到旧的顺序列出,并且列出每个文件和目录的详细信息。

目录切换命令cd:

cd [destination]

cd命令是在命令行界面中用于改变当前工作目录的命令。它的基本语法如下:

```

cd [destination]

```

其中,[destination]表示要切换到的目标目录的路径。

- 如果目标目录是一个绝对路径(以斜杠“/”开头),那么cd命令将直接切换到该目录。例如:`cd /home/user/Documents`

- 如果目标目录是一个相对路径(不以斜杠“/”开头),那么cd命令将根据当前工作目录来解析该路径。例如:`cd Documents`

- 如果目标目录是一个点号“.”,那么cd命令将保持当前工作目录不变,相当于没有任何变化。

- 如果目标目录是两个点号“..”,那么cd命令将切换到当前工作目录的父目录。

- 如果目标目录是一个短横线“-”,那么cd命令将切换到上次所在的目录。这在需要在两个不同目录之间频繁切换时很有用。

注意事项:

- 如果目标目录存在并且可访问,cd命令将切换到该目录。

- 如果目标目录不存在或无法访问,cd命令将会显示错误信息。

- 如果目标目录是一个文件而不是目录,cd命令也会显示错误信息。

使用cd命令可以快速切换工作目录,方便进行文件和目录的操作。

管理目录

在命令行界面中,可以使用以下命令来管理目录:

1. 创建目录:使用mkdir(make directory)命令可以创建新的目录。其基本语法如下:

```

mkdir [directory name]

```

其中,[directory name]表示要创建的目录名称。

例如,要在当前目录下创建一个名为"test"的目录,可以使用以下命令:

```

mkdir test

```

如果目录已经存在,则会显示错误信息。

2. 删除目录:使用rmdir(remove directory)命令可以删除指定的目录。其基本语法如下:

```

rmdir [directory name]

```

其中,[directory name]表示要删除的目录名称。

例如,要删除名为"test"的目录,可以使用以下命令:

```

rmdir test

```

但注意,如果目录下有文件或其他子目录,rmdir命令将无法删除该目录,并提示错误信息。如果你想要删除非空目录,可以使用rm命令的-r参数来递归删除整个目录树。例如:

```

rm -r test

```

这将删除test目录及其所有子目录和文件。

通过使用mkdir和rmdir命令,可以方便地创建和删除目录。需要注意的是,在删除目录时,必须确保目录为空,否则将无法删除成功。

处理文件

在命令行界面中,可以使用以下命令来处理文件:

1. 创建文件:使用touch命令可以创建一个新的空文件。其基本语法如下:

```

touch [filename]

```

其中,[filename]表示要创建的文件名称。

例如,要创建一个名为"test.txt"的文件,可以使用以下命令:

```

touch test.txt

```

如果文件已经存在,则touch命令会更新文件的访问和修改时间,而不会更改文件内容。

2. 复制文件:使用cp(copy)命令可以复制文件或目录。其基本语法如下:

```

cp [source] [destination]

```

其中,[source]表示要复制的源文件或目录,[destination]表示复制后的目标位置。

例如,要将一个名为"file.txt"的文件复制到目录"backup"中,可以使用以下命令:

```

cp file.txt backup/

```

如果要复制整个目录及其内容,可以使用-r参数来递归复制。例如:

```

cp -r folder/ backup/

```

3. 移动文件:使用mv(move)命令可以移动文件或目录,也可以用于对文件或目录进行重命名。其基本语法如下:

```

mv [source] [destination]

```

其中,[source]表示要移动或重命名的源文件或目录,[destination]表示移动或重命名后的目标位置。

例如,要将一个名为"file.txt"的文件移动到目录"documents"中,可以使用以下命令:

```

mv file.txt documents/

```

如果要对文件进行重命名,可以将目标位置指定为新的文件名。例如,要将"file.txt"重命名为"newfile.txt",可以使用以下命令:

```

mv file.txt newfile.txt

```

总之,通过使用touch命令创建文件,以及使用cp和mv命令复制和移动文件,可以方便地进行文件管理操作。

复制

cp[options] source destination

1. -i:在复制文件时进行交互式确认。如果目标文件已经存在,则会询问是否覆盖。

例如,要复制一个名为"file.txt"的文件到目录"backup"中,并在目标位置存在同名文件时进行确认提示,可以使用以下命令:

```

cp -i file.txt backup/

```

2. -r:递归复制整个目录及其内容。用于复制目录时必须使用-r选项,否则会报错。

例如,要复制一个名为"folder"的目录及其所有子目录和文件到目录"backup"中,可以使用以下命令:

```

cp -r folder/ backup/

```

请注意,以上命令中的斜杠(/)表示复制目录本身,而不是目录下的内容。

总结起来,通过使用cp命令的选项,你可以在复制文件时进行确认提示(-i选项),以及递归复制目录及其内容(-r选项)。

移动

mv [options] source destination

1. -i:在移动文件时进行交互式确认。如果目标位置已经存在同名文件,则会询问是否覆盖。

例如,要将一个名为"file.txt"的文件移动到目录"documents"中,并在目标位置存在同名文件时进行确认提示,可以使用以下命令:

```

mv -i file.txt documents/

```

2. -n:不要覆盖已有的文件。如果目标位置已经存在同名文件,则不执行移动操作。

例如,要将一个名为"file.txt"的文件移动到目录"documents"中,但不覆盖已存在的同名文件,可以使用以下命令:

```

mv -n file.txt documents/

```

3. -u:只在源文件比目标文件新或者目标文件不存在时才执行移动操作。

例如,要将一个名为"file.txt"的文件移动到目录"documents"中,只有当源文件比目标文件新或者目标文件不存在时才执行移动操作,可以使用以下命令:

```

mv -u file.txt documents/

```

通过使用mv命令的选项,你可以在移动文件时进行确认提示(-i选项)、避免覆盖已有文件(-n选项)以及只在需要时才执行移动操作(-u选项)。

删除文件或目录rm

rm[options] [file or directory]

以下是关于rm命令的选项解释:

1. -i:在删除文件或目录时进行交互式确认。在执行删除操作前,会询问用户是否确认删除。

例如,要删除一个名为"file.txt"的文件,并在执行删除操作前进行确认提示,可以使用以下命令:

```

rm -i file.txt

```

2. -r:递归删除目录及其内容。用于删除目录时必须使用-r选项,否则会报错。

例如,要删除一个名为"folder"的目录及其所有子目录和文件,可以使用以下命令:

```

rm -r folder/

```

请注意,删除目录时请谨慎操作,因为递归删除会将目录及其内容全部删除。

3. -f:强制删除文件或目录,不进行任何确认提示。

例如,要强制删除一个名为"file.txt"的文件,可以使用以下命令:

```

rm -f file.txt

```

使用-f选项需要小心,因为它会直接删除文件或目录,而不进行任何确认。

4. -v:显示详细的删除信息。在执行删除操作时,会显示每个被删除的文件或目录的名称。

例如,要删除一个名为"file.txt"的文件,并显示删除信息,可以使用以下命令:

```

rm -v file.txt

```

通过使用rm命令的选项,你可以在删除文件或目录时进行确认提示(-i选项)、递归删除目录及其内容(-r选项)、强制删除文件或目录(-f选项)以及显示详细删除信息(-v选项)。

文件显示和编辑

连接并显示内容cat

过滤文件内容grep

cat命令用于连接文件并显示其内容。它可以用来查看文件的内容,也可以将多个文件的内容合并输出。

以下是cat命令的基本用法:

```

cat [file1] [file2] ...

```

例如,要显示一个名为"file.txt"的文件的内容,可以使用以下命令:

```

cat file.txt

```

如果要显示多个文件的内容,可以将它们作为参数传递给cat命令,它们的内容将按顺序连接并输出。

```

cat file1.txt file2.txt

```

另外,如果要将cat命令的输出写入到另一个文件中,可以使用重定向操作符">"。

```

cat file.txt > output.txt

```

这会将"file.txt"的内容输出到"output.txt"文件中,如果"output.txt"不存在,则会创建该文件。

接下来是grep命令,它用于过滤文件内容。grep命令可以根据指定的模式搜索文件,并打印匹配的行。

以下是grep命令的基本用法:

```

grep [options] pattern [file1] [file2] ...

```

例如,要在一个名为"file.txt"的文件中搜索包含特定关键词的行,可以使用以下命令:

```

grep "keyword" file.txt

```

grep命令还支持一些选项,例如:

- -i:忽略大小写。

- -v:反转匹配,只打印不匹配的行。

- -r:递归搜索目录及其子目录中的文件。

例如,要在一个名为"file.txt"的文件中搜索包含关键词"example"的行,并忽略大小写,可以使用以下命令:

```

grep -i "example" file.txt

```

补充:正则表达式

正则表达式是一种强大的模式匹配工具,可以用于在文本中搜索、匹配和处理特定模式的字符串。它可以用于许多命令和编程语言中,包括grep、sed和awk等。

以下是一些常用的正则表达式元字符和符号:

1. .(点):匹配除换行符以外的任意一个字符。

2. *:匹配前面的元素零次或多次。

3. +:匹配前面的元素一次或多次。

4. ?:匹配前面的元素零次或一次。

5. ^:匹配字符串的开始位置。

6. $:匹配字符串的结束位置。

7. []:匹配方括号内的任意一个字符。

8. [^]:匹配不在方括号内的任意一个字符。

9. ():标记一个子表达式的开始和结束位置。

10. \|:用于在多个模式之间选择一个。

例如,要在文件中搜索以"cat"开头的单词,可以使用以下正则表达式:

```

^cat

```

要匹配一个包含数字和字母的字符串,可以使用以下正则表达式:

```

[A-Za-z0-9]+

```

正则表达式也支持一些特殊字符类别:

- \d:匹配一个数字。

- \w:匹配一个字母、数字或下划线。

- \s:匹配一个空白字符(空格、制表符或换行符)。

例如,要匹配一个包含三个数字的字符串,可以使用以下正则表达式:

```

\d{3}

```

这只是正则表达式的一些基础知识,正则表达式还有更多的用法和语法规则。如果你想深入学习正则表达式,请查阅相关的文档和教程。希望这些补充对你有所帮助!如果还有其他问题,请随时提问。

通配符:

通配符是用来匹配文件名或路径名的特殊字符,常用于Linux和Unix系统中的文件操作。以下是一些常见的通配符:

1. *:匹配零个或多个任意字符。

2. ?:匹配单个任意字符。

3. []:匹配括号内的任意一个字符。

4. [!]:匹配不在括号内的任意一个字符。

例如,如果你想列出所有以".txt"结尾的文件,可以使用以下命令:

```

ls *.txt

```

这会列出当前目录下所有以".txt"结尾的文件。其中的"*"通配符表示匹配任意字符任意次数。

如果你只想列出文件名为"a.txt"或"b.txt"的文件,可以使用以下命令:

```

ls [ab].txt

```

这里的"[ab]"表示匹配字符"a"或"b",而后面的".txt"表示文件扩展名为".txt"。

通配符可以帮助你在命令行中快速筛选文件,进行批量操作等。

文档编辑器vim

vim分为三种模式:

command mode

insert mode

last line mode

Vim(Vi IMproved)是一款流行的文本编辑器,它具有三种主要模式:命令模式(Command mode)、插入模式(Insert mode)和末行模式(Last line mode)。

在命令模式下,你可以使用各种命令来编辑文本文件。例如,你可以使用移动光标的命令进行导航,删除和复制文本等操作。

在插入模式下,你可以像普通文本编辑器一样输入和修改文本。按下i键可以进入插入模式,在此模式下,你可以自由地编辑文本。

末行模式是一种特殊的模式,可以通过在命令模式下输入冒号(:)进入。在这个模式下,你可以执行保存文件、退出编辑器等命令。

要切换到不同的模式,你可以按下Esc键回到命令模式,或者在命令模式下输入相应的命令以进入其他模式。

Vim 的命令模式是其最重要的模式,它提供了强大而高效的编辑功能,使得用户可以在不用鼠标的情况下快速编辑文本文件。

当你打开 Vim 编辑器时,你将进入命令模式。在命令模式下,你可以使用各种命令来编辑文本。

以下是一些常用的命令:

1. 光标移动命令:

  - h:向左移动一个字符

  - j:向下移动一行

  - k:向上移动一行

  - l:向右移动一个字符

  - 0:移动到当前行的开头

  - $:移动到当前行的结尾

  - gg:移动到文件的开头

  - G:移动到文件的结尾

2. 插入和修改命令:

  - i:在光标前插入文本

  - a:在光标后插入文本

  - o:在当前行下方插入新行

  - O:在当前行上方插入新行

  - r:替换当前字符

  - cw:修改从当前位置到单词结尾的文本

3. 删除和复制命令:

  - x:删除当前字符

  - dd:删除当前行

  - dw:删除从当前位置到单词结尾的文本

  - yy:复制当前行

  - p:粘贴复制的内容

4. 撤销和重做命令:

  - u:撤销上一次操作

  - Ctrl + r:重做被撤销的操作

5. 文件保存和退出命令:

  - :w:保存文件

  - :q:退出编辑器

  - :wq:保存文件并退出编辑器

linux用户管理

同一服务器多个用户时

用户账号的新建修改 查看 删除

在 Linux 中,可以使用一些命令来管理用户账号,包括新建、修改、查看和删除用户账号。以下是涉及到用户账号管理的常用命令:

1. 新建用户账号:可以使用 `useradd` 命令来创建一个新的用户账号。例如,要创建一个名为 "newuser" 的用户账号,可以执行以下命令:

  ```

  useradd newuser

  ```

2. 修改用户账号:可以使用 `usermod` 命令来修改用户账号的属性。例如,要将用户 "newuser" 的登录目录更改为 "/home/newdir",可以执行以下命令:

  ```

  usermod -d /home/newdir newuser

  ```

3. 查看用户账号:可以使用 `cat` 命令或者 `less` 命令来查看 `/etc/passwd` 文件,该文件记录了系统中所有用户账号的信息。例如,要查看用户 "newuser" 的信息,可以执行以下命令:

  ```

  cat /etc/passwd | grep newuser

  ```

4. 删除用户账号:可以使用 `userdel` 命令来删除用户账号。例如,要删除用户 "newuser",可以执行以下命令:

  ```

  userdel newuser

  ```

5. 切换用户:可以使用 `su` 命令来切换到另一个用户账号。例如,要切换到用户 "newuser",可以执行以下命令:

  ```

  su newuser

  ```

6. 修改用户密码:可以使用 `passwd` 命令来修改用户的登录密码。例如,要修改用户 "newuser" 的密码,可以执行以下命令:

  ```

  passwd newuser

  ```

7. 赋予用户超级用户权限:可以将用户添加到 `sudo` 组中,以赋予其超级用户权限。可以使用 `usermod` 命令来将用户添加到 `sudo` 组中。例如,要将用户 "newuser" 添加到 `sudo` 组中,可以执行以下命令:

  ```

  usermod -aG sudo newuser

  ```

请注意,在执行涉及用户账号管理的命令时,可能需要具有管理员权限(如 root 用户)才能执行。对于一些命令,你可能需要使用 `sudo` 命令以管理员身份执行。

切换用户su

修改密码password

修改用户属性 usermod

查看用户/etc/passwd

赋予用户超级用户权限

删除用户 userdel

用户组

用户组操作

新建 修改 删除 切换 查看用户所属的组

用户 用户组权限

1. 用户组的操作:

  - 新建用户组:可以使用 `groupadd` 命令来创建一个新的用户组。例如,要创建一个名为 "newgroup" 的用户组,可以执行以下命令:

    ```

    groupadd newgroup

    ```

  - 修改用户组:可以使用 `groupmod` 命令来修改用户组的属性。例如,要将用户组 "newgroup" 的名称更改为 "mygroup",可以执行以下命令:

    ```

    groupmod -n mygroup newgroup

    ```

  - 删除用户组:可以使用 `groupdel` 命令来删除用户组。例如,要删除用户组 "newgroup",可以执行以下命令:

    ```

    groupdel newgroup

    ```

2. 查看用户所属的组:可以使用 `groups` 命令来查看当前用户所属的所有用户组。例如,要查看当前用户所属的所有用户组,可以执行以下命令:

  ```

  groups

  ```

  如果要查看其他用户所属的用户组,可以在命令后面加上用户名。例如,要查看用户 "newuser" 所属的所有用户组,可以执行以下命令:

  ```

  groups newuser

  ```

3. 用户组权限:

  - 用户组可以用于管理文件和目录的访问权限。可以使用 `chgrp` 命令来更改文件或目录的所属用户组。例如,要将文件 "myfile.txt" 的用户组更改为 "mygroup",可以执行以下命令:

    ```

    chgrp mygroup myfile.txt

    ```

  - 用户组权限可以使用 chmod 命令来设置。例如,要将文件 "myfile.txt" 的所属用户组的读写权限设置为只有该组用户可以读写,可以执行以下命令:

    ```

    chmod g+rw myfile.txt

    ```

    表示在原有权限的基础上,增加了组用户的读写权限。其中,g 表示用户组,+ 表示增加权限,rw 表示读写权限。

请注意,在执行涉及用户组的操作时,可能需要具有管理员权限(如 root 用户)才能执行。对于一些命令,你可能需要使用 `sudo` 命令以管理员身份执行。

1. 修改文件权限 chmod:

  - chmod 命令用于修改文件或目录的访问权限。它可以通过数字表示法或符号表示法来指定权限。

  - 符号表示法中,r 表示读权限,w 表示写权限,x 表示执行权限,u 表示文件所有者,g 表示文件所属用户组,o 表示其他用户,a 表示所有用户。

  - 修改文件权限的命令格式为:

    ```

    chmod [选项] 模式 文件

    ```

  - 其中,模式可以是数字形式的权限表示或符号形式的权限表示,文件是要修改权限的文件或目录名。

  - 例如,要将文件 "myfile.txt" 的所有用户的读写权限设置为只读,可以执行以下命令:

    ```

    chmod 444 myfile.txt

    ```

  - 在数字形式中,4 表示只读权限,6 表示读写权限,7 表示读写执行权限。

2. 修改文件主和属组 chown:

  - chown 命令用于修改文件或目录的所有者和所属用户组。其命令格式为:

    ```

    chown [选项] 用户名:用户组名 文件或目录

    ```

  - 其中,用户名是要设置的文件或目录的新所有者,用户组名是要设置的文件或目录的新所属用户组,文件或目录是要更改所有权的文件或目录名。

  - 例如,要将文件 "myfile.txt" 的所有者更改为用户 "newuser",所属用户组更改为用户组 "newgroup",可以执行以下命令:

    ```

    chown newuser:newgroup myfile.txt

    ```

请注意,在执行涉及文件权限和所有权的操作时,可能需要具有管理员权限(如 root 用户)才能执行。对于一些命令,你可能需要使用 `sudo` 命令以管理员身份执行。

linux系统和磁盘管理

常见的命令:

df

du

fdisk

在 Linux 系统中,磁盘管理是非常重要的。以下是一些常见的命令和工具:

1. df:显示文件系统的磁盘空间利用情况,可以查看已挂载的文件系统的使用情况。

```bash

df -h          # 以人类可读的方式显示磁盘使用情况

df -i          # 显示inode的使用情况

```

2. du:显示目录或文件的磁盘使用情况,常用于查看指定目录下的文件大小。

```bash

du -sh /path/to/directory    # 查看指定目录的大小,-s 表示总计,-h 表示人类可读的格式

du -h --max-depth=1 /path/to/directory   # 查看指定目录下第一层子目录的大小

```

3. fdisk:磁盘分区工具,用于对磁盘进行分区和管理。

```bash

fdisk -l          # 列出所有磁盘分区的详细信息

fdisk /dev/sdX    # 进入互动模式,对指定的磁盘进行分区操作

```

除了上述命令外,还有一些其他常用的磁盘管理命令和工具,比如:

- mkfs:用于创建文件系统

- mount:挂载文件系统

- umount:卸载文件系统

- lsblk:列出块设备信息

- blkid:显示块设备的 UUID 和文件系统类型

系统管理

查看cpu和内存占用top

终止进程kill

在 Linux 系统中,你可以使用以下命令来查看 CPU 和内存的占用情况:

1. top:显示系统中正在运行的进程和其资源占用情况,包括 CPU 占用率、内存占用率等。

```bash

top          # 打开 top 命令界面,按下 "q" 键退出

```

2. htop:类似于 top 命令,但提供了更多的交互式功能和可视化效果。

```bash

htop         # 打开 htop 命令界面,按下 "q" 键退出

```

要终止进程,可以使用 kill 命令。首先,使用 top 或 htop 命令查找要终止的进程的 PID(进程 ID),然后使用 kill 命令加上 PID 来终止进程。

```bash

kill PID        # 终止指定 PID 的进程

killall process_name     # 终止所有名称为 process_name 的进程

```

其中,PID 是进程的唯一标识符,process_name 是进程的名称。

注意:在使用 kill 命令时,请确保你有足够的权限来终止进程。某些进程可能需要 root 用户权限才能被终止。

软件安装

apt(软件包管理工具)

在 Ubuntu 和其他基于 Debian 的 Linux 发行版中,apt(Advanced Package Tool)是一个常用的软件包管理工具,用于从官方软件源中安装、更新和卸载软件包。以下是一些常用的 apt 命令:

1. 更新软件源索引:

```bash

sudo apt update

```

2. 安装软件包:

```bash

sudo apt install package_name

```

3. 升级已安装的软件包:

```bash

sudo apt upgrade

```

4. 卸载软件包:

```bash

sudo apt remove package_name

```

5. 搜索软件包:

```bash

apt search keyword

```

6. 显示软件包信息:

```bash

apt show package_name

```

7. 清理本地软件包缓存:

```bash

sudo apt clean

```

除了上述命令外,apt 还有其他的选项和用法。你可以使用 man apt 命令来查看完整的帮助文档。

请注意,在使用 apt 命令时,需要使用 sudo 或 root 用户权限来执行。另外,为了确保软件包的安全性和稳定性,建议只从官方软件源中安装软件包。

其他常用Shell命令

查找文件find

输入输出重定向

管道(pipe)

practice:查看某文件是否处于当前目录下

  1. find 命令:用于在指定目录下查找文件。它可以根据多个条件(如文件名、文件类型、文件大小等)进行搜索,并返回匹配的结果。
  2. 输入输出重定向:在Shell中,输入重定向和输出重定向是常见的操作。使用 < 符号可以将一个文件作为命令的输入,例如 command < input.txt。使用 > 符号可以将命令的输出重定向到一个文件中,例如 command > output.txt
  3. 管道(pipe):管道符 | 用于将一个命令的输出作为另一个命令的输入。这样可以实现多个命令之间的数据传递和处理。例如,command1 | command2command1 的输出作为 command2 的输入。
  4. ls 命令:用于列出目录中的文件和子目录。通过指定不同的选项,可以获取更详细的信息,例如文件大小、权限和修改日期等。例如,ls -l 将以长格式显示文件列表。

shell脚本

在Shell中运行的脚本程序,由Shell作为脚本解释器

基础语法

函数

在Shell中,脚本程序是由Shell作为脚本解释器来运行的。你可以使用任何文本编辑器创建一个以 `.sh` 结尾的文件,并在其中编写Shell脚本。

以下是一些Shell脚本的基础语法:

1. Shebang(解释器指令):每个Shell脚本的第一行通常都会包含一个Shebang行,用于指定要使用的Shell解释器。例如,`#!/bin/bash` 表示使用Bash作为解释器。

2. 变量:在Shell脚本中,你可以使用变量来存储和操作数据。变量的命名规则是以字母或下划线开头,后面可以跟字母、数字或下划线。赋值时不需要使用等号两边有空格。例如:`name="John"`。

3. 命令执行:可以使用反引号 \` 或 `$()` 来执行命令,并将结果赋给变量。例如:`files=$(ls)`。

4. 注释:可以使用 `#` 符号来添加注释,注释部分将被Shell忽略。

5. 控制结构:常见的控制结构包括条件语句(if-else)、循环语句(for、while)和函数等。这些结构用于根据条件执行不同的代码块或重复执行一段代码。

6. 函数:你可以在Shell脚本中定义和调用函数。函数可以接受参数,并可以在脚本中多次调用。例如:

```bash

my_function() {

 echo "Hello, $1!"

}

my_function "John"

```

以上是Shell脚本的基础语法。通过编写Shell脚本,你可以自动化执行一系列命令和操作,提高工作效率。

请注意,Shell脚本的具体语法可能因不同的Shell解释器而有所差异。常见的Shell解释器包括Bash(Bourne Again SHell)、Sh(Bourne SHell)和Zsh(Z Shell)等。

Shell环境变量

(参考笔记里的)

SSH超简介

SSH(Secure Shell)是一种安全的远程登录协议,可以在不安全的网络中加密数据传输。通过SSH,你可以从本地计算机连接到远程服务器,并在远程服务器上执行命令和操作。

以下是SSH的超简介:

1. SSH客户端:需要在本地计算机上安装SSH客户端(如OpenSSH),以便连接到远程服务器。在Linux和macOS等Unix系统中,通常已经自带了SSH客户端。在Windows系统中,可以使用PuTTY等第三方SSH客户端。

2. 连接命令:可以使用 `ssh` 命令连接到远程服务器。例如:`ssh username@remote_host`,其中 `username` 是你在远程服务器上的用户名,`remote_host` 是远程服务器的IP地址或主机名。

3. 认证方式:SSH支持多种认证方式,包括密码认证、公钥认证和身份证书认证等。其中,最常见的是使用密码或公钥认证。在公钥认证中,你需要在本地计算机上生成一对密钥(公钥和私钥),将公钥上传到远程服务器,并将私钥保存在本地计算机上。这样,在连接到远程服务器时,你就可以使用私钥进行认证,而无需输入密码。

4. 文件传输:除了远程登录外,SSH还支持通过SCP(Secure Copy)和SFTP(Secure File Transfer Protocol)等协议进行文件传输。这些协议都使用SSH加密数据传输,因此非常安全。

目录
相关文章
|
6天前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
14 2
|
6天前
|
网络协议 Shell Linux
LabVIEW 在NI Linux实时设备上访问Shell
LabVIEW 在NI Linux实时设备上访问Shell
12 0
|
6天前
|
Shell Linux
【Linux】进程实践项目(更新中) — 自主shell编写
前几篇文章,我们学习进程的相关知识:进程概念,进程替换,进程控制。熟悉了进程到底是个什么事情,接下来我们来做一个实践,来运用我们所学的相关知识。这个项目就是手搓一个shell模块,模拟实现Xshell中的命令行输入。
14 1
|
6天前
|
Shell Linux 信息无障碍
5 个有用的 Linux Shell 转义序列
5 个有用的 Linux Shell 转义序列
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
30 5
|
6天前
|
Linux Shell 程序员
【Linux】权限(shell运行原理、概念,Linux权限)
【Linux】权限(shell运行原理、概念,Linux权限)
17 2
|
6天前
|
存储 运维 Java
Linux笔记02 —— Shell补充
Linux笔记02 —— Shell补充
35 2
|
6天前
|
安全 Linux Shell
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
20 1
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
16 3
|
6天前
|
监控 网络协议 数据可视化
Shell脚本查看linux系统性能瓶颈
Shell脚本查看linux系统性能瓶颈