linux知识点小结
- PATH环境变量,记录了所有可以直接执行的二进制命令的原件或者链接
harvey@ubuntu:/etc$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesPATH这个作用域是可执行的二进制命令:which---搜索整个PATH路径,查找当前搜索的命令是否存在,或具体是那个路径下的文件(如find) ; type---有些命令虽然可以执行但是which搜索不到命令的位置,可以使用type查看是否是内置命令(如cd);whereis---可以搜索所有的包含的二进制文件的文件、文件夹和man手册,如果这里搜索不到man位置,那么肯定就不存在指定的man手册。
harvey@ubuntu:/etc$ which find #用which所有PATH找到位置
/usr/bin/find
harvey@ubuntu:/etc$ which cd #内置命令没有返回结果
harvey@ubuntu:/etc$ type cd #type发现是内嵌命令
cd 是 shell 内嵌
harvey@ubuntu:/etc$ type find #type也有which的效果,但是关键还透露是被哈希
find 已被哈希 (/usr/bin/find)
harvey@ubuntu:/etc$ whereis cd #whereis没有找到cd的man压缩文件
cd:
harvey@ubuntu:/etc$ man cd #所以man手册提示没有页目
没有 cd 的手册页条目
harvey@ubuntu:/etc$ man find
harvey@ubuntu:/etc$ whereis find #找到find位置和man压缩文件
find: /usr/bin/find /usr/bin/X11/find /usr/share/man/man1/find..gz
harvey@ubuntu:/etc$ whereis init #找到所有有init二进制的文件 文件夹和man压缩文件
init: /usr/src/linux-headers-3.11.-/init /usr/src/linux-headers-3.11.--generic/init /sbin/init /etc/init.d /etc/init /lib/init /usr/share/man/man8/init..gz /usr/share/man/man5/init..gz - which type wheris都是和二进制的执行命令相关,还有两个全能的查找命令。find---查找磁盘 location,locate--所有/var/lib/locatedb数据库
- 在计算机一起可以运行的数据都是在进程中的,进程都是有进程号码的,怎么查看当前进程的号?
#shell脚本的特殊变量
#!/bin/bash
#写脚本时候经常使用额变量研究
#参考资料:百度空间
#作者:骞文 QQ:
echo "当前文件的文件名是$0";
echo "当前shell脚本的第1个参数是$1";
echo "当前shell脚本额所有参数为$*";
echo "当前shell脚本的所有参数的个数是$#";
echo "当前shell脚本的进程号码$$";
echo "执行上一个指令的进程号$!";
echo "执行的上衣个指令的返回值$? 返回值为0表示成功否则为失败";
echo "可以用$$和$!比较上一个指令和当前指令是否在一个进程里!"直接在Terminal中使用:可以直接echo 当前用户的/bin/bash/PID,
- exec命令的作用是以新的进程替换原来的进程,只是替换上下文并不替换PID
harvey@ubuntu:/$ echo $$ #查看当前用户的PID harvey@ubuntu:/$ content="This is the old Content"; #给3115一个上下文content
harvey@ubuntu:/$ echo $content
This is the old Content
harvey@ubuntu:/$ echo $$ harvey@ubuntu:/$ bash #直接执行bash命令
harvey@ubuntu:/$ echo $$ #发现PID变了说明换了新的子进程 harvey@ubuntu:/$ echo $content #新的进程没有3115的上下文 harvey@ubuntu:/$ content="This is the new content";#重新给3395一个上下文
harvey@ubuntu:/$ echo $content
This is the new content
harvey@ubuntu:/$ echo $$ harvey@ubuntu:/$ exec bash #执行exec bash命令
harvey@ubuntu:/$ echo $$ #发现这次pid没有变 harvey@ubuntu:/$ echo $content #但是新的上下文被清空了 harvey@ubuntu:/$ #结论:直接执行bash会产生新的进程(新的PID新的上下文)
执行exec bash产生新的上下文(旧的PID新的上下文) - /proc/${PID}---当前进程的所有信息(包括进程权限,环境变量等)
harvey@harvey-PC ~
$ cd /proc/$$
#切换到进程信息目录
harvey@harvey-PC /proc/
$ ll
总用量
-r--r--r-- harvey None 三月 : cmdline
-r--r--r-- harvey None 三月 : ctty
lrwxrwxrwx harvey None 三月 : cwd -> /proc/
lrwxrwxrwx harvey None 三月 : exe -> /usr/bin/bash
-r--r--r-- harvey None 三月 : exename
dr-xr-xr-x harvey None 三月 : fd
-r--r--r-- harvey None 三月 : gid
-r--r--r-- harvey None 三月 : maps
-r--r--r-- harvey None 三月 : mountinfo
-r--r--r-- harvey None 三月 : mounts
-r--r--r-- harvey None 三月 : pgid
-r--r--r-- harvey None 三月 : ppid
lrwxrwxrwx harvey None 三月 : root -> /
-r--r--r-- harvey None 三月 : sid
-r--r--r-- harvey None 三月 : stat
-r--r--r-- harvey None 三月 : statm
-r--r--r-- harvey None 三月 : status
-r--r--r-- harvey None 三月 : uid
-r--r--r-- harvey None 三月 : winexename
-r--r--r-- harvey None 三月 : winpid
#查看进行信息文件 /proc/self/fd/---文件描述符列表
harvey@harvey-PC ~
$ ll /proc/self/fd
总用量
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /proc//fd
#查看默认的全部文件操作符
harvey@harvey-PC ~
$ exec <~/test.log
#为读取文件创造一个文件描述符
#可以为截断模式写入文件创造一个文件描述符 5>~/test.log
# 为追加模式写入文件创造一个文件描述符 6>>~/test.log
#参考资料<LINUX SHELL脚本攻略>
harvey@harvey-PC ~
$ cat <&
这是一个测试文件
#&4表示的是一个文件,,所以用cat命令
harvey@harvey-PC ~
$ ll /proc/self/fd
总用量
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /dev/pty0
lrwxrwxrwx harvey None 三月 : -> /proc//fd
lrwxrwxrwx harvey None 三月 : -> /home/harvey/test.log
#常看文件操作符列表- shell脚本的执行方式
.用sh命令执行
sh ./shelltest.sh .直接运行
chmod u=rwx ./shelltest.sh#先给创建者运行权限
./shelltest.sh #运行 #第二种方式运行的时候一定要给x权限,否则会提示一下错误:-bash: ./foreach.sh: Permission denied
参考资料:Linux的五个查找命令:find,locate,whereis,which,type
参考图书:LINUX SHELL脚本攻略
linux知识点小结的更多相关文章
- 常用Linux命令小结
常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...
- C++重要知识点小结---3
C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...
- C++重要知识点小结---2
C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...
- React及Nextjs相关知识点小结
React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...
- 【SpringBoot MQ 系列】RabbitMq 核心知识点小结
[MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
- disruptor笔记之四:事件消费知识点小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- shell知识点小结
目录 引言 shell中的数组 数组的定义 数组的使用 实际的例子 shell中大小的比较 shell中的括号 shell中函数的定义 杂项知识点 字符串转数组 常用判断标志 linux后台运行相关 ...
- promise知识点小结
断断续续学习es6也有一段时间了,趁着开学空闲对知识点做一些小结. 为什么使用promise 谈到Promise,我们知道,这是社区较理想的异步编程解决方案.想要掌握promise,我们首先要知道其提 ...
随机推荐
- 03,Python网络爬虫第一弹《Python网络爬虫相关基础概念》
爬虫介绍 引入 为什么要学习爬虫,学习爬虫能够为我们以后的发展带来那些好处?其实学习爬虫的原因和为我们以后发展带来的好处都是显而易见的,无论是从实际的应用还是从就业上. 我们都知道,当前我们所处的时代 ...
- WPF的线程模型
原文:WPF的线程模型 WPF的线程模型 周银辉 谈到多线程,很多人对其可能都不太有好感,觉得麻烦与易出错.所以我们不排除有这样的情况:假设我对“多线程”.“异步”这些字眼潜意识 ...
- 统计大写字母个数&压缩和去重(过滤)
找出给定字符串中大写字符(即'A'-'Z')的个数 接口说明 原型:int CalcCapital(String str); 返回值:int 知识点 字符串 运行时间限制 10M 内存限制 128 输 ...
- python里面list()函数
1. list() 方法用于将元组转换为列表. 元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中. 2. python里面的变量不用提前声明.
- CocosCreator设置模拟器默认横竖屏以及机型
之前好好的横屏,今天不知道为毛突然变成竖屏了,虽然可以在点击模拟器左上角进行设置, 但是 每次启动模拟器又变成竖屏了,折腾了很久,终于找到了设置的地方,记录下:
- 恢复误删除表黑科技之relay log大法(续)
Preface I've stuck twice in my previous experiments in backing up dropped tables.I am still ...
- vue 实例 网站
Pure vue demo 实战第一节:Vue基础一 Pure vue demo 实战第二节:Vue基础二 Pure vue demo 实战第三节:Vue组件 Pure vue demo 实战第四节: ...
- Spring 笔记(三)Bean 装配
前言 Spring 有两大核心,也就分成两份笔记分别记录. 其一是管理应用中对象之间的协作关系,实现方式是依赖注入(DI),注入依赖的过程也被称为装配(Wiring). 基于 JavaConfig 的 ...
- 2013 ACM/ICPC Asia Regional Changsha Online – C题 Color Representation Conversion (坑爹模拟题)
题意:给你三种颜色表示模式,RGB,HSV和HSL,实现任意模式之间两两转化. 1.最好别看题目中给的转化公式描述,我觉得叙述的一点也不清楚,看维基百科,把维基百科上的公式一句一句翻译过来就好 2.在 ...
- Homework-09 二维数组动态显示
思路 主要是把计算的函数由一次跑完全部改成一次一步 主要是把一个3重for循环改为能一步一次的实现 public int nstep(int n){ while((n--)!=0){ //n步长 // ...