Linux常用语法

文章目录

  • 第一章 Linux概述
  • 第二章 Linux常用命令
    • 第一讲 进入某个路径
    • 第二讲 查看日志
        • VI(查看静态日志)
        • tail/watch(实时日志)
        • tail 搭配使用参数
      • 查看日志目标行
      • 导出日志
      • 查看当前路径下文件
      • 按文件名查找文件
      • 按文件内容查找文件
      • 合并文件内容
      • 反向显示
      • 进程相关
      • 修改系统时间
    • 文件操作
    • 查看文件
  • 查看文件大小du -h file# 查看文件内容cat file
  • 找到java进程ps -ef|grep java

第一章 Linux概述

  • 1.1 Linux安装步骤?
    Ie86
  • 1.2 什么是linux?
    Linux是一个开放源的操作系统,其支持多用户多任务等优秀特点。
  • 1.3 为什么要在安装linux系统之前安装vm?不安装vm可不可以直接安装linux?
    原因:防止系统间的冲突。
    不安装vm也可是直接安装linux,但是有时候会出现版本冲突。
  • 1.4 Linux核心是什么?
    核心GPL
  • 1.5 什么是VM?
    虚拟机,方便一台电脑安装多个操作系统
  • 1.6 Linux在公司中作用?
  1. 作为网络服务器(linux是一个比较稳定的系统)
  2. 关键任务的应用(金融 电信)
  3. 科研和学术机构(大型计算机)
  4. 公司的数据库、主服务器
  • 1.7 什么是contos、sentos 是什么?
    分别是LINUX 操作系统下的一个发型版本
  • 1.8 Linux的优点和缺点?
  • 优点:
  1. 开放性
  2. 完全免费
  3. 多用户
  4. 多任务
  5. 良好的用户界面
    6.设备独立性
  6. 提供了丰富的网络功能
  7. 可靠的系统安全性
    9.良好的可移植性
  • 缺点:
    1.界面简单(因为是dos界面)
    .

第二章 Linux常用命令

第一讲 进入某个路径

操                         作 命令 实例
进入某个路径 cd cd 路径
返回上一级目录 cd - cd -
返回主目录 cd ~ cd ~
显示当前所在路径 pwd pwd
从根目录进入到指定文件(路径) /目标文件(路径) /home
对电脑来说,有且只有一个根目录。所有的东西,所有的东西都是从这里开始。
当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录

第二讲 查看日志

VI(查看静态日志)

命令 释义 用法
vi 查看文本文件,包括日志文件。用VI查看的日志文件,但不会实时更新的日志 vi 文件名.扩展名

tail/watch(实时日志)

命令 释义 用法
tail 需要查看实时刷新的日志用此命令 tail -f 文件名.扩展名
watch 需要查看实时刷新的日志用此命令 watch -d -n 刷新间隔时长数 cat 文件名.扩展名

tail 搭配使用参数

命令 释义 用法
-f 循环读取
-q 不显示处理信息
-V 显示详细处理信息
-C 数字 显示的字节数
-n 数字 显示行数

查看日志目标行

linux 如何显示一个文件的某几行(中间几行)

从第3000行开始,显示1000行。即显示3000~3999行

cat 文件名 | tail -n +3000 | head -n 1000
cat 文件名 | head -n 3999 | tail -n +1000

显示1000行到3000行

cat 文件名 | head -n 3000 | tail -n +1000

注意:
起始行数的参数需要加“ + ”
上述两种需要注意参数的顺序:
从n行显示到M行,这时的nm指的是行数,那么结束行数在前(head),起始行数在后(tail);
从n行开始显示,显示之后的m行,n为行数编号,n+m=行数编号,那么结束行数在后(head),起始行数在前(tail);两者之间可以相互转换。

参数 释义
tail -n 1000 显示最后1000行
tail -n +1000 从1000行开始显示,显示1000行以后的
head -n 1000 显示前面1000行

导出日志

查看当前路径下文件

ls [参数]

参数 释义
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“…”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
–color=no 不显示彩色文件名
–help 在标准输出上显示帮助信息。
–version 在标准输出上输出版本信息并退出。

按文件名查找文件

find命令
基本格式:find  path expression

  1.按照文件名查找

   (1)find / -name httpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找
   (2)find /etc -name httpd.conf  #在/etc目录下文件httpd.conf
   (3)find /etc -name '*srm*'  #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
   (4)find . -name 'srm*'   #表示当前目录下查找文件名开头是字符串‘srm’的文件

   2.按照文件特征查找     

    (1)find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
    (2)find / -atime -2   # 查找在系统中最后48小时访问的文件
    (3)find / -empty   # 查找在系统中为空的文件或者文件夹
    (4)find / -group cat   # 查找在系统中属于 group为cat的文件
    (5)find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
    (6)find / -mtime -1   #查找在系统中最后24小时里修改过的文件
    (7)find / -user fred   #查找在系统中属于fred这个用户的文件
    (8)find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
    (9)find / -size -1000k   #查找出小于1000KB的文件

    3.使用混合查找方式查找文件

    参数有: !,-and(-a),-or(-o)。

    (1)find /tmp -size +10000c -and -mtime +2   #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
         (2)find / -user fred -or -user george   #在/目录下查找用户是fred或者george的文件文件
         (3)find /tmp ! -user panda  #在/tmp目录中查找所有不属于panda用户的文件

按文件内容查找文件

grep命令

     基本格式:find  expression

     1.主要参数

    [options]主要参数:
    -c:只输出匹配行的计数。
    -i:不区分大小写
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。

    pattern正则表达式主要参数:
    \: 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    \<:从匹配正则表达 式的行开始。
    \>:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    .:所有的单个字符。
    * :有字符,长度可以为0。

    2.实例  

  (1)grep 'test' d*  #显示所有以d开头的文件中包含 test的行
  (2)grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
  (3)grep ‘[a-z]\{5\}’ aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
  (4)grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
  (5)grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行

  (6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)

合并文件内容

cat功能:
1.一次显示整个文件:cat 文件名
2.创建一个新的文件:cat>文件名
3.将一个文件合并成一个文件:cat file1 file2 > file

参数 释义
-n 由 1 开始对所有输出的行数编号,对空白行也会进行编号
-b 和 -n 相似,只不过对于空白行不编号
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行

例子:

  1. 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
    cat -n textfile1 > textfile2
  2. 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
    cat -b textfile1 textfile2 >> textfile3
  3. 把test.txt文件扔进垃圾箱,赋空值test.txt
    cat /dev/null > /etc/test.txt
    注意:> 意思是创建,>> 是追加。

反向显示

tac file.txt

进程相关

1.显示目标进程
ps -ef | grep 目标字符串

参数 说明
ps 将某个进程显示出来
-a/-e 两个参数效果一致,即显示所有进程
-f 显示UID、PPIP、C与TIME栏
grep 查找字符串命令
| 管道命令,指ps指令与grep同时执行

2.关闭某个进程
kill -9 进程号

修改系统时间

date -s “YYYY-MM-DD hh:mm:ss”
date -s “2018-09-23 13:33:11”

/root|系统管理员的路径,可以对系统做任何事|
/bin|这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。|00
/ect|这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。|00

各个路径下存放的文说明

命令 释义 例子
ifconfig 查虚拟机的IP地址(ifconfig)
ping 查看联机状态()
. 表示当前目录
返回上一级 (cd …)
Touch 创建文件(touch 123.txt)
Mkdir 传建文件夹(mkdir 123)
Pwd 当前所处位置
Cd 进入
Su 切换用户 Su +用户名 密码:当用户为root用户时密码按了不显示
/ 根目录(cd /)
ls 展示所有目录
dir 查看目录(dir)
TAB 键作用: 补全,提示
cd/ 两次tab 进入所有文件,按Q直接进入原界面
ctrl+c 取消和中断
ctrl+d 退出
$ 表示普通用户
# 表示管理员权限(root权限)
Cp 复制(cp 文件.文件格式 文件相对地址)
Rmdir 删除文件
Rmdir -r 递归删除
Rmdir -f 强制删除
ls 查看目录下的文件或信息、
ls-a 查看所有的文件和文件夹
ls-al (ll)以详细信息查看文件和文件夹
Top 查看cpu
Ps -ef 进程
00 创建文件夹 1.创建单个 mkdir;2.创建多个mkdir xy1、xy2
MV 移动文件 Mv 1.txt 移动到的绝对地址
help: man或info 帮助
Mkdir 创建文件
touch 创建TXT文件 abc.txt创建文件;创建多个 文件 touch abc.txt bb.txt cd/
cp 复制
cp -r 文件夹 -t文件夹 将文件复制到文件夹、将文件夹复制到文件夹
ps -ef 回车可以查看 常用
ps -A 显示全部进程
kill 结束进程 通过pid 结束进程 kill -9 pid进程号(输入进程名)回车,例如:kill -9(绝杀)5422 回车 结束进程,释放了内存

如何查看CPU使用情况、流量、内存、响应时间、
内存、CPU、磁盘、流量

https://blog.csdn.net/weixin_41044523/article/details/79291274

文件操作

命令 操作 句式
mkdir 创建目录 make dir

cp 拷贝文件 copy
mv 移动文件 move
rm 删除文件 remove
创建目录和父目录a,b,c,d mkdir -p a/b/c/d
拷贝文件夹a到/tmp目录 cp -rvf a/ /tmp/
移动文件a到/tmp目录,并重命名为b mv -vf a /tmp/b
删除机器上的所有文件 rm -rvf /
定位
ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。
pwd 命令能够看到当前终端所在的目录。告诉你你在哪。
cd 假如你去错了地方,cd命令能够切换到对的目录。

查看文件

cat
最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。

查看文件大小du -h file# 查看文件内容cat file

less
既然cat有这个问题,针对比较大的文件,我们就可以使用less命令打开某个文件。
类似vim,less可以在输入/后进入查找模式,然后按n(N)向下(上)查找。
有许多操作,都和vim类似,你可以类比看下。

tail
大多数做服务端开发的同学,都了解这么命令。比如,查看nginx的滚动日志。

tail -f access.log
tail命令可以静态的查看某个文件的最后n行,与之对应的,head命令查看文件头n行。但head没有滚动功能,就像尾巴是往外长的,不会反着往里长。

tail -n100 access.loghead -n100 access.log
统计
sort和uniq经常配对使用。
sort可以使用-t指定分隔符,使用-k指定要排序的列。

下面这个命令输出nginx日志的ip和每个ip的pv,pv最高的前10

#2019-06-26T10:01:57+08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213awk -F"|" ‘{print $3}’ access.log | sort | uniq -c | sort -nk1 -r | head -n10
其他
grep
grep用来对内容进行过滤,带上–color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。
比如:查看nginx日志中的POST请求。

grep -rn --color POST access.log
推荐每次都使用这样的参数。

如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。
A after 内容后n行
B before 内容前n行
C count? 内容前后n行
就像是这样:

grep -rn --color Exception -A10 -B2 error.log
diff

diff命令用来比较两个文件是否的差异。当然,在ide中都提供了这个功能,diff只是命令行下的原始折衷。对了,diff和patch还是一些平台源码的打补丁方式,你要是不用,就pass吧。

压缩
为了减小传输文件的大小,一般都开启压缩。linux下常见的压缩文件有tar、bzip2、zip、rar等,7z这种用的相对较少。

.tar 使用tar命令压缩或解压
.bz2 使用bzip2命令操作
.gz 使用gzip命令操作
.zip 使用unzip命令解压
.rar 使用unrar命令解压

最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。

创建压缩文件

tar cvfz archive.tar.gz dir/
解压

tar xvfz. archive.tar.gz
快去弄清楚它们的关系吧。

日常运维
开机是按一下启动按钮,关机总不至于是长按启动按钮吧。对了,是shutdown命令,不过一般也没权限-.-!。passwd命令可以用来修改密码,这个权限还是可以有的。

mount
mount命令可以挂在一些外接设备,比如u盘,比如iso,比如刚申请的ssd。可以放心的看小电影了。

mount /dev/sdb1 /xiaodianying
chown
chown 用来改变文件的所属用户和所属组。
chmod 用来改变文件的访问权限。

这两个命令,都和linux的文件权限777有关。
示例:

# 毁灭性的命令chmod 000 -R /# 修改a目录的用户和组为 xjjchown -R xjj:xjj a# 给a.sh文件增加执行权限(这个太常用了)chmod a+x a.sh
yum
假定你用的是centos,则包管理工具就是yum。如果你的系统没有wget命令,就可以使用如下命令进行安装。

yum install wget -y
systemctl
当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。

service mysql restartsystemctl restart mysqld
对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。

su
su用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。

su xjjsu - xjj
-可以让你干净纯洁的降临另一个账号,不出意外,推荐。

uname
uname命令可以输出当前的内核信息,让你了解到用的是什么机器。

uname -a
ps
ps命令能够看到进程/线程状态。和top有些内容重叠,常用。

找到java进程ps -ef|grep java

top
系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。

top -H -p pid
free
top也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。

df
df命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。

df -h
ifconfig
查看ip地址,不啰嗦,替代品是ip addr命令。

ping
至于网络通不通,可以使用ping来探测。(不包括那些禁ping的网站)

netstat
虽然ss命令可以替代netstat了,但现实中netstat仍然用的更广泛一些。比如,查看当前的所有tcp连接。

netstat -ant
此命令,在找一些本地起了什么端口之类的问题上,作用很大。

工作常用
还有一些在工作中经常会用到的命令,它们的出现频率是非常高的 ,都是些熟面孔。

export
很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。

export PATH=$PATH:/home/xjj/jdk/bin
有时候,你想要知道所执行命令的具体路径。那么就可以使用whereis命令,我是假定了你装了多个版本的jdk。

crontab
这就是linux本地的job工具。不是分布式的,你要不是运维,就不要用了。比如,每10分钟提醒喝茶上厕所。

*/10 * * * * /home/xjj/wc10min
date
date命令用来输出当前的系统时间,可以使用-s参数指定输出格式。但设置时间涉及到设置硬件,所以有另外一个命令叫做hwclock。

xargs
xargs读取输入源,然后逐行处理。这个命令非常有用。举个栗子,删除目录中的所有class文件。

find . | grep .class$ | xargs rm -rvf#把所有的rmvb文件拷贝到目录ls *.rmvb | xargs -n1 -i cp {} /mount/xiaodianying
网络
linux是一个多作业的网络操作系统,所以网络命令有很多很多。工作中,最常和这些打交道。

ssh
这个,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要详细的输出过程,记得加参数-v。

scp
scp用来进行文件传输。也可以用来传输目录。也有更高级的sftp命令。

scp a.txt 192.168.0.12:/tmp/a.txtscp -r a_dir 192.168.0.12:/tmp/
wget
你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。

wget -c http://oracle.fuck/jdk2019.bin
mysql
mysql应用广泛,并不是每个人都有条件用上navicat的。你需要了解mysql的连接方式和基本的操作,在异常情况下才能游刃有余。

mysql -u root -p -h 192.168.1.2

你可能感兴趣的:(Linux常用语法)