Linux常用shell命令

2021/7/28 7:08:04

本文主要是介绍Linux常用shell命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、查看帮助信息

1.用man手册,linux提供的帮助文档
man ls
man cp
man mkdir

​ man /etc/profile # 可以查看文件的帮助信息

2.命令加上 --help参数,查看简短帮助信息
mkdir --help
rm --help

3、bash解释器内置命令的帮助

​ help -m cd

4、搜索引擎

​ linux cat

2、whoami

查看当前登录用户

3、which

查看二进制命令所在的目录

从PATH环境变量中查找

which cp
/usr/bin/cp

4、whereis

查看文件及文件的帮助等的路径

5、locate

通过内置updatedb数据库查找

yum install mlocate -y

6、hostname

查看主机名

7、ip add

查看本机ip

8、ip route

查看网关

9、ls

(list)

查看目录下的内容

ls -l /etc   查看文件的属性(use a long listing format)

ls -a /etc  显示所有文件,包含隐藏文件,以点开头的文件是隐藏文件

-d 查看目录本身
ls -lh  # -h参数(human),是显示文件单位,以kb  mb gb大小为单位   -l是列表形式,列出文件夹中详细信息

10、pwd

(print work directory)

打印当前工作目录

11、cd

(change dir)

切换目录

~   # 用户的家目录

.    # 当前目录

..  # 上一级目录
#   # root用户提示符
$   $ 普通用户提示符
*   匹配所有

cd -    # 切换到上一次的目录

12、touch

创建文件

重复创建不会覆盖,只会修改时间戳

13、mkdir

mkdir 感谢老铁的花花 

mkdir -p 斗鱼/lol    # 递归创建目录  -p
mkdir stu{1..1000}  # 创建stu0到stu999共1000个文件夹
mkdir m1 m2 m3      # 同时创建3个文件

14、tree

以树状图显示文件目录的层级结构

#确保你的机器可以上网 ,yum如同pip一样,自动的安装东西,解决依赖
# pip  是给python安装模块的工具
# yum  是给linux安装系统软件的工具
yum    install    tree     -y  # -y默认yes同意安装  

[root@s25linux tmp]# mkdir -p   a/b     c/d

[root@s25linux tmp]# tree
tree -L  1  目录  # 自定义显示几级菜单(level)
tree -d           # 只显示目录
-a    # all所有文件

15、echo

echo命令如同python的print一样,能够输出字符串到屏幕给用户看,打印的默认分隔符是空格

-n do not output the trailing newline

-e enable interpretation of backslash escapes

数列:{a..z} 从a到z的所有字母

[root@s25linux tmp]# echo  "感谢老铁送上的奥力给"
感谢老铁送上的奥力给

#linux在命令行的变量赋值,是临时生效的
#输出变量的值
#定义变量,中间有空格
name="感谢老铁送上的飞机"   
#输出变量的值 

[root@s25linux tmp]# echo   $name
感谢老铁送上的飞机

16、seq

print a sequence of numbers 打印数字序列

seq 起始值 步长 终止值 # 纵向打印的设置

17、cat

cat 瞄一眼 文件的内容
cat -n 文件名 #读取内容,且显示行号

cat 文件名  

[root@s25linux tmp]# cat  first.py
print ("你看这个灯,它又大又量")

#利用cat写入文件内容,写一首诗
[root@s25linux tmp]# cat >> second.py << EOF
> #!coding:utf-8
> print("爱的魔力转圈圈")
> EOF
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]#
[root@s25linux tmp]# cat second.py
#!coding:utf-8
print("爱的魔力转圈圈")

18、cp

拷贝

#对于配置文件的修改,或者是代码文件的修改,防止突然写错了,复制一份
#复制文件
[root@s25linux tmp]# cp  木兰诗.txt     新_木兰诗.txt

#复制文件夹,复制文件夹需要添加 -r 递归复制参数 -a 存档archive也可以复制文件夹,保持属性
[root@s25linux tmp]# cp  -r  avi   new_avi

-t  将源文件和目标目录的位置互换

19、mv

mv命令可以 移动文件 ,文件夹的路径

mv命令也能够进行 重命名即把文件移动到当前目录

1.重命名的功能
语法是
mv  旧文件名      新文件名  
[root@s25linux tmp]# mv  木兰诗.txt      new_木兰诗.txt

2.移动位置 
语法

mv  你要移动的文件或是文件夹       移动之后的目录名(如果文件夹存在,则移动,不存在是改名)

案例
mv   test.txt      b   #移动 test.txt文件  到 b文件夹下(b文件夹得存在)

20、rm

rm -f 强制删除

rm -r 递归删除目录

rm -rf 强制删除目录

21、alias(别名)

为什么rm命令默认会有一个让用户确认删除的动作呢?

alias  #直接输入可以查看当前系统的别名 

案例
1.给系统添加一个别名
alias start="python3  /home/mysite/manager.py runserver  0.0.0.0:8000"

用途一:
简化操作
用途二:
alias rm="don't use rm commond"
提示用户不要使用危险的命令

1、可使用转义符在不删除别名的情况下不使用别名
\rm a.txt
2、或使用命令的全路径绕过别名
\bin\rm  a.txt

22、unalias (取消别名)

unalias mv

设置和取消别名都是临时生效,重启后恢复

23、find

可以用于搜索机器上所有的资料,按照文件名搜索

语法
find   你要从哪找    -type 你要的文件类型是什么 -size  你要的文件内容多大  -name  你要的内容名字是什么

-type  d  是找 文件夹 类型 

-name  是指定文件的名字内容 



#在系统上 全局搜索,所有的.txt文件

find  /    -name  "*.txt"

#指定在etc目录下,进行局部搜索,一个网卡配置文件,网卡名字是以ifcfg开头的 ,文本类型文件
find   /etc   -type  f   -name   "ifcfg*"



-size					+1M
							-1M
-type c                                                             
              File is of type c:                                           
                                                                           
              b      block (buffered) special                              
                                                                           
              c      character (unbuffered) special                        
                                                                           
              d      directory                                             
                                                                           
              p      named pipe (FIFO)                                     
                                                                           
              f      regular file                                          
                                                                           
              l      symbolic link; this is never true if the  -L  option  
                     or  the -follow option is in effect, unless the sym‐  
                     bolic link is broken.  If you  want  to  search  for  
                     symbolic links when -L is in effect, use -xtype.      
                                                                           
              s      socket                                                
                                                                           
              D      door (Solaris)      
        

组合搜索:默认取交集(-a)and,取并集(-o)or ,取反!

-mtime 按时间

-mtime +7   7天前的
-mtime 7 		第7天的
-mtime -7   最近7天的

模拟每天创建一个文件,连续30天
mkdir /data -p
for n in {01..30};do date -s "2030/05/0$n";touch /data/file$n;done

find . -mtime -7  查找最近7天创建的文件

-perm 按权限

-user 按用户

-exec 执行动作

-perm 按权限
	[root@oldboy data]# mkdir oldboydir
	[root@oldboy data]# find /data -perm 755
	/data
	/data/oldboydir
-user 按用户
	[root@oldboy data]# chown oldboy oldboydir
	[root@oldboy data]# find /data -user oldboy
	/data/oldboydir

综合应用

-i 可以让后面的{}接收搜索到的内容。
find . -name "*.txt" | xargs cp -t /tmp/a 
find . -name "*.txt" | xargs -i cp {} /tmp/a
find /data -name "file*" -mtime -7|xargs -i rm -f {} #完整写法

24、重定向

>    标准输出重定向  ,如同 python的 with open 中的  w模式 相当于1>
>>	 标准输出追加重定向  ,如同 a模式 ,相当于1>
2>   2>>  错误输出重定向,将输出错误的结果
&>   &>> 或>>c.txt 2>&1 正确的和错误的都输出
/dev/null  黑洞,放入的文件
/dev/zero  零设备,不断产生东西

[root@mawei ~]# cha >a.txt 2>b.txt                                         
[root@mawei ~]# cat b.txt 
bash: cha: command not found...

<  或 0<  #重定向写入覆盖符,用在数据导入等操作中,mysql数据导入 
<< 或 0<< #用在cat命令中

# 批量插入多行文本
cat >/oldboy.txt<<EOF
10.0.0.7
10.0.0.8
10.0.0.9
EOF

25、xargs

build and execute command lines from standard input

-n 指定将多少项作为命令行参数

xargs -n 3 <a.txt      a.txt中的内容每三个一行显示

-i [replace-str]
  This  option  is a synonym for -Ireplace-str if replace-str
  is specified.  If the replace-str argument is missing,  the
  effect is the same as -I{}.  This option is deprecated; use
  -I instead.
-n max-args                             
   Use  at  most  max-args  arguments per command line.  Fewer  
   than max-args arguments will be used if the size  (see  the  
   -s  option)  is exceeded, unless the -x option is given, in  
   which case xargs will exit.       

26、管道符

| 过滤

1.例如过滤服务器上的进程信息

2.例如过滤服务器上的端口状态信息

27、grep(正则)

grep从文本中过滤有用信息的命令

grep "mysql" /etc/services # 字符串加双引号

-v 参数是 翻转过滤结果
[root@linux tmp]# grep -v "^$" test.txt 找出 空白行以外的内容

-i 忽略大小写
grep -i "al" test.txt

-n 参数显示行号
grep -n "大" test.txt

例如:

find / "*.txt" | grep mysql

28、head、tail

head /etc/passwd #默认看前10行

​ head -3 /etc/passwd #查看文件的前3行

tail 文件名 #默认从文件的后10行看

​ tail -2 /etc/passwd #查看文件的后2行

tail命令的实时监控
  可以用于检测线上的日志文件,检测用户的请求信息

​ tail -f 文件名 #实时刷新文件内容

​ tail -f /tmp/test.txt #能够检测文件内容的变化

29、scp

(secure copy)

在2台linux机器(macos)之间,通过网络安全的传输文件,文件夹

环境准备,准备2台linux机器

确保两台机器能够通信

机器1:192.168.178.134

机器2:192.168.178.235

案例1:
我登录的是 机器1

需求1:将机器1的/tmp/好嗨哦.txt  发送到 机器2的/tmp目录下 
[root@linux tmp]# scp  /tmp/好嗨哦.txt root@192.168.178.235:/tmp/

需求2:把机器2的/tmp目录下的资料 给拿到本地的/opt目录下
scp  你想要的内容   内容发送到哪里 
scp  root@192.168.178.235:/tmp/小样别偷看.txt     /opt/

情况2,我登录的是 机器2

【把别人的资料拿来】
案例1:我想拿到机器1的/opt/test.txt  拿到机器2的/tmp目录下
scp  我想要的内容    内容存放的地点

scp  root@192.168.178.134:/opt/test.txt      /tmp/

【把自己的资料发给别人】
案例2:我想把本地的/home/fisrst.py  发送给机器1的/home目录下
scp   /home/first.py    账号@机器1:/home/
scp /home/first.py   root@192.168.178.134:/home/  

#如果发送的是整个文件夹,就得加上 -r  递归的拷贝参数
[root@linux tmp]# scp  -r  ./lol    root@192.168.178.235:/tmp/

#用通配符发送多个文件
[root@linux tmp]# scp -r  ./*  root@192.168.178.235:/tmp/134bak/

30、lrzsz工具

用于windows(基于xshell工具)和linux之间互相传递文件

1.安装此工具
yum install  lrzsz -y  

2.安装好lrzsz之后,就存在了2个命令   一个是 rz  一个是sz
rz  #直接输入rz命令,能够蹦出一个弹窗,接收windows的资料

sz  文件  #发送linux的一个文件,发给 windows某个位置,也是出现一个弹窗

31、date

时间

[root@centos ~]# date -s "2100/07/26 23:00:01"
2100年 07月 26日 星期一 23:00:01 CST

[root@centos ~]# date +%F
2100-07-26
[root@centos ~]# date +%Y
2100
[root@centos ~]# date +%m
07
[root@centos ~]# date +%d
26
[root@centos ~]# date +%w
1
[root@centos ~]# date +%H
23
[root@centos ~]# date +%M
01
[root@centos ~]# date +%S
30
[root@centos ~]# date +%Y-%m-%d\ %H:%m:%S
2100-07-26 23:07:49


过去和未来
[root@oldboy ~]# date +%F -d '-3day'
2100-07-23

[root@oldboy ~]# date +%F -d '+3day'
2100-07-29

[root@oldboy ~]# date +%F -d '-100year'
2000-07-26

[root@oldboy ~]# date +%F -d '+100year'
2200-07-26

服务器时间和互联网时间同步:
ntpdata ntp2.aliyun.com

32、du

(disk usage)

用法
du 【参数】【文件或目录】
-s (summarize) 显示总计
-h (human) 以k,M,G为单位显示,可读性强

案例

统计/var/log/文件夹大小 
du -sh  /var/log/  

#显示当前目录下 所有文件的大小
[root@linux tmp]# du  -h ./*

33、top

能够显示 动态的进程信息,cpu、内存,网络,磁盘io等使用情况

linux的资源管理器 就是top命令

第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载

第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数

第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比

第四行:内存信息(与第五行的信息类似与free命令)
total:物理内存总量
used:已使用的内存总量
free:空闲的内存总量(free+used=total)
buffers:用作内核缓存的内存量

第五行:swap信息
total:交换分区总量
used:已使用的交换分区总量
free:空闲交换区总量
cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

34、ps

process status

用于查看linux进程信息的命令

语法就是 
ps  -ef    # -ef,是一个组合参数,-e  -f 的缩写,默认显示linux所有的进程信息,以及pid,时间,进程名等信息 

#过滤系统有关vim的进程 
[root@linux ~]# ps -ef |  grep  "vim"
root      24277   7379  0 16:09 pts/1    00:00:00 vim ps是怎么用的.txt

35、kill

杀死进程的命令

kill   进程的id号

如果遇见卡死的进程,杀不掉,就发送 -9  强制的信号 

kill -9  pid

36、netstat

查看linux的网络端口情况

语法如下
常用的参数组合  -t -n -u -l -p    

[root@linux tmp]# netstat -tunlp   #显示机器所有的tcp、udp的所有端口连接情况

#例如验证服务器80端口是否存在
netstat  -tunlp  |  grep  80

#过滤3306端口是否存在 
netstat -tunlp |grep 3306

#过滤ssh服务是否正常
[root@linux tmp]# netstat -tunlp  |   grep   ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1147/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1147/sshd

#有些公司为了保护服务器安全,更改了默认的远程连接端口
# ssh端口 26674    ip 是  123.206.16.61   账号是 xiaohu   密码是 xiaohu666

#我怎么登陆服务器呢?用如下的命令去连接服务器 
ssh  -p  26674    xiaohu@123.206.16.61  

37、history

查看历史记录

history 默认显示1000条

history -d 77 删除第77行的历史记录(删除敏感记录)

history -c 记录全部清除

38、more,less

浏览文件内容,分页显示。

回车,一行一行滚动

空格,一页一页滚动

/mysql,向下搜索含有mysql 字符串的内容,按n连续向下搜索,按N向上搜索

?mysql ,向上搜索,按n连续向上搜索,按N向下搜索

39、修改PS1变量控制提示符的样式

echo "PS1='[\e[32;1m][\u@[\e[0m][\e[33;1m]\h \W]\$ [\e[0m]'" >>/etc/profile
source /etc/profile



这篇关于Linux常用shell命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程