linux的哲学思想:
linux和windows的区别:
Linux:
用户知道自己想要什么,也明白自己在做什么,并且会为自己的行为负责。
Windows:
用户不知道自己想要什么,也不明白自己在做什么,更不打算为自己的行为负责。
技术人员也需要看的linux入门书籍:《鸟哥的Linux私房菜》
1. 基本操作
基本流程:
进入目录(cd)–>查看文件是否存在(ls)–>查看文件内容(cat)–>编辑文件(vim)
1. cd
cd 进入指定的目录
1 | # cd .. 返回上一级 |
2. ls
ls 查看文件的属性
1 | # ls -l == ll |
3. cat
cat 查看文件内容
1 | cat /etc/fstab |
#
# /etc/fstab
# Created by anaconda on Thu Aug 17 07:38:21 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=976105f5-f402-456c-aadd-50de49ff88f9 / ext4 defaults 1 1
有时候文件太长,我们需要借助一下其他小工具。
- 按屏输出内容 less
- 通过关键字查找 grep
1 | # cat /etc/fstab | less 或者 less /etc/fstab |
4. vim
如果我们需要修改文件,应该使用linux下自带的vim编辑器。
vim一共三种操作模式:
- 命令模式:使用一些命令对文本文件进行一些复制,粘贴,快速定位等操作
- 冒号模式:对文本进行批量修改,查找等操作
- 插入模式:输入字符
按照约定,我们在服务器上修改任何一个文件之前,均需要对其进行备份操作。
1.打开文件
vim + 文件名
直接使用vim + 文件名,此时进入的是vim编辑器的命令模式。不能直接输入字符修改文件。
在这个模式下可以进行一些编辑前的预备操作:
删除不需要的行:
dd 删除光标所在的整行;
#dd 删除光标所在行及其下的#-1行,#表示数字。
粘贴删除的行
p 命令, dd 和 p 配合就实现了windows下的剪切操作。粘贴操作:
yy 复制当前行
#yy 复制光标所在行及其下的#-1行,#表示数字。
粘贴
p yy 和 p 配合实现了windows下的复制粘贴操作。调整光标位置,快速定位到需要修改的行
gg : 跳转到文本的第一行
G : 跳转到文本的最好一行
#gg : 快速跳转到第#行调整光标位置,快速定位到行内的某个字符
# crtl + 左右箭头 按照空格为界,每次跳转到对应空格后字符的词头。
Home 键跳转到行头部
End 键跳转到行尾部
2.修改文件
简单修改:
通过1的操作,定位到想修改的位置,
i(insert) : 当前光标位置插入;
a(append): 光标后插入;
o(other):在光标当前行之下开启新的一行。
批量修改:
在命令模式下,直接输入:符号,进入冒号模式;在冒号模式下我们可以使用简单的命令对文件进行批量替换。
语法:
:[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
说明
- s/ / / 可以使用 s@ @ @ 或者 s# # # 替换,从而解决特殊情况;
- [addr]为指定要替换的行,不指定默认当前行。 .$ :当前行到尾行 , 1$:全文 3,5: 第3到第5行;
- [option] g为全文所以,不知道表示只修改每行找到打第一个。
a. 用//注释第10-20 行内容:
:10,20s#^#//#g
b. 在10-20行删除 //注释
:10,20s#^//##g
c. 批量替换全文所以的单词:
:1,$s/sup/good/g
冒号模式下的其他命令:
- :set num , 每行添加行号,方便跳转
- :# , 快速定位到第#行,:1 首行 :$ 尾行
- :set ai! 设置自动缩进
- :syntax on 语法高亮 | off 关闭
3. 退出
修改完成后,退出编辑器。
- 保存退出,:wq
- 不保存退出,:!q
如果下次打开文件出现
1 | E325: 注意 |
则说明异常退出,上次编辑文件后没保存文件就被关闭了。
此时可以直接输出D,删除交换文件直接进入。
或者直接删除.Dockerfile.swp文件。
2. 一些技巧
1. history命令
history查看文件的执行历史
当我们要反复执行某个比较长的命令时候。我们可以进行如下三种操作:
- 重新输入命令
- 键盘上下键翻滚
- 配合history命令,找到命令的id,然后!+id 重新执行该行命令
!! 代表上一个命令
! + 曾经输入过命令的前几个字母,可以直接重新执行最近的那一条命令
! # 重新执行history命令看到的第#条命令。
2. bash上的快捷键
crtl + e 跳转到命令行行尾
crtl + a 跳转到命令行行首
crtl + ——> :以单词为单位移动,向右
crtl + <—— :以单词为单位移动,向左
esc + . 获取最后一条命令的最末尾的参数,并复制到当前命令行上
3. table
table 是linux下常用的命令之一,作用是补全文件路径(包括文件名称)或者补全命令。
TAB键的两大作用:
- 只需输入文件或目录名的前几个字符,然后按TAB键,如无相重的,完整的文件名立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字。
- 在命令行下,只需输入例如m,再连续按两次TAB键,系统将列出所有以m开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令特有用。例如输入ftp,将查到ftp,ftpcount,ftpwho,ftpshut等本不熟悉的命令。
4. 清屏
有时候黑乎乎的终端被各种字符填满,我们可以使用clear命令或者crtl + l 键来清理。
3. 常用命令
1. cp
cp 复制
cp [options] source dest
使用指令”cp”将当前目录”test/“下的所有文件复制到新目录”newtest”下,输入如下命令:
cp –r test/ newtest
#-r 递归复制
2. mv
mv 移动
1, 把文件或者目录移动到另外一个目录下
mv a /b
2, 重命名文件或者目录
mv a b
#a 可以为文件或者目录,但是b最好不要存在。
3. rm
rm 删除文件或者目录
-f, –force 忽略不存在的文件,从不给出提示。
-r, 递归,删除文件夹
rm -rf ##linux 下最强势且最简单的操作之一,强制删除指定的文件
rm file #删除一般的文件
4. touch && mkdir
touch 创建文本文件
mkdir 创建目录
mkdir -pv /a/b/c #如果a和b不存在,递归创建/a和/a/b目录
4. 其他问题
1,当需要在服务器上运行长时间占据终端的命令时候,我们需要在后台运行命令。
两种办法:
1.screen命令
剥离当前终端
#开启一个新的终端
screen -S Terminal_name #Terminal_name 终端名称
#查看当前运行的终端
screen -ls
#进入终端
screen -r # #是-ls 中查看到的id 或者 开启时候的Terminal_name
#置于后台
crtl + a + d
2.将文件内容重定向到文本中
| 管道
重定向符号 >>
XXX >> /dev/null #输出的文本没用
#/dev/null 是linux下的一个设备,又被称为”黑洞”设备,所有输入进这个设备的文件均消失。
#/dev/zero 是一个代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。
xxx >> /tmp/xxx.logs #输出的文本有作用
2,如何解决服务器上不能crtl + c 终止的任务?
比如: /alidata/server/php/bin/php /alidata/www/wxbackend/protected/commands/index.php MemeSyn SynMomoSaleGoodsInfo 这个定时任务。
查询该任务的进程id,使用kill命令结束该进程
1,查询该任务的进程id :
grep 后边加的是可以识别这个定时任务的关键字。比如MemeSyn 也是可以的。ps aux | grep SynMomoSaleGoodsInfo
运行结果:
1 | root 31933 0.6 0.2 438432 38020 pts/9 S+ 11:35 0:00 /alidata/server/php/bin/php /alidata/www/wxbackend/protected/commands/index.php MemeSyn SynMomoSaleGoodsInfo |
2, kill 该进程
kill 31933