Featured image of post linux_roadmap学习

linux_roadmap学习

roadmap.sh系统学习linux基础记录

题外话

听学长指示闻着味就过来了 体验以后觉得不错,roadmap.sh非常适合入门学习,而且是交互式的,推荐用于某项技能的入门基础快速学习,但是要注意是 全英文 的,不想啃就开翻译插件吧

basics navigation

commands and basical knowledge

Basic commands:

  • cd: change directory
  • ls: list files and direrctories in the current directory
  • pwd: view working directory
  • man: view manual page for a command(查看某个指令的详解)

files and directories:

  • 创建文件
    • touch: 在linux中用touch命令创建空文件
      touch newfile.txt
    • cat: cat > newfile.txt 如果不存在newfile.txt则创建,存在则覆盖
  • 移动文件
    • mv:mv [options源文件] source destination source表示要移动的文件或目录,而destination表示目标位置
  • 删除文件
    • rm:rm example.txt永久性删除,如果想在删除前确认,可以使用-i选项:rm -i example.txt
    • rmdir:rmdir [directory]删除目录

Understanding Directory Hierarchy

在Linux中,了解目录层次结构是非常重要的。
linux系统的目录结构也称为 文件系统层次结构标准,即 FHS,它是一种定义的树结构,有助于防止文件分散在整个系统中,并且易于导航和组织。

  • /:根目录,文件系统的顶层
  • /home:用户主目录
  • /bin:二进制文件目录,包含常用的系统命令
  • /sbin:系统二进制文件目录,包含系统管理员使用的命令
  • /etc:系统配置文件目录
  • /var:可变数据(日志、假脱机文件)
  • /tmp: 临时文件目录
  • /usr:用户应用程序和数据目录
  • /lib:共享库

Editing Files

与其他操作系统一样,Linux允许出于多种目的编辑文件,无论您是需要配置某些系统功能还是编写脚本。Linux 默认提供多种文本编辑器,包括:

  • nano
  • vi/vim
  • emacs gedit
    每个编辑器都有自己的学习曲线和命令集
    例如,nano是一个简单的文本编辑器,它易于使用,非常适合简单的文本编辑。vi/vim则在另一方面,更为先进,提供广泛的功能和命令(老一辈的游刃有余) 要编辑文件首先要使用以下命令
1
2
3
4
5
nano [filename]

vi [filename] or vim [filename]

#我就用过这两个

Vim:编辑文件的基本工具

Vim(Vi Improved)是一款功能强大且灵活的文本编辑器,用于类 Unix 系统。它以原始 Vi 编辑器为基础,并添加了其他功能和改进,包括多级撤消、语法突出显示和大量用于文本操作的命令集。(虽然学起来很麻烦就是了)

Vim主要以三种模式运行:

  • Normal(for navigation and manipulation).
  • Insert(for editing text).
  • Command(for running commands).
    要插入新内容,使用i进入插入模式,然后输入内容。
    编辑完成后,按ESC键退出插入模式,然后输入:wq保存并退出。
    当然Vim的操作远不止这些

一些学习平台和教程:
边玩游戏边学Vim
循序渐进学习Vim
Vim实用技巧

Nano:简单的文本编辑器

Nano相对来说是更为流行、对用户来说友好的文本编辑器,用于直接在 Linux命令行界面(CLI Linux Command Line Interface) 中编辑文件。是一个vi和emacs的替代品。对初学者来说更为简单实用,介绍一些针对流行的Linux发行版的安装方式(一般来说很多发行版是自带的)

1
2
3
4
5
6
#Ubuntu based distributions
sudo apt update
sudo apt install nano

#Arch Linux
sudo pacman -S nano

Shell and Other Basics

Linux Shell是一个命令行界面,用于与操作系统进行交互。
shell 有助于简化系统命令,并充当用户和系统内核之间的中介界面。shell 可以高效快速地执行复杂任务。
Linux中有多种shell,包括:Bourne shell(sh)C shell(csh)Bourne-Again Shell(bash)等。

Command Path in Shell Basics

Simply put, command path is a variable that is used by the shell to determine where to look for the executable files to run.

通常,shell需要知道命令的可执行文件的绝对路径才能运行它,而 command path 允许shell自动按正确顺序搜索指示的目录。这些路径存储在 $PATH环境变量中。
echo $PATH将返回shell按顺序搜索的所有目录,以查找要运行的命令

Environment Variables

在Linux中,环境变量是 动态命名 的值,可以影响 shell 中正在运行的进程的行为。
它们存在于每个shell的进程当中,一个shell的进程的环境变量包括但不限于
user’s home directory, command search path, terminal type, and program preferences.
环境变量有助于实现 Unix 系统中灵活的自定义。它们提供了一种在 Linux 中的多个应用程序和进程之间共享配置设置的简单方法。

可以使用 env命令列出shell会话中的所有环境变量,如果想查看某个特定的变量,则可以使用echo $PATH命令

1
2
3
4
5
6

# List all environment variables
$ env

#Print a particular variable like PATH
echo $VARIABLE_NAME

具体地学习以及 实验 可见Linux环境变量

Command Help

上文就有提到,在Linux中学会使用命令帮助非常重要,它能使用户轻松浏览Linux Shell命令。 例如:
man [command]可以在任何命令钱调出其手册条目,其中解释了该命令的作用、语法、可用选项
help [command]选项也可以显示命令的可用选项和用法。更适合shell内置函数,对每个函数进行简要描述。 可见获取Linux命令帮助
以及如何使用手册页

Redirects

Linux的shell为user提供了一种管理命令/程序的输入和输出流的强大方法,称为 重定向
Linux是一个多用户和多任务操作系统,每个进程通常打开3个流:

  • 标准输入(stdin):默认情况下,从键盘读取输入。
  • 标准输出(stdout):默认情况下,将输出写入屏幕。
  • 标准错误(stderr):默认情况下,将错误消息写入屏幕。
    Linux的重定向功能便于我们操作流,从而提高运行命令/程序的灵活性。除了默认设备(键盘啦终端啦)外, I/O流可以重定向到其他文件/设备。

例如,如果想将命令输出存储到文件中而不是打印到控制台,可以使用">“运算符号

1
ls -al > file_list.txt

将"ls -al"的输出写入了txt中,如果已存在该文件就覆盖

experiment

逻辑命令和重定向

&&运算符

该运算符用于将多个命令链接在一起,并仅在第一个命令成功执行时才执行第二个命令,对于有依赖的命令链接很有用

||运算符

当第一个命令失败时才执行第二个命令。这对于提供后备选项或错误消息很有用。

»追加输出重定向符号

如果我们想要附加信息的话,可以使用”»“运算符,它将命令的输出附加到文件中,而不是覆盖现有内容。

1
2
3
4
echo "First line" > multiline.txt
echo "Second line" >> multiline.txt
echo "Third line" >> multiline.txt
cat multiline.txt
|管道运算符

管道运算符将一个命令的输出作为另一个命令的输入。这对于将一个命令的输出传递给另一个命令进行处理非常有用。
例如

1
echo "apple banana cherry date elderberry" | tr ' ' '\n' | sort
  • echo命令将字符串"apple banana cherry date elderberry"输出到标准输出
  • tr命令将空格字符转换为换行符,每个水果名称都单独一行
  • sort命令将输出按字母顺序排序 于是有这样的输出:

最后我们综合一下这些技术来创建一个文件,搜索特定单词,然后重定向输出:

1
2
3
echo "The quick brown fox jumps over the lazy dog" > sentence.txt
cat sentence.txt | grep "fox" > fox_result.txt && echo "Search completed successfully" || echo "Search failed"
cat fox_result.txt

结果会是什么样的?可以自己想一下

Superuser

超级用户,也称为“root 用户”,是 Linux 中拥有广泛权力、特权和功能的用户帐户。此用户可以完全控制系统并可以访问存储在系统上的任何数据。这包括修改系统配置、更改其他用户的密码、安装软件以及在 shell 环境中执行更多管理任务的能力。
susudo命令切换到超级用户,sudo允许我们以另一个用户身份运行命令,默认为root。还有一个关键区别:
sudo会记录用户执行的命令,而su不会。

Working with Files

处理文件是Linux的重要组成部分,就在上面,我们学习了Linux 终端中用于文件处理的一些基本命令包括touch创建文件、mv移动文件、cp复制文件、rm删除文件以及ls列出文件和目录。
接下来我们还要具体学习一部分文件操作

File Permissions

三种用户: owners, groups, and others who can have a different set of permissions.
看一个例子:

1
-rwxr--r-- 1 root root 4096 Jan 1 12:00 filename

第一个-表示这是一个文件,如果是d则表示这是一个目录。接下来的9个字符表示权限,每3个字符一组,分别代表owner, group, and others的权限。(懒得写了)

Archiving and Compressing

Linux提供了强大归档实用程序,用于将文件和目录打包到单个文件中,以便于传输或备份。
主要工具有targzip以及bzip2

  • tar:是一种多功能工具,可以管理和组织文件到一个文档中。
  • gzip和bzip2
本博客已稳定运行
发表了14篇文章 · 总计3万2千字

浙ICP备2024137952号 『网站统计』

𝓌𝒶𝒾𝓉 𝒻ℴ𝓇 𝒶 𝒹ℯ𝓁𝒾𝓋ℯ𝓇𝒶𝓃𝒸ℯ
使用 Hugo 构建
主题 StackJimmy 设计
⬆️该页面访问量Loading...