题外话
听学长指示闻着味就过来了体验以后觉得不错,roadmap.sh非常适合入门学习,而且是交互式的,推荐用于某项技能的入门基础快速学习,但是要注意是 全英文 的,不想啃就开翻译插件吧
basics navigation
commands and basical knowledge
navigation basics
Basic commands:
cd
: change directoryls
: list files and direrctories in the current directorypwd
: view working directoryman
: 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
则在另一方面,更为先进,提供广泛的功能和命令(老一辈的游刃有余) 要编辑文件首先要使用以下命令
|
|
Vim:编辑文件的基本工具
Vim(Vi Improved)是一款功能强大且灵活的文本编辑器,用于类 Unix 系统。它以原始 Vi 编辑器为基础,并添加了其他功能和改进,包括多级撤消、语法突出显示和大量用于文本操作的命令集。(虽然学起来很麻烦就是了)
Vim主要以三种模式运行:
- Normal(for navigation and manipulation).
- Insert(for editing text).
- Command(for running commands).
要插入新内容,使用i
进入插入模式,然后输入内容。
编辑完成后,按ESC键退出插入模式,然后输入:wq
保存并退出。
当然Vim的操作远不止这些
Nano:简单的文本编辑器
Nano相对来说是更为流行、对用户来说友好的文本编辑器,用于直接在 Linux命令行界面(CLI Linux Command Line Interface) 中编辑文件。是一个vi和emacs的替代品。对初学者来说更为简单实用,介绍一些针对流行的Linux发行版的安装方式(一般来说很多发行版是自带的)
|
|
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
命令
|
|
具体地学习以及 实验 可见Linux环境变量
Command Help
上文就有提到,在Linux中学会使用命令帮助非常重要,它能使用户轻松浏览Linux Shell命令。
例如:
man [command]
可以在任何命令钱调出其手册条目,其中解释了该命令的作用、语法、可用选项
help [command]
选项也可以显示命令的可用选项和用法。更适合shell内置函数,对每个函数进行简要描述。
可见获取Linux命令帮助
以及如何使用手册页
Redirects
Linux的shell为user提供了一种管理命令/程序的输入和输出流的强大方法,称为 重定向。
Linux是一个多用户和多任务操作系统,每个进程通常打开3个流:
- 标准输入(stdin):默认情况下,从键盘读取输入。
- 标准输出(stdout):默认情况下,将输出写入屏幕。
- 标准错误(stderr):默认情况下,将错误消息写入屏幕。
Linux的重定向功能便于我们操作流,从而提高运行命令/程序的灵活性。除了默认设备(键盘啦终端啦)外, I/O流可以重定向到其他文件/设备。
例如,如果想将命令输出存储到文件中而不是打印到控制台,可以使用">“运算符号
|
|
将"ls -al"的输出写入了txt中,如果已存在该文件就覆盖
experiment
&&运算符
该运算符用于将多个命令链接在一起,并仅在第一个命令成功执行时才执行第二个命令,对于有依赖的命令链接很有用
||运算符
当第一个命令失败时才执行第二个命令。这对于提供后备选项或错误消息很有用。
»追加输出重定向符号
如果我们想要附加信息的话,可以使用”»“运算符,它将命令的输出附加到文件中,而不是覆盖现有内容。
|
|
|管道运算符
管道运算符将一个命令的输出作为另一个命令的输入。这对于将一个命令的输出传递给另一个命令进行处理非常有用。
例如
|
|
- echo命令将字符串"apple banana cherry date elderberry"输出到标准输出
- tr命令将空格字符转换为换行符,每个水果名称都单独一行
- sort命令将输出按字母顺序排序
于是有这样的输出:
最后我们综合一下这些技术来创建一个文件,搜索特定单词,然后重定向输出:
|
|
结果会是什么样的?可以自己想一下
Superuser
超级用户,也称为“root 用户”,是 Linux 中拥有广泛权力、特权和功能的用户帐户。此用户可以完全控制系统并可以访问存储在系统上的任何数据。这包括修改系统配置、更改其他用户的密码、安装软件以及在 shell 环境中执行更多管理任务的能力。
用su
或sudo
命令切换到超级用户,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.
看一个例子:
|
|
第一个-
表示这是一个文件,如果是d
则表示这是一个目录。接下来的9个字符表示权限,每3个字符一组,分别代表owner, group, and others的权限。(懒得写了)
Archiving and Compressing
Linux提供了强大归档实用程序,用于将文件和目录打包到单个文件中,以便于传输或备份。
主要工具有tar
和gzip
以及bzip2
- tar:是一种多功能工具,可以管理和组织文件到一个文档中。
- gzip和bzip2