1. 查看一个命令是内部(shell builtin)还是外部命令(path/…/…)
type + 命令
内部命令用help查看详细信息,外部命令用man查看
2. 进程管理
echo $$:打印当前进程号
ps -ef:看出所有进程
3. linux利用hash加速外部指令查找
第一次使用外部指令时,linux会做两件事
1) 从path环境变量中查找该指令并执行命令行;
2) 找到该指令后会将该指令映射到hash表中,下次再调用该指令直接从hash表中获取,不需要再通过环境变量查找;
4. linux文件系统
不同的目录存储不同类型的文件,
1) bin存放用户命令,sbin存放管理命令;
2) boot存放内核程序
3) dev存放设备文件(鼠标键盘等)
4) home用户家目录(每个用户可以建立一个文件夹)
5) root管理员家目录
6) lib安装的第三方软件的库目录
7) opt第三方软件安装的地方
8) var可变化的文件(日志log数据data等)
9) tmp临时文件,用完就删的(安装压缩包等)
10) usr/local也可用来安装软件
5. 文件系统相关命令
1) df -h:查看磁盘使用情况
2) du -h 文件名:查看该文件大小
3) ls -a显示隐藏文件,ls -l == ll
4) 对文件夹的操作在堆文件操作的基础上要加一个-r:
rm -r -f file
cp -r sourcefile /path
5) 硬连接与软连接(硬链接指向源文件,软连接指向源文件的引用)
ln file1 hlink(给file1建立一个硬链接hlink)
ln -s file2 slink(给file2建立一个软连接slink)
6) stat查看文件的详细信息
7) touch:改变文件的Access Modify以及Change三个时间戳 / 新建一个不存在的文件
6. 文本相关命令
1) 查看文件内容 cat / touch / less + file
tail + file监控file文件的改动,实时输出其他线程对文件的改动的数据
head -3 file显示文件的前三行
tail -3 file显示文件的后三行
2) xargs在无法接收管道输入流的指令后面拼接管道输入流
echo “/” | xargs ls -l(原本ls -l无法接收管道的输入)
3) vi编辑模式下按0回到行首,
按w跳到下一个单词的词首,
b跳到上一个词词首
G文件末尾
gg文件首行
ctrl + f往后翻页,ctrl + b往前翻页
x删除光标处字符
r替换光标处字符
dd删除一行
dw删除一个单词
yw复制单词
yy复制该行
p粘贴,光标下方粘贴
P大写,光标上方粘贴
u撤销
ctrl + r取消撤销
. 重复上一个动作
:wq保存退出 == shift +zz
:q!不保存退出
4)vi末行模式(:),接收命令
:set number / nonumber 显示与取消行号
:set readonly设置只读
:/word,定位到word处,n依次跳转
:s/after/before,查找after并用before替换
:.,+2s/after/before/gi,查找当前行(g)以及往后的两行内(.,+2)所有忽略大小写(i)的after并用before替换
:% s/after/before/gi,全文替换
:10,$ s/after/before/gi,替换第十行到文件末尾行($)的所有after
:%d删除所有内容
7. 文件描述符与重定向
一切皆文件所以任何程序在linux里都可以用文件描述符来归类描述
可以到/proc/进程号/fd目录下查看该进程执行时所有IO的文件描述符细节:
8. 父子进程
父进程变量只要定义了export,子进程就能读到该父进程的变量值,也就是在/etc/profile处配置环境变量时使用export,所有子进程都可以知道去哪里找命令