目录
一、与文件有关的操作
1. touch 创建文件
创建文件 touch xxx.txt 注意是在哪个目录下创建的
2. cat 查看文件内容
cat xxx.txt 查看文件内容
cat -n xxx.txt 查看文件内容并显示行号
3. more less 文件分页查看
- 3.1 more
more filename
分页显示文件内容,敲空格键翻页,按回车键一行一行翻页。
- 3.2 less
less filename
也是分页显示文件内容,上下翻行,敲空格键翻页,按q退出。
4. head 查看文件开头,自定义行数
如查看xxx.txt文件前5行:head -n 5 xxx.txt 或者 head -5 xxx.txt
5.tail 查看文件结尾,自定义行数
如查看xxx.txt文件后5行:tail -n 5 xxx.txt 或者 tail -5 xxx.txt
tail -f xxx.txt 常用,可监控文件内容的变化
6. echo 打印信息
echo "哈哈哈哈"
7. 覆盖> 追加>>
echo "abc" > xxx.txt 将字符串abc覆盖整个xxx.txt文件
echo "abc" >> xxx.txt 将字符串abc追加在xxx.txt文件后面
8. ln连接与软连接
多个地方使用同一个文件,相当于快捷键,通过快捷键可以直接进入某个文件。
ln -s 原访问路径(绝对路径) 现访问路径
然后直接cd 现访问路径就可以到原访问
rm 删除软连接
9. history 查看历史命令
还可以通过 i+命令行号执行该命令
10. find 查找文件
根据文件名查找
- find /aaa -name "myfile"查找aaa目录下的myfile目录或普通文件文件
根据用户名查找
- find /aaa -user "lkk" 查找aaa目录下的属于lkk用户的所有普通文件或目录
模糊查找
- find /aaa -name "*.txt" 查找aaa目录下的所有txt文件
根据文件大小
- find /aaa -size +10k 查找aaa目录下大于10k的文件
- find /aaa -size -10k 查找aaa目录下小于10k的文件
11. file 查看文件类型
file [filename]
12. vim 编辑文件
上面的cat和echo操作都是针对一些简单的读写。如果读取内容复杂,我们一般用vi/vim,它是linux上自带的记事本程序。vim是vi的升级版本。一般用vim。
- 1.打开文件
首先打开文件 :vim xxx.txt
- 2.编辑文件
vim有两个模式,普通模式 (normal mode) 和 插入模式(insert mode)。
默认情况下是普通模式。按i可切换成插入模式进行编辑。再按esc回到普通模式。
如果vim打开了因某种原因没有正常关闭,如断网等,那么下次再次启动的时候会提醒输入命令,输入D是删除上次编辑还未保存的内容,输入R是恢复之前的编辑页面,继续编辑。
- 3.保存退出
打开文件后,我们进行写入,不过写完如何退出文件,这里有个注意点:
退出通常是输入 :q 不过有时候会出现退不了的情况,出现这种情况可以先按5次esc,再输入 :q ,若出现下面这种标红的,是提示没保存。我们输入 :wq 即可。输入 :q! 强制退出。
使用vim一般操作是:
- vim xxx.txt
- 在普通模式下输入所要查找或修改的行号,并点两下 g
- 先按i切换成编辑模式,
- 编辑完后按esc回到普通模式,
- 输入:进入命令模式,
- 最后输入wq完成保存并退出。
其他操作(在普通模式下)
- /abc 全文查找匹配的
- :%s/旧字符/新字符 全文替换
- :noh 取消高亮
- :set nu 展示行号 :set nonu 关闭行号
- :wq 保存并退
- :q! 强制退出
- dd 删除光标坐在行
- yy 复制光标所在行
- 有时候我们在修改文件时因为一些原因未保存退出了,下次登录再修改时就会有提示。我们需要删除隐藏的.文件名.swp文件。
二、用户权限与组操作
1.添加用户
useradd 用户名
2.设置用户密码
passwd 用户名
3.将用户添加到新用户组中
usermod -g 新组名 用户名 加入新用户名组 原所属所有用户组都会没有
usermod -aG 新组名 用户名 加入新用户名组 不影响原所属用户组
3.查看所有创建的用户
cat /etc/passwd
5.查看所有用户组
cat /etc/group
6.切换用户
su 用户名
7.删除用户
userdel 用户名
8. who
显示当前登录者
9.sudo + 其他命令
在其他命令前加sudo,因为当我们处于非root用户去执行一些操作(在根目录下创建文件)时,会没有权限,使用sudo可以赋予权限(不过 使用这个创建出的文件的文件所有者还是root用户)。其他用户可以使用的前提是还需要在/etc/sudoers文件中修改(可能这个文件还是个只读文件,需要chmod修改权限),找到101行,插入 用户名 ALL=(ALL) ALL。
9. groupadd 组名 groupdel 组名 groupmod [选项] 组名 修改用户组的属性
还是为了方便对用户统一管理,多个用户可加入同一个组。默认每个用户创建时都有自己的组。可通过cat /etc/group 查看所有用户。
- groupadd 组名 新增一个用户组
- groupdel 组名 删除一个用户组
- groupmod -g 组名 修改用户组id
- groupmod -o 组名 允许用户组名不唯一
- groupmod -n 组名 修改新的用户组名称
- cat /etc/group 查看所有用户组
10. 查看该用户所属所有组名
groups 用户名
11. 查看该用户所属所有组名以及组的id
id 用户名
12. chmod
修改用户对文件的读,写,执行(shell脚本)等权限。
用户类型有四类:
- user(文件所有者),
- group(文件所有者所在组),
- others(所有其他用户),
- all(所有用户,和ugo使用一样。)
操作符参数有三类:
- + 为指定用户类型增加权限
- - 未指定用户类型去除权限
- = 直接重置用户类型的所有权限
chmod a=rwx file 表示所有用户都可读写执行
chmod a+r file 表示给所有用户加上可读权限
chmod ugo+r file 与a+r的相同
chmod u+x file 表示给文件所有者加上执行权限
也可以使用八进制语法:
二进制三位为一组,一共三组(文件所有者,用户组,其他用户),比如二进制(111)对应符号(rwx),即可读+可写+可执行。二进制(101)对应符号(r-x),即可读+不可写+可执行。
chmod 755 file 一个数字是一组,第一个7代表对文件所有者的权限,第二个7代表对用户组的权限,第三个7代表对其他用户的权限。
13. chown 更改用户名和所属组名
用来更改某个目录或文件的用户名和用户组的,非root用户加sudo。
chown 用户名:组名 文件名
chown -R 用户名:用户组 目录或文件 可更改指定目录下所有的文件的
14. grep 查找字符串
grep 字符串
15. | 管道符
管道符+grep 字符串 可进行过滤
例如:ps -ef | grep java 匹配所有进程中出现过java字符串的进程
ll | grep java 匹配所有该目录下有java字符串信息的
16.压缩和解压缩命令
1.压缩 gzip xxx.txt 解压缩 gunzip xxx.txt 只能压缩文件不能压缩目录
2.压缩 zip -r test.zip /aaa test.zip为自定义设置压缩后的文件名,可以压缩文件和目录。解压缩unzip test.zip -d /aaa 将test.zip解压缩到aaa目录下
17.tar打包 最常用
tar -zcvf xxx.tar.gz aaa 将aaa文件或目录打包并压缩为xxx.tar.gz文件
tar -zxvf xxx.tar.gz -C aaa/ 将xxx.tar.gz文件解压缩到aaa目录下
18.定时任务 at & cron
- 1.at 一次调度执行,该任务只能被执行一次
at 2:10pm + 3day 让某个进程在3天后下午2:10执行
at 2:10am + 5day 让某个进程在5天后上午2:10执行
atq 查看系统所有还没有执行的计划任务
atrm+序号 删除还未执行的计划任务
- 2.cron 循环调度执行,任务被循环执行
可以使系统周期性的执行某些任务
- *(星号)代表所有有效的值
- -(中划线)表示一个整数区间如1-3,表示123
- ,(逗号) 表示一个列表,例如1,2,3 就表示123
- / (正斜线) 指定间隔频率 如/2 表示每个2个单位(分钟或小时等)
- crontab -e 编辑定时任务
- crontab -l 查看所有定时任务
- crontab -f 删除当前用户的所有定时任务
示例:将字符串"abc"每隔一分钟追加到test.txt文件中
- 第一步:通过 crontab -e 命令进入编辑页面,按i进入编辑模式
- 第二步:*/1 * * * * echo "abc" >> /test.txt(绝对路径)
- 第三步:按 esc 进行普通模式,输入 :wq 保存并退出。此时该任务已经周期执行起来。
三、Shell脚本
1.创建shell脚本过程
- 创建文件 mkdir aaa
- 给所有用户赋予执行权限 chmod a+x aaa
- 使用vim打开并编辑脚本 例如输入 echo "abc"
- 使用命令执行 ./aaa 或者 sh aaa 或者 bash aaa 或者 source aaa。
使用source与前面其他三者的区别是:使用source启动脚本,脚本中的变量可以被外面使用。通过$+变量名。
2. shell变量
1.设置一个环境变量
export a = 1
2.查看这个环境变量
echo $a
3.删除这个环境变量
unset a
4.定义一个只读变量
export readonly a = 1
- $# 传递给脚本参数的个数
- $* 接收传递给脚本的所有参数
3.shell中的通配符
- * 匹配任意多个字符
- ?匹配任意一个字符
3. let 命令
let命令后可以跟运算符
4. shell脚本之循环
使用for循环计算1~100的数字之和
使用while循环计算1~100的数字之和
使用if语句
使用 #* 作为输入参数,其可以匹配一个或多个参数
输入一个参数,计算1到参数求和
如下,启动脚本时必须带上参数,不带或参数带多都会报错
四、针对目录的操作
1. mkdir 创建目录
创建一个目录: mkdir 目录名,也可以一次创建多个目录: mkdir 目录1 目录2 目录3(这是平级的)
mkdir创建多级目录: mkdir -p aaa/bbb/ccc
2. rmdir 删除目录
只能删除空目录
3. rm 删除目录或文件
rm 文件名 删除文件 需要确认删除
rm -r 目录名 删除目录 需要确认删除
rm -rf 目录名 强制删除目录 不需要确认
注意:rm -rf / 这个操作很危险。这个会把根目录下的所有文件包括根目录都给删除,linux没有回收站。就只能重装系统了!!!
还有:
比如左边这个操作,本来是想删test.txt文件的,但是第一个斜杠和后面的root之间多了个空格,这种不经意的操作。也就 给全删完了。所以删除的时候一定要注意斜杠两边是否有空格。切记不能有空格。
4. mv 移动或者剪切+粘贴 ,重命名
mv 源 目标 mv不仅能移动文件位置,还能给文件改名。mv aaa.txt bbb.txt 将文件名为aaa的文件名改为bbb。
上面这种操作是将ddd 目录移动到上一级目录中。
5. cp 文件/目录复制
cp -r 源 目标 递归拷贝,因为目录里还会有子目录,
cp 原目录/* 目标目录 将原目录下的所有文件(不包含原目录),拷贝到目标目录
将bbb目录复制到ccc目录中,包含bbb
将bbb目录复制到ccc目录中,不包含bbb
五、其他常用命令
ls 显示目录内容列表
ls -l 显示详细信息 可以用简写的 ll 代替
ls -a 还显示隐藏的文件
cd 切换目录
cd .. 返回上级
wc -l 文件名 统计给定文件的行数
wc -w 文件名 统计单词数
wc -c 文件名 统计字符串数
uname 显示操作系统当前信息
date 显示日期信息
cal 显示日历
shutdown 关闭操作系统
pwd 查看绝对路径,工作路径
ctrl+l 清屏,或者输入 clear。
ctrl+回车键 删除
ctrl+insert :复制
shift+insert:粘贴
ctrl+c:结束命令。
ctrl+s:冻结屏幕
ctrl+q:解除冻结
netstat 显示Linux中网络系统的状态信息
netstat -nlp|grep 8080:查看端口号为8080的进程
kill pid 杀进程
kill -9 pid 强制关掉进程
ps -ef 查看本机所有正在运行的进程
ps -ef | grep java:查看名字为java的进程
ps aux | grep java: 查看名字为java的进程
grep 字符串 查找字符串
grep -v 字符串 翻转查找,查找不包含这个字符串的
grep -o "hello" xxx.txt | wc -l 查看指定文件中 hello 出现的个数
grep -c "hello" xxx.txtt 查看指定文件中 hello 出现的总行数
grep -rn "hello" ss.txt 查找某个字符串在文件的第几行
使用vim打开文件,在normal模式下输入 / ,后跟所要查找的字符串,即可高亮显示所有匹配的字符串,按 n 向下匹配查找,按 N 向上匹配查找。
top -c 实时查看所有进程占用系统资源情况,如cpu%,memory(内存)%等。
jobs 用于显示后台运行的进程
pstree 进程树,在Linux中,每一个进程都是由父进程创建的,此数可以表示父进程与子进程之间的关系
nohup java -jar xxx.jar & & 后台运行命令
awk 'NR==2' filename 查找文件的指定行数据
whereis [选项] 用于定位各种文件的位置,如whereis mysql等,查看文件是否存在,安装。
mv 源 目标 文件重命名,移动文件
六、在Linux上搭建jdk,mysql环境
先搭建环境(安装软件) 三步: 下载安装jdk(1),下载安装tomcat(2),下载安装mysql(3)。安装的前提是管理员身份。
1.下载jdk
输入下面一段代码下载
yum list | grep jdk
然后选择版本,jdk现在普遍用的都是1.8版本。
复制上面选择的,linux中用ctrl+insert复制,用shift+insert粘贴
yum install 复制的版本
下载完后输入javac命令验证 下图说明下载成功!
出现下图结果,说明下载成功!
2.下载tomcat
1.从官网下载我们需要的tomcat版本的压缩包,可以先在xshell中创建一个目录,然后把压缩包直接拖拽到这个目录里。
如果拖拽加载不玩,
2.然后使用 unzip apache-tomcat-8.5.93-windows-x64.zip 命令进行解压缩,tomcat版本可以自行选择。
如果提示unzip找不到,就先输入yum install unzip,下载unzip。
解压缩成功后,找到你所拖拽的目录,跳到tomcat的bin目录下
然后输入下面一段代码,目的是给所有的.sh赋予可执行权限。
chmod +x *.sh
尝试启动Tomcat
sh startup.sh
注意:启动命令sh startup.sh要在tomcat的bin目录里使用才有效。即先找到bin目录。其他位置会显示找不到该文件。
关闭Tomcat
sh shutdown.sh
3.mysql安装
这里我们安装的是与mysql很相似的mariadb。
安装 mariadb 服务
yum install -y mariadb-server
安装 mariadb 命令行客户端
yum install -y mariadb
安装 mariadb C library
yum install -y mariadb-libs
安装 mariadb 开发包
yum install -y mariadb-devel
启动
启动服务
systemctl start mariadb
设置服务开启自启动
systemctl enable mariadb
查看服务状态
systemctl status mariadb
测试连接
使用命令行客户端尝试连接
mysql -uroot
退出mysql操作
进入mysql操作完后,按下ctrl+d 退出