shell
命令解释器,会根据输入的命令执行相应的命令
代码语言:javascript复制[bsk@localhost ~]$ cat /etc/shells
此命令是用来查看当前系统下支持有哪些shell 结果就是:
代码语言:javascript复制/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
接下来再介绍一个命令 echo &SHELL
此命令是查看当前系统下正在使用的shell
快捷键
tab键 命令补齐功能,可以方便我们敲代码的效率 Ctrl p 向上 Ctrl n 向下 Ctrl b 向左 Ctrl f 向右 Ctrl d del删除光标后面的 Ctrl a home,回到第一个字符 Ctrl e End,到最后一个字符 backspace 删除光标前面的
目录
Linux系统目录的简单介绍: bin目录主要存放二进制可执行文件 dev目录主要存放是和设备相关的文件,比如鼠标,键盘 etc目录主要存放用户配置的文件信息,比如密码 home目录主要存放当前系统中用户的信息 lib目录主要存放系统中使用的库文件 media目录默认存放挂载磁盘 boot目录主要存放开机启动程序 root目录主要存放管理员宿主目录(家目录) user目录主要存放用户资源管理目录
文件
Linux系统文件类型(八大类) 普通文件 : - 目录文件 : d 字符设备文件: c 块设备文件: b 软连接: l 管道文件: p 套接字 : s 还有未知文件
链接
链接有两种,一种被称为硬链接,另外一种被称为符号链接
建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。 而对于符号链接来说,就不会存在这个问题。 在默认情况下,ln产生硬链接,如果给ln命令加上 -s选项则变成建立符号链接
硬链接
代码语言:javascript复制touch xiaojiejie
ln xiaojiejie jiejie.h
在硬链接中,对任意一个硬链接进行修改,其他用同文件创建出来的硬链接也会发生变化,几个文件之间是同步的 原因就是,他们有相同的I节点(Inode)。操作系统
但是当删除时,只会把硬链接计数减一,当减为0时,inode被释放。
软链接
代码语言:javascript复制ln -s xiaojiejie jiejie.s
软连接的创建最好使用绝对路径,因为当把软链接移动后也能可以访问。
创建用户
代码语言:javascript复制sudo adduser 新用户名
修改文件所属用户 chown修改用户,读写执行权限 方式: sudo chown 新用户名 待修改文件 如下代码所示:
代码语言:javascript复制sudo chown zhangsan hello.cpp
删除用户
代码语言:javascript复制sudo deluser 用户名
创建用户组
sudo addgroup 新组名
修改文件所属组 chgrp修改 方式:
代码语言:javascript复制sudo chgrp fine hello.cpp
删除用户组
代码语言:javascript复制sudo delgroup 用户组名
也可以两个修改一起做具体方法如下所示:
代码语言:javascript复制chown nobody:nogroup hello.cpp
find命令
本质:查找文件 -type 按文件类型搜索
-name按文件名进行搜索
代码语言:javascript复制 find ./ -name “*file *.c”
-maxdepth指定搜索深度,应作为第一个参数出现
代码语言:javascript复制 find ./-maxdepth l -name “*file *.c”
-size按文件大小搜索
代码语言:javascript复制 find ./ -size 20M -size -50M
查找大小在20M到50M之间的文件
-atime/mtime/ctime 以天为单位 -amin/mmin/cmin 以分钟为单位
-ok 以交互的方式将find 搜索的结果集执行某一指定命令
-exec 将find搜索的结果集执行某一个指定命令
代码语言:javascript复制find/user/-name ‘* tmp *’ -exec ls -ld {} ;
需注意find后不能直接使用管道来执行某一命令,但是配合 | xargs参数可以正常使用 使用xargs的好处就是当结果集特别多的时候,可以分片映射
但是xargs有一个小缺点,就是当文件名中有空格时,它会默认把其拆分(默认是以空格为拆分依据),从而报错 解决办法就是加入 -print0参数,(以·NULL作为拆分依据)即可解决
代码语言:javascript复制find/user/-name ‘* tmp *’ -print0 | xargs -0 ls -ld {} ;
-print0参数,这个0代表重新设定了结果集里面每个结果的分隔符为null
grep命令
查找文件内容
第一条常用命令:grep -r 'list' ./ -n
第二常用: ps aux | grep ' '
得到检索进程结果集
压缩命令: tar 压缩 tar -zcvf 要生成的压缩包名 压缩材料 tar zcvf test.tar.gz file dir 使用gzip方式压缩 tar jxvf test.tar.gz file dir 使用bzip方式压缩
tar解压
将压缩命令中的c-》x tar zcvf test.tar.gz 使用gzip方式解压 tar jxvf test.tar.gz 使用gzip方式解压
rar压缩
rar a -r 压缩包名(带.rar后缀) 压缩材料 rar a -r test.rar stdio.h tset.mp3
rar解压
unrar x 压缩包名 (带.rar后缀)
zip压缩
zip -r 压缩包名(带.zip后缀) 压缩材料 zip -r teat.zip stdio.h test.mp3
zip解压
unzip 压缩包名(带.zip后缀)
tar本来是打包的意思 c 创建新的文档文件 r 列出档案里的文件内容 x 从档案中释放文件 u 更新文件 z 的意思才是压缩 及gzip f 使用档案文件或设备,
网络
ifconfig 查看网卡信息 sudo ifconfig eth0 down 关闭网卡 sudo ifconfig eth0 up 开启网卡eth0 sudo ifconfig eth0 IP 给eth0配置临时IP netstat 查看网络状态
man
man是系统的手册分页程序。指定给man的页 选项通常是程序,工具或函数名。 下面是手册的章节号以及包含的手册类型
1 | 可执行程序或shell命令 |
---|---|
2 | 系统调用(内核提供的函数) |
3 | 库调用(程序库中的函数) |
4 | 特殊文件(通常位于/dev) |
5 | 文件格式和规范, |
6 | 游戏 |
7 | 杂项 |
8 | 系统管理命令 |
9 | 内核例程 |
alias起别名 alias pg = ‘ps aux | grep’ 此后执行pg命令也就相当于ps aux | grep 命令
umask
指定用户创建文件时的掩码,默认指定权限
vi编辑器
跳转到指定行 第一种:88G(命令模式) 第二种::88(末行模式) 跳转行首: gg(命令模式) 跳转行尾: G(命令模式) 自动化格式程序: gg=G(命令模式) 大括号对应: %(命令模式) 光标移至行首: 0(命令模式)执行结束,工作模式不变 光标移至行尾: (命令模式)执行结束,工作模式不变 删除单个字符: x(命令模式)执行结束,工作模式不变 删除一个单词: dw(命令模式)光标至于单词的首字母进行操作 替换单个字符: 将待替换的字符用光标选中,r(命令模式)再按欲替换的字符 删除光标至行尾: D或者 d (命令模式) 删除光标至行首: d0(命令模式) 删除指定区域: 按V(命令模式)切换位可视模式,移动光标来选中待删除区域,按d删除 删除指定一行: 光标所在行,按dd(命令模式) 删除指定n行: 在光标所在行 (向下删除)n dd (命令模式) 复制一行: yy 粘贴: p 向后 P向前 查找: 1.找想要找的内容 命令模式下,按 / 树=输入想要搜索的关键字,回车即可,按 n检索下一个 2.找 看到的内容 命令模式下,将光标置于单词任意一个字符上,按 * 或者 # 单行替换: 将光标置于待替换行上,进入末行模式,输入 :s /原数据 / 新数据 通篇替换: 末行模式下输入 :%s/原数据/新数据/g g不加,只替换每行首个 指定行的替换: 末行模式下输入 :起始行号,终止行号s /原数据/新数据/g g不加,只替换每行首个 举例 :s30,61s /vim/vi/g
撤销: 命令模式下按 u 反撤销: ctrl r(撤销撤销)
分屏: (末行模式下)输入sp 横分屏 ctrl ww 切换 vsp :竖分屏 ctrl ww 切换
跳转到man手册: 将光标置于 待查看函数单词上,使用K(命令模式)跳转到指定卷 nk 查看宏定义: 将光标置于待查看宏定义单词上,使用 [ d查看定义语句 在末行模式执行shell命令: 输入 :! 命令