linux/work
0。切换用户
//默认root用户是无固定密码的,并且是被锁定的,如果想给root设置一个密码 sudo passwd root //输入密码 & 确认密码 //切换root用户 su root //输入密码即可--root //切换为普通用户 su username //eg:su yufeng //在root用户模式下,可修改sudoers文件权限 vi /etc/sudoers 在该文件User privilege下 root ALL=(ALL:ALL) ALL 下添加 shiyufeng ALL=(ALL:ALL) ALL //当在普通用户模式下。可应用命令切换 su -
//查看当前正在登录的用户
who
1。查看端口是否被占用
【1】MAC下查看端口是否被占用
//方法一 //查看80口是否被占用 sudo lsof -i :80 //方法二 netstat -anp tcp | grep 80 //如下命令可以直接结束占用端口的所有进程: lsof -P | grep ':80' | awk '{print $2}' | xargs kill -9
【2】linux下查看端口是否被占用
lsof -i:端口号查看某个端口是否被占用 使用netstat -anp|grep 80
2。mysql数据库(docker安装mysql)
//0。搜索mysql镜像
docker search mysql
//1。拉取镜像 docker pull mysql:5.7 //2。查看mysql镜像 docker images | grep mysql //3。启动mysql容器 docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=shiyufeng -d mysql:5.7 //4。进入mysql容器 docker exec -it mysql bash //5。连接mysql mysql -uroot -pshiyufeng / !mysql //6。退出mysql/容器 exit
3。docker 中不能用vim编辑文件解决方案
//可在docker容器中执行下述命令,即可使用vim编辑文件 //[1]更新来源 apt-get update //[2]安装vim apt-get install -y vim
4。操作文件夹/文件
//1.创建文件夹 (创建learn文件夹,并在下边创建log/etc/html文件夹) mkdir learn/log learn/etc learn/html
//2.以树形显示文件夹目录
apt-get install tree //安装
//文件夹下执行命令
tree
5。tomcat(docker安装tomcat)
//查看tomat日志 docker logs -f tomcat
Linux命令学习笔记--每天进步一点点!!!
1。【ls命令 --list】
ls //当前所在目录下内容 ls -a //显示所有文件(包括隐藏文件) ls -l //l:longlist 长格式显示,显示详细信息 ls -lh //人性化显示文件大小(组合使用-l和-h) ls -ld //查看目录属性(组合使用-l和-d) ll /dir/ //查看目录dir下的详细内容 ll=ls -l ls -i /root/file //查看file文件的i节点
2。mkdir命令 --make directory
mkdir -p dir1/dir2 //递规创建目录dir1/dir2 mkdir dir //创建单独目录
3。pwd--print working directory
pwd //查看当前所在目录
4。cd命令 --change directory
cd dir/ //进入dir目录 cd ~ | cd //进入当前用户的家目录 cd - //进入上次目录 cd .. //进入上一级目录 cd . //进入当前目录(无实际作用,即当前目录) cd ../usr/local/src/ //参照当前目录所在位置查找,相对路径(tab键可补全) cd /etc/ //从"/"根目录下一级一级查找,绝对路径
5。rm删除命令 --remove
rmdir dir/ //删除dir目录(注:dir必须为空目录)(少用) rm file //删除文件 rm -r dir //删除一个目录(若其下有目录和文件,会一级级询问是否要删除) rm -rf dir/ //强制删除目录dir(包括其下的所有目录和文件)(常用)
6。cp复制命令 --copy
cp filename /tmp/newfilename //改名复制文件到目录tmp下 cp filename /tmp/ //复制原文件到目录tmp下 cp -a filename /tmp/ //原名复制文件到目录tmp下,且与原属性相同 cp -r dir1/ /tmp/ //拷备目录dir1到目录tmp目录下(-r必须)
cp filename1 filename2 filename3 ../tmp //将多个文件复制到上一级tmp目录下
7。mv剪切/改名命令 --move
mv dir/ /tmp //剪切目录dir到目录tmp下 mv filename newfilename //将filename改名为newfilename
8。ln 链接命令 --link
#硬链接(不推荐):删除原文件不影响链接文件 ln /root/file.cfg /tmp/newfile.hard //为file.cfg创建硬链接newfile.hard(文件内容映射,删除哪个文件对别一个不影响) ls -i file.cfg | ls -i newfile.hard //查看i节点,相同 #软链接(推荐,类比window快捷键):删除原文件,链接文件不可用 ln -s /root/file /tmp/file.soft //为root/file创建软件链接file.soft #注:软链接源文件必须写绝对路径,否则源文件与链接文件必须在同一目录下才能找到。
9。文件搜索命令(locate / whereis&which/find /grep)
locate:只能按文件名搜索(速度快,搜索DB)
whereis / which:用于搜索系统命令
find:完全匹配
grep:包含匹配
【locate命令:搜索文件 --速度快,但只可以按文件名搜索】 locate install.log //搜索日志文件(对于新创建的文件搜索不到,搜索的是后台数据库(不是实时更新)) 【find命令:搜索文件 --速度慢,但可以按条件搜索文件】 【whereis与which:搜索系统命令】 whereis ls //查看ls命令所在位置 whereis -b ls //只需要看ls在哪,不想看帮助文档 where is -m ls //只看帮助文档 which ls //查找ls命令所在位置,包括ls的别名(如:ll是ls -l的别名) == whereis //知道我在哪 whoami //知道我是谁 shiyufeng(当前用户) whatis ls //知道这个命令是做什么的 【find命令】:完全区配 find / -name filename.log //查找名字是filename.log的文件(耗费环境,搜索了整个根"/") find /root -name "filename.log*" //匹配任意内容(*)查找/root目录下 find /root -name "ab[cd]" //搜索abc或abd的文件 find /root -name "*[cd]" //搜索以c或d结尾的字符 find /root -iname "abc" //不区分大小写搜索abc文件 find /root -nouser //获取指定目录下没有所有者的文件(内核产生的文件/外来文件有可能没有所有者) #按时间搜索 #-mtime:修改文件内容。-ctime:改变文件属性。atime:文件访问时间 find /var/log -mtime +10 //查找10天前修改的文件 +10:10天前 10:10天当天 -10:10天内 #按文件大小搜索 find /root -size +26k //查找root目录下大于26k的文件 +10大于10 -10小于10 10等于10 find /etc -size +2M //查找etc目录下大于2M的文件 find /root -size 25 //查找25个扇区的文件,因此单位不能省 ls -i //获取i节点,根据I节点查找文件名 find /root inum 节点号 //根据I节点,查找文件名 find /etc -size +20k -a -size -50k //查找/etc目录下大于20k且小于50k的文件 -a:and #-exec将前面的结果,以ls -lh显示 {} \固定格式 find /etc -size +20k -a -size -50k -exec ls -lh {} \ //处理第一个结果以长格式显示 【grep命令--搜索字符串】:包含区配 grep "size" file.log //查找file.log文件中包含size的行 grep -v "size" file.log //查找不包含size的行
10。帮助命令(man/help/info)
(1)【man帮助命令--manual】:支持多个帮助级别 man man //获取指定命令man帮助[man 命令] man ls //查看ls的帮助 [:/d 可查看包含/d的,方便查找] man -f ls //[man -f ls] <=> whereis 命令 查看命令帮助 man ifconfig //查看ifconfig命令的帮助 ifconfig //查看和修改IP命令 apropos passwd //查看与passwd相关的所有帮助信息 man -k passwd //[man -k 命令]查看与passwd相关的所有帮助信息 (2)【其他帮助命令】 【help获取内部命令帮助】 ls --help //查看ls的帮助命令[命令 --help] whereis ls //确定是否是内部命令,只要找不到都是内部命令 【详细命令帮助info】--不常用 info man //显示man的所有详细帮助[info 命令]
11。压缩命令与解压缩命令(.zip .gz .bz2)
.zip:可以压缩文件/目录 (压缩源文件,并保留源文件)--windows可以解压缩
.gz:可以压缩文件,且源文件消失;压缩目录,会将目录下的所有子目录/文件分别压缩--windows可以解压缩
.bz2:bzip2命令不能压缩目录,只能够压缩文件
(1)【.zip压缩格式】=windows(通用) #压缩文件-压缩文件不一定比源文件小 zip filename.zip filename //[zip 压缩文件名 源文件] 注:.zip可省,但建议保留 #压缩目录 zip -r dirname.zip dirname //[zip -r 压缩目录名 源目录] #.zip格式解压缩 unzip filename.zip //解压缩文件[unzip 压缩文件] unzip dirname.zip //解压缩目录[unzip 压缩文件] (2)【.gz压缩格式】-linux专有压缩格式,windows可以解压缩 gzip filename //将文件压缩成.gz格式且源文件消失 gzip -c filename > filename.gz //将文件压缩成.gz格式且源文件不消失 gzip -r dirname //压缩目录下的所有子文件,但不会打包成一个文件 【.gz格式解压缩】 gzip -d filename.gz //[gzip -d 压缩文件]解压缩 gunzip filename.gz //解压缩 gunzip -r dir //解压缩目录 【.bz2格式压缩】--注意:bzip2命令不能压缩目录 bzip2 filename //[bzip2 源文件](不保留源文件) bzip2 -k filename //保留源文件压缩 [.bz2格式解压缩] bzip2 -d filename.bz2 //[bzip2 -d 压缩文件] bunzip2 filename.bz2 //[bunzip2 压缩文件]
12。压缩命令与解压缩命令(.tar.gz / .tar.bz2)
.tar.gz & .tar.bz2主要用于解决.gz和.bz2压缩目录问题.(实现原理:先打包再压缩)
###解决.gz和.bz2格式打包目录的问题(原理:先将文件打包,再压缩) (1).[.tar格式打包] tar -cvf filename.tar filename //打包文件[tar -cvf 打包文件名 源文件] #-c:打包/-v:显示过程/-f:指定打包后的文件名 >可再用gzip压缩 (2).[解打包命令] tar -xvf filename.tar //tar -xvf 打包文件名 -x:解打包 (3).打包&压缩(先打包.tar格式再压缩.gz格式) #打包压缩.tar.gz格式 tar -zcvf filename.tar.gz filename //先打包再压缩(c:压缩)[tar -zcvf 压缩包名.tar.gz 源文件] tar -zxvf filename.tar.gz //解压缩[tar -zxvf 压缩包名.tar.gz] #多文件压缩 tar -zcvf /tmp/unionfile.tar.gz file1 file2 //将文件file1和file2一起压缩到目录tmp下 tar -zxvf unionfile.tar.gz //解压缩 #压缩.tar.bz2格式 tar -jcvf filename.tar.bz2 filename //解压缩[tar -jcvf 压缩包名.tar.bz2 源文件] tar -jxvf filename.tar.bz2 //解压缩[tar -jxvf 压缩包名.tar.bz2] tar -jxvf filename.tar.bz2 -C /tmp/ //指定-C选项,解压缩位置 #只看压缩包内容不解压缩 tar -ztvf filename.tar.gz //只压缩包内容不解压缩 [t:test]
13。关机和重启命令
date //查看系统时间 #shutdown:关机前可以保存数据 shutdown -r 05:30 //5:30重启(ctrl+c退出) shutdown -r 05:30 & //后台执行重启 shutdown -c //将重启任务终止 shutdown -r now logout //退出
14。挂载命令
【挂载命令】https://www.imooc.com/video/4443 【挂载和卸载光盘】 #挂载:分配盘符(linux挂载)(其他存储设备U/光盘需要挂载) mount //查询系统中已经过载的设备 vi /etc/fstab //该文件为系统自动挂载文件 mount -a //依据配置文件/etc/fstab的内容,自动挂载 //mount [-t 文件系统][-o 特殊选项] 设备 cd ~ //进入home目录 vi hello.sh //创建并编辑文件 hello.sh --------------------- #!/bin/bash //#代表下述均为Linux脚本(#在第1行不是注释):固定写法 echo "linux" ----------------- ./hello.sh //执行脚本“ ./”当前目录 mount -o remount noexec /home/ //挂载时加-noexec则不执行 ./hello.sh //会报权限不足 mount -o remount exec /home/ //重新挂载 exec可执行权限 (1)【挂载光盘】 #media:挂光盘 mnt | misc 三个目录均为空目录,用于挂载用 mkdir /mnt/cdrom //在目录 mount -t iso9660 /dev/sr0 /mnt/cdrom/ //sr0是cdrom的软链接 <=> mount /dev/sr0 /mnt/cdrom //dev/sr0挂载到mnt/cdrom目录下 umount /dev/sr0 | umount /mnt/cdrom //卸载命令 (2)【挂载U盘】 #linux默认是不支持NTFS系统的 fdisk -l //fdisk:分区命令,查看系统中已识别的硬盘 mount -t vfat 挂载点 //U盘不能直接在linux中挂载 #ntf-3g,默认支持NTFS,有缺点 #实际应用:网络文件传输
15。用户登录&查看命令
w //查看当前登录的所有用户(查看系统当中登录的用户) w username //查看某一登录的用户(w shiyufeng) who //查看系统当中登录的用户(比w显示内容更简单) last //判断系统所有用户(包括之前登录时间和重启时间)的所有信息[实际查询/var/log/wtmp文件] lastlog //查看所有用户最后一次登录时间
16。自定义shell脚本
#shell脚本 vi hello.sh -------- #!/bin/bash //“#”标识下面为linux的标准脚本 # The first shell脚本 //#:注释 echo -e "\e[1;34m hello shell \e[0m" -------- :wq //保存退出 【脚本执行】 #方法一:bash命令直接调用 bash hello.sh //直接执行脚本[bash命令] bash ./hello.sh //“./”表当前目录,可省略 #方法二:先赋予执行权限,再调用shell脚本 chmod 755 hello.sh //赋于执行权限 ./hello.sh //执行脚本(相对路径) /root/hello.sh //执行脚本(绝对路径) //另:echo命令 echo [选项] [输出内容] eg: echo "hello shell" //直接会输出hello shell 选项:-e //支持反斜线控制的字符转换
17。bash的基本功能-别名与快捷键|历史命令
#####bash的基本功能####### 【别名与快捷键】 alias //查看系统中所有命令别名[alias 别名 原命令] ls --color=never //取消颜色显示 alias ls='ls --color=never' //设定命令别名-给命令ls --color=never取个别名ls vi filename //vi无颜色,vim有颜色(比vi强大) alias vi='vim' //给vim起个别名叫vi,因此打vi,实际打vim #上述别名只能临时生效 【别名永久生效】 #每一个用户都有自己的环境变量 vi ~/.bashrc //写入环境变量配置文件(~代表家目录) source ~/.bashrc //生效(也可重启) unalias 别名 //删除别名 【历史命令】 #只能保存正常退出的命令 history //查看所有历史命令[history [选项] [历史命令保存文件]] #手动保存历史命令 history -w //把缓存中的历史命令写入历史命令保存文件 history -c //清空历史命令(不建议清空) #修改历史命令条数 vi /etc/profile //查看历史命令保存条数:HISTSIZE=1000(可修改) #历史命令的调用 history //查看历史,前显示序号 !序号 //重复执行每“序号”命令 !! //重复执行上一条命令 !字串 //重复执行最后一条以该字串开头的命令 eg: history 命令 ls -l //第一条 ls -a //第二条 则! ls 执行的是ls -a这条命令
18。bash的基本功能-输出和输入重定向
输出重定向:应该输出到屏幕,结果输出到文件等。改变输出的方向(常用)
输入重定向:应该统计人为键盘输入的内容,结果统计某文件等的内容。改变了输入的方向(了解)
【输出重定向】--常用 #标准输入输出(输入:输入到PC,输出:从PC输出) #linux中一切皆文件 /dev/stdin //键盘(文件描述符0) /dev/sdtout //显示器(1:标准正确输出) /dev/sdterr //显示器(2:标准错误输出) #输出重定向:输出到屏幕的内容,输出到文件中,改变了输出方向,叫输出重定向 #标准输出重定向(只能保存命令的正确输出) #只要有输出的命令,均可以重定向到文件(eg:ls..) ifconfig > test.log //[命令 > 文件] //覆盖方式添加 cat test.log //上述命令未显示在屏幕上,而是写入到test.log日志中 ifconfig >> test.log //[命令 >> 文件] //追加 #标准错误输出重定向(注意2与>间无空格) yufeng 2 > test.log //将yufeng这个错误命令输出到test.log文件[错误命令 2 >文件] yufeng 2 >> test.log //追加 #***正确输出和错误输出同时保存--常用(记住) #方法一:覆盖方式(>)和追加命令(>>) ifconfig >> test.log 2>&1 //正确输出:[命令 > 文件 2>&1] yufeng >> test.log 2>&1 //错误输出 #方法二:[命令 &>文件] / [命令 &>>文件] ls &>>test.log //正确输出 yufeng &>>test.log //错误输出 #若不想显示命令,可将命令输出到/dev/null ls &>/dev/null // /dev/null黑洞,特殊设备,当作垃圾站 #方法三:[命令 >> 文件1 2>>文件2]正确与错误日志分别保存 cat xxx >> yes.log 2>>erro.log //把正确日志放到yes.log,错误日志放到erro.log 【输入重定向】[wc [选项] [文件名] --了解 wc //可以写入任意内容(统计人为输入) ctrl + d //统计输入了多少字符 wc -c //统计字节数 #改变统计输入方法,不是键盘而是文件 wc < test.log //统计文件输入的字符 wc << string //任意输入,直到遇到string,统计string之前的所有字符
19。管道符
#多个命令顺序执行,命令间无逻辑关系 date ; ls ; cd /etc ; ls ; pwd //多个命令顺序执行(不管某一命令是否报错,后绪所有命令依旧正确执行) #逻辑与,多个命令顺序执行,命令间有逻辑关系 ls && echo yes //第一条命令必须正确执行,第2条命令才可以执行 # ||逻辑或:命令1不正确执行,才执行命令2 ls || ls -l //命令ls不正确执行,才执行命令ls -l #判断ls是否正确执行 ls && echo yes || echo no //ls正确执行,会打印yes,否则打印no 【管道符】 #命令1 | 命令2 命令1的操作结果作为命令的2的操作对象 ls -l /etc/ > abc //先将ls -s结果输入到某一文件 more abc //再查看该文件 more test.log //分屏显示(more查看文件) ls -l /etc | more //管道符,more查看ls命令的结果 #查看linux的所有网络连接 netstat -an //查看linux所有网络连接 #查看连接子多少人 netstat -an | grep ESTABLISHED //在命令netstat -an中查询ESTABLISHED这个行 #查看连接子多少人(统计行号) netstat -an | grep ESTABLISHED | wc -l
20。通配符
ls abc* //查询包含abc的所有文件 ls abc? //查询abc后包含1个字符的文件 ls abc[0-9] //查询abc后包含任意一个数字的所有文件 ls abc[0-9][0-9]//查询abc后包含两个数字的所有文件 ls abc[^0-9] //查询abc后不是数字的所有文件 ls abc[^0-9]* //查询abc后除数字外的所有文件 ls abc[^0-9][a-z] //查询abc后是字母的所有文件
21。正则表达式
#正则表达式 echo ls //输出ls #单引号与双引号,$用于调用系统变量 a=123 //赋予变量值 echo $a //查看变量值123 echo '$a' //原样输出 echo "$a" //输出变量值123 b=ls //赋予b变量值ls命令 echo "$b" //输出ls,不是预期结果 #反引号用于包含系统命令--少用 c=`ls` //反引号,将ls命令赋值给c echo "$c" //会输出ls命令查询的结果 #$()用于包含命令--常用 d=$(ls) //<=>d=`ls`,将ls命令赋值给d #转义字符\将特殊符号$失去意义 echo \$d //输出$d
快捷键
ctrl + c //强制终止当前命令
ctrl + l //清屏
ctrl + u //从光标所在行删除到行首
ctrl + a //光标移到命令行首
ctrl + e //光标移到命令行尾
ctrl + z //把命令放入后台
ctrl + r //在历史命令中搜索
tab //命令补全
su root vim /etc/passwd 把用户ID修改为 0 shiyufeng:x:0:1000:shiyufeng,,,:/home/shiyufeng:/bin/bash
《鸟哥的Linux私房菜》
体胖还需勤跑步,人丑就该多读书!