linux是一种自由和开放源代码的操作系统,存在着许多不同的linux版本,但他们都是用了linux内核。linux可安装在各种计算机硬件设备中,比如手机,平板电脑,台式电脑等
linux特点:多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面,出色的速度性能,开源。
shell:在用户和内核之间充当“翻译官”编译器,俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件
内部命令和外部命令:一般先执行内部命令,hash再执行外部命令(别名最大)
内部命令实际上是shell的一部分,其中包含的是一些比较简单的linux系统命令,集成与shell解释器程序内部的一些特殊指令,也称内建指令,没有单独对应的系统文件,自动载入内存,可以直接使用
外部命令是linux系统中实用程序部分,能够完成特定功能的脚本文件或二进制程序,属于shell解释器程序之外的命令。每个外部命令对应了系统中的一个文件,必须知道其对应的文件位置,由shell加载后才能执行
Linux的有点 优势
1.一切皆文件,连配置文件都存储在文本中,方便增删改查
2.系统中拥有小型,单一用途的程序(一个程序只负责做好自己的本职工作)
3.当遇到复杂任务,通过不同功能用途的程序组合起来完成。
4.避免令人困惑的用户界面就是没有复杂的图形界面。
5.不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件类型
基础知识:
root 【标识用户】
localhost 【主机名】
~ 【家目录,一定要和用户相对应 一个用户的家 用户在这个文件夹中有最高的权利】
# 【超级管理员用户】
$ 【普通用户】
pwd 【显示用户当前所在的工作目录位置】
/ 【根目录】
ls 【查看当前目录】 ls -a 【查看当前文件的隐藏文件】
du -sh * 【查看当前文件夹下所有文件的大小】
touch 【创建一个新文件】
mkdir 【创建文件夹】
编辑Linux命令行的辅助操作
tab键:自动补齐
反斜杠“\”:强制换行
ctrl+u:清空至行首
ctrl+k:清空至行尾
ctrl+l:清屏【也可以用clear清屏】
ctrl+c:取消本次命令编辑
ctrl+a:切换至行首
ctrl+e:切换至行尾
获得命令帮助的方法
内部命令help:查看shell内部命令的帮助信息
命令"--help"选项:适用于大多数linux外部命令
使用man命令阅读手册页:
1.使用“↑”、“↓”(enter)方向键滚动一行文本
2.使用page up和page down (空格)键翻页
3.使用Q或q键退出阅读环境
4.按“/”键查找内容,n键向下查找,N向上查找
切换工作目录:将用户的工作目录更改到其他位置
cd 目标位置 【切换到目标位置】
cd ~ 【若不指定目标位置,切换到当前用户的hone目录】
cd 【若不指定目标位置,切换到当前用户的home目录】
cd - 【切换到上一次执行cd命令之前所在的目录】
cd .. 【回到上一层目录】
绝对路径:绝对路径始终从根目录(/)开始,比如:/home/abhishek/scripts/my_scripts.sh
相对路径:相对路径从当前目录开始。比如,如果你在 /home 目录中,希望访问 my_script.sh 文件,那么访问的路径应该是:abhishek/scripts/my_scripts.sh
两者区别:Linux中目录结构是一个树,从根(/)开始,然后产生分支,绝对路径和相对路径,除了文件路径不一样以外,其他的完全一样
有两种特殊的相对路径:
- .(一个点):表示路径中的当前路径;
- ..(两个点):表示父目录,即上一级目录
相对路径的表现形式:
直接使用目录名或文件名 【表示当前工作目录中的子目录、文件的位置。 如grub.conf】
以一个点号“.”开头 【表示以当前的工作目录为起点 如./grub.conf】
以两个点号“..”开头 【表示以当前目录的上一级目录为起点 如../vmlinuz】
以“~用户名” 开头 【表示以指定用户的home目录为起点 如 ~teacher】
以“~”形式开头 【表示以当前用户的home目录作为起点 如~】
列表显示目录内容-ls:
1.显示目录中的内容,包括子目录和文件相关属性信息
ls 选项 文件或目录
2.常用选项
-l:ls -l=ll
-a:显示全部包括隐藏文件 【隐藏文件左下角加‘.’ 如 .cache】
-A:显示全部包括隐藏文件,但不包括 . 和..
-d:仅列出目录本身,而不是列出目录内的文件数据
-h:更直观显示文件大小
-R:递归显示当前文件夹以及子文件夹下所有内容
--color:显示颜色
-S:以文件容量大小排序
-i: inode号
结合通配符:
"?":代表任意一个字符,有且一个字符
"*":代表任意数个字符,可以是0个或者1个或者多个
"[ ]":表示可以匹配字符组中的任意一个字符 [abc] 、[a-f] 【找到包含abc大小写文件】
"{a..d}":表示表示可以匹配字符组中的任意一个字符 【找到只含有a-d的小写的文件】
"[[:lower:]]*" 匹配所有含小写字母的文件
"[[:upper:]]*"匹配所有含大写字母的文件
"[^a]*" : 匹配不含有a的文件 即取反
"[[:digit:]]*":匹配任意数字
设置别名(临时) -alias 永久修改vim /etc/.bashrc source /etc/.bashrc(保存)
通过别名机制简化常用的、比较长的命令:alias命令="命令"
示例:设置myls为ls -alh即 alias myls="ls -alh"
取消别名:unalias mysl
统计目录及文件空间占用情况 -du
du 【选项】 【文件或目录】
-a 【统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录】
-h 【以更人性化的方式显示统计结果】
-s 【只统计所占用空间总的大小,而不是统计每个子目录、文件的大小】
-sh * 【当前目录下每一个文件,文件夹的大小】
--max-depth=n 【统计所有小于等于的n层的目录的总大小】
例:统计/var/log 目录中子目录的大小:du -h --max-depth=1 /var/log/
创建新目录-mkdir
mkdir:创建目录 例:mkdir a b c 即在当前目录下创建 a b c 三个目录
-p :递归 例:mkdir -p a/b/c 即创建a目录,a目录下创建b,b目录下创建c目录
创建空文件 -touch命令
更新文件的事件标记
经常用于创建多个新的空文件:touch 文件
示例:创建两个空文件,分别命名为aa.txt和bb.txt 即 touch aa bb或touch {aa,bb}.txt
touch {0..3} 即递归创建0 1 2 3
复制文件或目录 -cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp 【选项】源文件或目录 目标文件或目录
常用的选项
-f【强制复制】、cp -i=cp、
-p 【保留权限递归复制】
-r 复制目录 复制目录并保留权限 -rp
移动文件或目录 -mv
mv 【选项】 源文件或目录 目标文件或目录
将指定的文件或目录转移位置:mv a/ / 即把a移动到根目录下
如果目标与源位置相同,则相当于执行重命名操作: mv a/ b 即同一目录下a重命名为b
mv 【选项】 源文件或目录 目标文件或目录
查看虚拟机ip:ifconfig
删除 rm -rf 【rm 删除 -r递归 -f强制删除】
rm -rf * 删除所有
rm -rf a 即强制递归删除a目录及以下所有
查找命令文件存放的目录 which
which is vim 即查找vim 命令在那个目录
which -a vim或者which vim 即直接查找 vim在哪个目录下
locate也是查找文件或目录但是范围较广:例:lacate mnt即含有mnt字母的都会找到
查找文件或目录find(精确查找,实时遍历,支持多条件查找)
find / -namefile1 从 '/' 开始进入根文件系统搜索文件和目录
find /etc/ -name *.conf 查找etc目录下所有带.conf结尾的文件
find /etc/ -name me* 查找etc目录下所有以me开头的文件或目录
find /boot/ -size -10M 查找boot目录下小于10M的文件或目录 (+10M即大于10M的文件或目录)
find /boot/ -size -10M -name *img 【查找boot下小于10M的img文件】
find /etc -name passwd -exec mv {} /data \; 【把passwd 移动到 data目录下】
du -sh * 【人性化展示当前目录下所有文件的大小包括目录】
cat:查看文件
cat 【选项】 文件名
cat -n 1 查看文件1的行号
cat -b 1 查看文件1的行号(其中空格行不在编行号)
cat -s 1 查看文件1的行号 (把其中连续的空行 压缩成一个空行)
tac 1 以倒序的形式查看文件1
rev 1 每行反向显示查看文件1
more /etc/passwd 从上向下查看文件passwd
less /etc/passwd 从下向上查看文件passwd
head /etc/passwd 查看passwd文件 默认显示前十行
head -n 100 /etc/passwd 查看passwd文件 默认显示前100行
tail /etc/passwd 从尾部即时查看
tail -f /var/log/massages 从尾部即时动态查看
tail -n 10 /var/log/massages 只显示10行
tail -fn /var/log/massages 显示n行动态查看 ctrl +c 结束查看
wc 1 【显示文件1的行数、多少行有数据、多少个字节、文件名】
wc -l 1 只显示文件1的行数
wc -w 1 只显示文件1的有数据的行数
wc -c 1 只显示文件1的字节数
grep 过滤想要的文件内容或文件名
grep abc 123.txt 查找123文件中的含有abc内容 【包含abc abcdef defabc】
grep -v abc 123.txt 取反,123.txt中有abc的不要
grep -o abc 123.txt 只显示匹配的内容【只显示abc abcdef也只显示abc】
grep -i abc 123.txt 查找abc 忽略abc大小写【显示abc ABC abcdef ABCDEF】
grep -r abc 123.txt 递归查找含有abc的内容 有多少abc显示多少abc
grep -n abc 123.txt 查找123文件中的含有abc内容【包含abc abcdef defabc】 同时显示所在的行
grep -w abc 123.txt 精确查找123.txt中的 只是abc的内容
硬链接ln:指通过索引节点来进行连接。在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给他分配一个编号,称为索引节点号(inode index)。在linux中,多个文件名指引同一索引节点是存在的
比如:A和B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项目中的inode节点号相同,即一个inode节点号对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”的功能。
软连接ln -s:符号连接。软连接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一个文件的位置信息。
比如:A是B的软连接(A和B都是文件名),A的目录项中的inode号与B的目录项中的inode号不同,A和B指向的是两个不同的inode,继而指向两个不同的数据块。但是A的数据块中存放的只是B的路径名,A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但是指向的是一个无效的连接
例:ln -s 1 2表示2是1的软连接 即2是1的快捷方式
总结:
shell是一种特殊程序【编译器】
linux命令分类(内部命令和外部命令)、格式(命令 选项 指定的参数)及使用方法
linux常用命令:查看及切换目录(pwd、cd、ls、du)
创建目录和文件(mkdir、touch、ln)
复制、删除、移动目录和文件(cp、rm、mv)
查找目录和文件(which、find)