由Xshell(伪终端)连接上VM里的centOS,可以在Xshell里方便快捷的进行操作。
在操作之前,可以先在工具栏里的配色方案里选择自己喜欢的配色,在选项里调节背景的透明度,以及其他关于界面的设置,创造出一个舒适的环境以后,按下alt+enter后可以进入全屏模式(再次按alt+enter可以退出全屏),开始我们的Linux基本指令的学习吧!
名词解释
- terminal 终端
知识储备
- 一般登录成功后在输入指令的位置前端都会出现一长串字符如下图:
- 以我自己的用户名为例,基本格式为: 用户名@主机名 目录名称
符号 | 含义 |
---|---|
~ | 家目录 |
/ | 根目录 |
xxx | 其他目录名称 |
- 在输入首字母后按tab可以进行自动补全 多按几次tab会出现以首字母开头的所有文件或者目录名称
基本指令
- ifconfig 查看ip地址
- ssh + IP地址 登录一台远端机器,主要用于在Xshell上链接虚拟机。
man + 基本操作指令 可以召唤用户手册,查看这条指令的所有用法,在忘记一些指令的扩展用法的时候非常有用。
- 在 man 手册内按 q 可以退出man手册。
- 在 man 手册内使用pgup pgdn可以进行翻页。
ls 显示当前目录下的文件夹
- ls -a 显示隐藏文件
- ll 如果用man手册查询会发现没有这个指令,其实这是ls -l的一个别名,效果和ls -l一样,都可以显示该目录下文件夹的详细信息。
- ll home/ 相当于 ll ./home/
- ll -rt 按时间进行反向排序
- ll -t 按时间进行正向排序
- ll -art 连着隐藏文件一起按时间进行反向排序
- ll * 关键字 在这里是通配符,有点类似数据库里的模糊查询,这样查找的结果是所有名称里带有 关键字 的文件。
pwd 查看当前的路径,得到的是绝对路径哦!
** 那么问题来了:**什么是绝对路径,什么是相对路径呢? 如果输入pwd指令,得到的一般是:/xxxx/xxxxxx,就是以/开头的就是*绝对路径*。 相对的,以.开头的路径就是*相对路径*。 (不知道这样理解有没有错,就暂且先这么认为吧!)
cd + 路径 可以去到路径所指向的地方哦,即进入某文件夹或者进入某级目录。
**那么问题又来了:**小伙伴们知道怎么在Linux环境里进行复制和粘贴吗? 这里不再是单纯的ctrl+c或者ctrl+v了! 而是复制:ctrl+insert,粘贴:shift+insert。 请牢记快捷键!
- cd .. 回到当前目录的上级目录。
- cd . 当前目录。
- cd ~ 回到家目录。
- cd - 单纯的返回。
cd 单单执行一个cd就是回到家目录 。
- touch + 文件名 创建文件。
- mkdir + 目录名 创建目录。
- rm + 名称 删除文件
- rm -r 删除目录(-r代表递归的删除)。
- rm -i -r / rm -ir 删除之前进行询问。
- rm -r -f / rm -rf 强制删除。
rmdir 只能删除空目录
删除后不可恢复!有风险!请谨慎操作!
mv xx oo 移动,其中xx为源,oo为目标。即将xx文件移动到oo目录下。
mv xx oo 重命名,和移动有差距,这里xx是旧文件名,oo是新文件名。即将xx改名为oo。
**那么问题又又又来了:**刚刚我们已经知道了,删除有风险,操作需谨慎,那么为了防止我们误操作,我们应该怎样合理的删除文件呢? 在这里,我们建议可以利用mv指令,将要删除的文件移动到一个专门存放被删除文件的地方,如果一旦发现删除错误,就再mv回原来的位置,就可以保护我们的文件啦!
- cp xx oo 拷贝,这里的xx是需要拷贝的文件,oo是拷贝后的文件所存放的地方。
- cp xx mydir/oo 即:将xx文件拷贝一份放着mydir文件夹下,名为oo。
- cp mydir1 mydir2 -r 即:将mydir1目录拷贝一份,名为mydir2。
- cat + 文件名 可以查看文件中的内容
- tac + 文件名 可以反着一行一行显示文件中的内容(??????)。
- echo 打印
- echo woaichirou > test.c 将woaichirou输出显示到文件test.c中,其中 > 为重定向符号,可以理解为一个箭头,将一串内容输入到一个文件中。
- echo “” 可以换行输入
- more 查看更多。如果文件太多页显示不下可以使用。
- less 查看更少。(一般好像会默认打印前10行)。
- head 从头开始打印
- head -n + 数字 + 文件名 选择打印文件的前多少行,行数为输入的数字。
- tail 从尾部开始打印
- tail -n + 数字 + 文件名 选择打印文件的倒数多少行,行数为输入的数字。
| 管道。一边连接前一个指令的标准输出,后接另一个指令的标准输入
**那么问题又又又又来了:**如果我只想打印某一文件内的第5行,应该怎么做呢?
- date 查看时间
- date +%s 查看时间戳
- date -d”@时间戳” 利用时间戳得到时间
- date +”%Y%m%d / %Y:%m:%d / %Y_%m_%d” 得到年月日 / 年:月:日 / 年_ 月 _ 日
- cal 打印当前月的日历
- find -name + 文件名 查找该文件的目录,默认从当前路径查找。如果不知道大致的路径,可以先进行cd / 后在使用find指令,在全局范围内搜索。
- grep + 要查找字符串 + 路径
- 文件路径写 * / *可以表示在当前任意目录下查找任意类型的文件。
- -n 显示行号。
- -i 忽略大小写。
- -v 反向查找。
- grep “ccc” -R mydir/* 递归的查找。
- zip mydir.zip -r mydir/ mydir.zip是生成的压缩包名,-r 因为是打包的是文件夹和目录所以需要-r,mydir即为需要被打包的目录。
tar 功能和zip差不多,但是更加复杂,如果遇到了后缀是tar则需要这种方式。是不打开包,直接查看内容。
- -c 建立一个压缩文件的参数指令(create的意思)。
- -x 解开一个压缩文件的参数指令。
- -t 查看tarfile里面的文件。
- -z 是否同时具有gzip的属性?亦即是是否需要用gzip压缩?
- -j 是否同时具有bzip2的属性?亦即是是否需要用bzip2压缩?
- -v 压缩的过程中显示文件?这个常用,但不建议在背景执行过程。
- -f 适用档名,请留意,在f之后要立即接档名,不能再加参数。
- -C 解压到指定目录。
bc 计算器。
- Python 也可以进行计算。
uname 获取电脑和操作系统的信息
- -a 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。
ctrl+c 让当前程序停掉。
- ctrl+d 键盘输入结束(end of file,EOF或者end of input)的意思,另外,他也可以用来取代exit。
- history 查看历史指令。
- ctrl+R 输入关键字,可以查看上一条带有关键字的指令。
- file 后面加上文件名,可以查看这是一个什么类型的文件。例如可以判断是否为可执行文件。
- shutdown 关机。
- -h 将系统的服务停掉之后,立即关机。
- -r 在将系统的服务停掉之后,就重新启动。
- -t sec -t后面加秒数,即在几秒以后关机。
扩展命令
- 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
- 文件处理命令:file、mkdir、grep、dd、find、find、mv、ls、diff、cat、ln;
- 系统管理相关命令:df、top、free、quata、at、lp、adduser、groupadd、kill、crontab;
- 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、nslookup;
- 系统安全相关命令:password、su、usamk、chgrp、chmod、chown、chattr、sudo ps、who;
- 其他命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uuencode。
shell命令及运行原理
- 定义:命令解释器(command interpreter):
- 将使用者的命令翻译给核心处理。
- 同时,将核心的处理结果翻译给使用者。
linux权限的概念
两种用户:
- # root(超级用户):可以在Linux系统下做任何事,不受限制。
$ 普通用户:在Linux下做有限的事情。
su 切换用户
- su root/su 切换到超级用户。
- su user 切换到普通用户。
文件访问者的分类:
- 文件所有者:u-user
- 文件所有者所在组的用户:g-group
其他用户:o-others
文件访问权限的种类:
- r read,读
- w write,写
- x execute,可执行
-
- 不具有权限
Linux表示 | 说明 |
---|---|
r– | 只读 |
-w- | 仅可写 |
–x | 仅可执行 |
rw- | 可读可写 |
-wx | 可写可执行 |
r-x | 可读可执行 |
rwx | 可读可写可执行 |
不可读不可写不可执行 |
权限符号(读写执行) | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
0 | 000 |
chomd 设置文件的访问权限
- chmod -x a.out 去掉a.out的可执行权限,该文件将不可执行。
- 可执行要求:
- 文件格式:ELF
- 文件具有可执行权限
- chmod +r a.c 给a.c文件加上可读权限。
- chmod u-r/g-r/o-r a.c 给a.c文件所有者/去掉可读权限。
- chmod 777 a.c 给文件a.c所有可执行文件。
- chmod 666 a.c 去掉文件a.c所有可执行权限。
chown 修改文件的拥有者。
- chgrp 修改文件或目录的所属组。
粘滞位 chomd +t a.c 添加粘滞位。有粘滞位的文件只能由:1.超级管理员删除。2.该目录的所有者删除。3.该文件的所有者删除。
关于权限的总结: 1. 目录的可执行权限是表示你可否在目录下执行命令。 2. 如果目录没有-x权限,则无法对目录指向任何命令,甚至无法cd进入目录,即使目录仍然有-r读权限。 3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。 4. 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。