目录
前言
Linux中,重定向、管道命令和环境变量PATH是一些非常强大而又实用的功能,它们可以帮助用户更高效地处理和管理数据、文件和程序。
在接下来的内容中,我们将详细介绍和讨论重定向、管道命令和环境变量PATH的概念、语法和应用。将通过实例和示例来解释和演示它们的用法,帮助读者更好地理解和掌握这些功能。最后,还将分享一些实用的技巧和建议。
一、Linux目录配置标准FHS
FHS(Filesystem Hierarchy Standard)是Linux系统中对目录结构的标准化规定。它定义了各个目录的作用和用途,以保证不同Linux发行版之间的兼容性。
使用Linux来开发产品或者发布软件的公司、个人太多,如果每家公司或者个人都按照自己的意愿来配置文 件或者软件的存放位置,这无疑是一场灾难。我们可不想学完我们的Linux之后,去公司发现看不懂别人的目录结构,更别谈开发了。所以,FHS的标准规定为我们学习与开发带来了很大的方便。
#进入根目录
[root@localhost home]# cd /
#查看目录树(两层,只看目录,不看文件)
[root@localhost /]# tree -d -L 1
.
├── bin -> usr/bin #可执行文件目录,linux自带命令在这里
├── boot #开机会使用到的文件,包括Linux核心文件以及开机菜单与开机所需配置文件等等。
├── dev #设备目录
├── etc #配置文件几乎都放置在这个目录内,例如人员的帐号密码档、 各种服务的启始档等等。
├── home #家目录,系统默认的使用者主文件夹,用户的个人文件都可放在这里
├── lib -> usr/lib #放置在开机时会用到的函数库,以及在/bin或/sbin下面的指令会调用的函数库
├── lib64 -> usr/lib64 #与lib类似
├── media #放置可移除的设备,包括软盘、光盘、DVD等等设备都暂时挂载于此。
├── mnt #设备临时挂载目录
├── opt #第三方协力软件放置的目录
├── proc #是一个虚拟文件系统,放置内存中的数据,不占用硬盘空间
├── root #系统管理员的主文件夹
├── run #放置系统开机后所产生的各项信息
├── sbin -> usr/sbin #里面包括了开机、修复、还原系统所需要的指令,root用户使用
├── srv #service是一些网络服务启动之后,这些服务所需要取用的数据目录。
├── sys #与proc类似
├── tmp #temp,让一般使用者或者是正在执行的程序暂时放置文件的地方
├── usr #unix software resource:与软件安装/执行有关
└── var #variable,与系统运行过程有关,主要为变动性较大的数据
19 directories
————————————————
对于Linux系统来说每个初始文件夹中储存的内容都是有固定标准的,其实,在Windos系统中也是一样的。
二、重定向
重定向是一种将命令的输出或输入从一个位置转移到另一个位置的方法。
通过重定向,我们可以将命令的输出保存到文件中,或者将文件的内容作为命令的输入。重定向可以极大地增强命令行的灵活性和可扩展性,让我们能够更好地处理和分析数据。
1.输入、输出的设备文件
基本大部分计算机,要与人交互,都要默认打开三个设备(文件):
标准输入,stdin,代码是0
标准错误,stdout,代码是1
标准错误输出,stderr,代码是2
在Linux中一切皆文件,交互需求,输入输出信息分类 除了上面的三个标准设备(文件), 我们可能经常有从文件读取数据,或者将数据写入文件的场景。
2.重定向
文件的重定向大体上分为两种:
- 输出/追加重定向:本来应该显示到显示器(通常)文件的内容,写入到文件当中。
- 输入重定向:或者本来应该从显示器(通常)文件读取数据,转化成从指定文件读取数据。
1.">":将命令的输出重定向到文件,如果文件不存在则创建,如果文件存在则覆盖原有内容。
示例:将ls命令的输出保存到文件file.txt中
ls > file.txt
2.">>":将命令的输出追加到文件末尾,如果文件不存在则创建。
示例:将ls命令的输出追加到文件file.txt中
ls >> file.txt
3. "<":将文件内容作为命令的输入。
示例:将file.txt文件的内容作为输入,使用cat命令显示文件内容
cat < file.txt
4. "2>":将命令的错误输出重定向到文件。
示例:将错误输出重定向到error.txt文件
command 2> error.txt
5. "&>"或">>":将命令的标准输出和错误输出都重定向到文件。
示例:将标准输出和错误输出都保存到output.txt文件中
command &> output.txt
7. "/dev/null":特殊设备文件,用于丢弃命令的输出或输入。
示例:将命令的输出丢弃
command > /dev/null
这些是重定向的一些常用用法,可以根据具体需求来进行灵活的操作。通过重定向,可以方便地将命令的输出保存到文件、将文件内容作为命令的输入,以及进行管道操作,提高命令行的效率和灵活性。
三、管道命令
管道命令是一种将多个命令连接起来的方式。通过管道,我们可以将一个命令的输出传递给另一个命令的输入,实现数据的流动和处理。管道命令使得我们能够将多个简单的命令组合成一个复杂的操作,提高了命令行的效率和功能。
举例理解:
1.显示正在或者最近登录linux的用户信息
last #显示正在或者最近登录linux的用户信息
2.只看前5条信息
last | head -5 #其中'|'就是管道,head是一个截取文本行的工具
3.只看某个用户的登录信息
last | grep '用户名' #grep 相当于一个过滤器
可见,管道是可以级联多条命令的,每条命令的结果输出,都作为输入,导入下一条命令。有点像流水线
四、环境变量
环境变量PATH是一个用于存储系统命令的路径列表。当我们在命令行中输入一个命令时,系统会按照PATH中的路径顺序去寻找这个命令的可执行文件。通过设置和修改PATH环境变量,我们可以自定义命令的搜索路径,使得系统能够找到我们自己安装的或者修改过的命令。
1. PATH环境变量:
PATH是一个包含了一组目录路径的环境变量,用于指定系统在哪些目录中搜索可执行文件。当使用命令时,系统会按照PATH中指定的顺序在这些目录中查找可执行文件。示例:
echo $PATH #查看环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$: 用来显示PATH环境变量的内容
各个路径以 : 作为分隔符,每个区域代表一个搜索路径
2. HOME环境变量:
HOME是当前用户的主目录路径,该变量通常用于指定用户的个人文件和配置目录。示例:
echo $HOME
/home/user
3. LD_LIBRARY_PATH环境变量:
LD_LIBRARY_PATH是用于指定系统在哪些目录中搜索共享库文件的环境变量。当程序需要加载共享库时,系统会根据LD_LIBRARY_PATH中指定的路径来查找相应的库文件。示例:
echo $LD_LIBRARY_PATH
/usr/local/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/jvm/java-11-openjdk-amd64/lib
4. LANG环境变量:
LANG是用于指定系统的默认语言环境的环境变量。它决定了系统在显示文本、日期时间、货币等信息时所使用的语言。示例:
echo $LANG
en_US.UTF-8
5. PS1环境变量:
PS1是Shell提示符的环境变量,用于定义Shell界面的外观和格式。可以自定义PS1的值来修改命令行提示符的展示形式。示例:
echo $PS1
\u@\h:\w\$
这些是一些常见的Linux环境变量及其用途的示例。Linux环境变量的设置和使用可以增强系统的灵活性和个性化,并且对于系统和用户的操作非常有帮助。
其实,编译器内部也有类似的功能,想想,为何我们 #include<头文件> ,并没有指明头文件在哪里,但是编译器也能 帮我们找到并展开,包括我们也并没有指明我们的程序依赖哪些第三方库,编译器也能找到。
这也就是为什么有些编辑器还需要配置环境变量的原因,一般来说IDE会自动为你配置好环境变量,对新手很友好。
总结
1.重定向:
- 通过重定向符号(>和>>)可以将命令的输出发送到文件中。">"覆盖原有文件,而">>"则追加到文件末尾。
- 使用重定向符号(<)可以将文件的内容作为命令的输入。
- 示例:
将命令的输出写入文件:command > file.txt
使用命令的输出作为输入:command < file.txt
2.管道命令:
- 管道命令(|)可以将一个命令的输出作为另一个命令的输入。
- 通过管道命令,可以将多个命令组合在一起,形成更复杂的操作。
- 示例:
将命令1的输出发送到命令2中:command1 | command2
3.环境变量PATH:
- 环境变量PATH定义了操作系统在哪些目录中查找可执行程序。
- 使用 echo $PATH 命令可以查看当前的PATH变量设置。
- 可以通过在命令行中设置PATH变量,或者编辑 ~/.bashrc 文件或 /etc/profile 文件来永久修改PATH变量。
- 示例:
将新的目录添加到PATH中:export PATH=$PATH:/path/to/directory
4.实用技巧和建议:
- Linux中的重定向和管道命令非常强大,可以帮助你将命令的输出保存到文件中、过滤命令的输出、将多个命令组合在一起等。
- 学习和熟悉Linux的重定向和管道命令,可以提高工作效率和命令行操作的便捷性。
- 熟练掌握环境变量PATH的使用,可以方便地使用各种命令和程序。
- 多练习和尝试不同的重定向、管道命令和PATH设置,以提高自己的命令行技能。
5.进一步学习资源:
Linux重定向和管道命令指南:https://www.gnu.org/software/bash/manual/html_node/Redirections.html
Linux环境变量详解:https://linuxize.com/post/how-to-set-and-list-environment-variables-in-linux/
Linux命令行与Shell脚本编程大全:https://www.amazon.com/Linux-Command-Line-Shell-Scripting-Bible/dp/111898384X
Shell脚本编程指南:https://www.shellscript.sh/