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目录下

 参考博客: linux cp命令的15个示例

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 //命令补全

 

22。Linux的文件权限与目录配置

23. linux中如何添加用户并赋予root权限详解 

su root

vim /etc/passwd

把用户ID修改为 0
shiyufeng:x:0:1000:shiyufeng,,,:/home/shiyufeng:/bin/bash

 

《鸟哥的Linux私房菜》

posted @ 2018-09-22 13:27  kaixinyufeng  阅读(719)  评论(0编辑  收藏  举报