linux常用命令

324 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Linux命令下常用的快捷键:

TAB :命令补全

Ctrl+ C :杀死当前进程

Ctrl + A:光标移动到命令行首

Ctrl + E:光标移动到行尾

Ctrl + R: 查找历史执行的命令,回车后即执行所查找到的命令

以单词为单位移动光标:

快捷键:Ctrl + →

快捷键:Ctrl + ←

tail命令:

tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

  1. tail [filename]

tail 默认查看文件末尾10行,相当于:tail –n 10 [filename]

  1. tail –f [filename]

实时查看日志信息

  1. tail -c 10 [filename]

显示文件的最后 10 个字符

  1. tail -n 50 [filename]

显示文件的最后 50 行数据

head命令: 指定显示头部内容的文件列表

-n<数字>:指定显示头部内容的行数;

-c<字符数>:指定显示头部内容的字符数;

-v:总是显示文件名的头信息;

  1. head -n -v 20 [filename]

grep命令:

(-i 或 --ignore-case : 忽略字符大小写的差别。)

grep命令用于查找文件里符合条件的字符串。

  1. grep "字符串" [filename]

查找文件名为filename的文件中包含字符串的数据

  1. grep -c "字符串" [filename]

统计文件名为filename的文件中包含字符串的行数

  1. grep “字符串”[filename] | head -10

只取前面10行匹配的结果

  1. grep -w "单词" [filename] eg: grep -w cpu test.sh

匹配单词

  1. grep \t字符串'\t'字符串'\t' [filename] eg:grep \t2'\t'2'\t' file.log

grep匹配tab符:$'\t'

有用命令:

grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行

grep -B 5 foo file 显示foo及前5行

grep -A 5 foo file 显示foo及后5行

ls | grep a.log

ll | grep a.log

grep设置查找颜色高亮( grep --color=auto ‘size’ a.txt)

问题:grep命令执行后匹配的结果不能高亮显示 解决方法:

vim ~/.bashrc //在文件里# User specific aliases and functions这部分下面添加如下语句 alias grep='grep --color=auto' 1 2 3 4 5

source ~/.bashrc 1

curl命令:

curl www.baidu.com

curl [url] –X -POST –d ‘data=********&a=dd’

curl url -X POST

eg: curl http://localhost:8081/git/demo/tableRestService/queryTree -X POST

cat命令:

cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的

  1. cat [filename]

显示整个文件

  1. cat -n [filename]

显示文件内容并对行号编号 (-b 对空白行不编号; -s 当遇到有连续两行以上的空白行,就代换为一行的空白行)

  1. cat > filename

从键盘创建一个文件, 只能创建新文件,不能编辑已有文件.

  1. cat file1 file2 > file

将几个文件合并为一个文件

有用命令:

1、cat a.txt 打印a文件所有内容 2、tail -n 1000 a.txt 打印a文件最后1000行的数据 3、tail -n +1000 a.txt 打印a文件第1000行开始以后的内容

4、head -n 1000 a.txt 打印a文件前1000的内容

wc命令:

文本统计工具,全城word count。使用方法很简单。能将文件的行数、字数、字节数打印出来。

1、wc -l test.txt

   统计test.txt中文本的行数。

2、wc -c test.txt

   统计字节数   

3、wc -w test.txt

  统计字数,我所理解的字就是一个单词,单词都是又空格、tab键、换行符来分割的。

4、wc -m test.txt

   统计字符数。这和字节数是有区别的,因为一个中文字符会占3个字节。

find命令:

用来查找特定文件,在linux下一切皆是文件,因此十分有用。

基本格式:find path expression [-exec command {};] 会默认遍历到子目录。

1、find /home/work/ -name "*.cpp"

查找/home/work/目录下,所有文件名以.cpp结尾的文件,当然目录也会匹配出来。

2、find /home/work/ -name -type f "*.cpp"

查找/home/work/目录下,所有文件名以.cpp结尾的普通文件。

3、find /home/work/ -iname "*.cpp"

-iname 表示忽略大小写,-name表示不忽略大小写,精确匹配。

4、find /home/work/ /etc/ /usr -name "*.cpp"

查找多个目录下的.cpp文件

扩展 : find /home/work/ /etc/ /usr -name "[ab].cpp" 查找a.cpp或者b.cpp文件

         find /home/work/   /etc/  /usr  -name  "?.cpp"       "?"表示任意一个字符

5、 find /home/work/ -size+20M

查找大于20M的文件,-20M表示小于20M

6、find /home/work -atime -5

查找5天内访问过的文件, +5 表示5天内没有访问过的文件。

扩展:用stat命令可以获得相关的时间戳。atime表示最近一次访问的时间,mtime表示最近一次内容修改的时间,ctime表示最近一次属性修改的时间,单位是天。amin, mmin,cmin单位是分钟。

7、find /home/work -atime -5 -a -size -1M

查找5天访问过的并且大小小于1M的文件。

-a 与连接 , -o 或连接, -not 条件取反

echo命令:

echo打印换行方法:

echo要支持同C语言一样的\转义功能,只需要加上参数-e,如下所示:

echo -e "text1\ntext2"

输出结果

text1

text2

vim界面下命令:

  1. 设置行号

在命令模式下,输入set number

:set number

按下回车就显示行号

  1. 关闭行号

在命令模式下,输入set nonumber

:set nonumber

按下回车行号就没行号

alias命令: 取别名

用法:

alias cd=’cd f://’

查看所有alias:直接输入alias回车

取消别名:unalias cd

alias的设置改为永久有效:

在~/.bash_profile添加

vim ~/.bash_profile,最后source ~/.bash_profile即可

scp命令:

远程复制命令

可将远程服务器文件复制到本地路径,或将本地文件复制到远程服务器路径。

  1. 远端拷贝到本地

scp 远端用户名@远端ip : 路径文件 本地路径

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 scp -r www.runoob.com:/home/root/o… /home/space/music/ scp test.200:/home/jar/srv_tomcat/test/webapps/test/WEB-INF/classes/org/jar/controller/TestController.class /cygdrive/f/test/

scp -r test.200:/home/jar/srv_tomcat/test/webapps/test /cygdrive/f/test/

报错:本地路径不存在

      1. 本地路径不对,或者是没有创建f盘下的test目录

      2. 所在位置不对,使用这个命令时,不用在远端操作,即,不用ssh test.200命令进入远端

2. 本地拷贝到远程

  • scp local_file remote_username@remote_ip:remote_folder 或者
  • scp local_file remote_username@remote_ip:remote_file 或者
  • scp local_file remote_ip:remote_folder 或者
  • scp local_file remote_ip:remote_file
  • scp -r /cygdrive/f/dinner_server/test test.200:/home/jar/srv_tomcat/test/webapps/

(-r 命令即:递归拷贝)

awk常用命令:

  1. 每行按空格或TAB分割,输出文本中的1、4项

awk '{print 1,1,4}' log.txt

  1. 使用","分割

awk -F , '{print1,1,2}' log.txt

CP命令: -r :递归持续复制,用于目录的复制行为

history命令:

history命令:用于显示历史记录和执行过的指令命令。

history命令读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。

history命令:是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量 HISTSIZE进行控制。默认是不显示命令的执行时间,命令的执行时间,history 已经记录,只是没有显示。

防火墙有关命令:

防火墙iptables和firewalld

centos7 Failed to start iptables.service: Unit not found 防火墙:在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理

(来着:centos7 Failed to start iptables.service: Unit not found 防火墙 - 小猪哥哥 - 博客园)

添加:

#开放80端口,即让防火墙不拦截,让外面可访问 firewall-cmd --zone=public --add-port=80/tcp --permanent

(--permanent永久生效,没有此参数重启后失效)

firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent 重新载入:

firewall-cmd --reload 查看:

#查看8080端口是否开放 firewall-cmd --query-port=8080/tcp

#返回yes表示开放了8080端口,外面可以访问8080 #返回no表示8080没开放,无法访问到 删除:

firewall-cmd --remove-port=80/tcp --permanent 开启防火墙:

systemctl start firewalld.service 关闭防火墙:

systemctl stop firewalld.service 查看所有端口:

#查询所有开放的端口。

[root@vm-1 opt]# firewall-cmd --list-ports 5432/tcp 3306/tcp

#查询所有开放的端口。持久

[root@vm-1 opt]# firewall-cmd --list-ports --permanent 5432/tcp 3306/tcp

查看运行状态:

firewall-cmd --state //running 表示运行

linux 环境变量设置: /etc/profile 与 ~/.bash_profile 文件是配置环境变量文件

区别:

/etc/profile 是系统整体设置 ,对系统内所有用户有效 ~/.bash_profile 只对当前登录用户的设置,只对该用户有效

环境变量的查看:(可查看环境变量是否生效)

  1. 查看单个环境变量,使用echo命令:

echo $PATH 2. 查看所有环境变量, 使用env命令:

env

压缩和解压:

压缩成zip包:

将dist目录压缩成dist.zip : zip -r dist.zip dist

压缩成tar包、tar.gz包:

tar cvf /dir/file.tar /dir/file #仅打包,不压缩 tar zcvf /dir/file.tar.gz /dir/file #打包后,以gzip压缩

解压:

tar xvf backup.tar tar zxvf /dir/file.tar.gz

卷挂载:

挂载卷命令

  1. 查看可挂载的磁盘: lsblk

  2. 初始化磁盘: sudo mkfs -t ext4 /dev/vdb

3.挂载卷:sudo mount /dev/vdb /u01

注意:/u01文件夹必须是空的,不然挂载上去之前u01里面的东西就无法显示,所以一般mount时都是新建一个文件夹,总之就是要保证它为空

yum命令: yum也是包管理,也是管理rpm包的,

与rpm 区别: rpm只能对已有的包进行安装,yum可以从服务器上拉rpm包进行安装

安装unzip软件: yum install -y unzip

-y(当安装过程提示选择全部为 "yes")

移除包: yum remove pam-devel

修改yum源:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://ip/CentOS7.repo

yum clean all

yum makecache

其他:

查看端口占用情况: lsof -i:5432 或者 netstat -an|grep 5432

查看磁盘空间: df -kh

查看当前目录下各文件大小:du -ah --max-depth=1

du -sh ./*

查看某个端口是否打开: telnet 127.0.0.1 8080

查看端口监听情况:

netstat -anutp

[root@vm-1 db_1]# netstat -anutp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1111/mysqld        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3234/sshd: /usr/sbi 
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      29756/postgres      

linux 释放内存空间:Linux释放内存空间 - 小得盈满 - 博客园

0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理

  1:释放页缓存

  2:释放dentries和inodes

  3:释放所有缓存

echo 3 > /proc/sys/vm/drop_caches