常用shell命令

一、linux目录结构

目录结构部分引用自:https://www.runoob.com/linux/linux-system-contents.html

[root@VM_0_16_centos home]# ls /
bin(经常使用的命令)  boot(启动时的核心文件)  dev(Linux的外部设备)  etc(配置文件)  
home(用户主目录)  lib(共享库)  lib64()  lost+found()  media(光驱,U盘设备...)  
mnt  opt  proc(虚拟目录,内存映射)  root(管理员目录)  run  sbin(系统管理员使用的系统管理程序)  
srv  sys()  tmp(临时文件)  usr(类似于windows下的program files目录)  var

在这里插入图片描述
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
该目录存放一些服务启动之后需要提取的数据。

/sys:

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
这个目录是用来存放一些临时文件的。

/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:
内核源代码默认的放置目录。

/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

二、提示行符号

1.Linux运行页面有一个输入提示行,命令以一个美元符号"$"作为提示符,表示用户可以输入命令了如:

[root@VM_0_16_centos home]$ 

如果正在以root身份执行命令,那么shell提示符将变成"#"如:

[root@VM_0_16_centos home]#

三、常用命令

1.处理目录常用命令

  • ls: 列出目录
    -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
    -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

  • cd:切换目录

  • pwd:显示目前的目录
    -P :显示出确实的路径,而非使用连结 (link) 路径。

  • mkdir:创建一个新的目录
    -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

  • rmdir:删除一个空的目录
    -p :连同上一级『空的』目录也一起删除

  • cp: 复制文件或目录

  • touch : 创建一个空白文件

    [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
    [root@www ~]# cp [options] source1 source2 source3 .... directory
    

    选项与参数:

     	-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
     	
     	-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
     	
     	-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
     	
     	-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
     	
     	-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
     	
     	-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
     	
     	-r:递归持续复制,用於目录的复制行为;(常用)
     	
     	-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
     	
     	-u:若 destination 比 source 旧才升级 destination !
    
  • rm: 移除文件或目录

    rm [-fir] 文件或目录
    
     选项与参数
     -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
     -i :互动模式,在删除前会询问使用者是否动作
     -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
    
  • mv: 移动文件与目录,或修改文件与目录的名称
    语法:

    [root@www ~]# mv [-fiu] source destination
    [root@www ~]# mv [options] source1 source2 source3 .... directory
    

    选项与参数:

    -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

  • ln(link)

    语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)
    描述:创建软链接文件
    在这里插入图片描述
    软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。
    软链接就像windows系统中的快捷方式一样,特点也都类似。
    硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。
    在这里插入图片描述
    另外:硬链接不能跨文件系统分区,而软连接可以

2.文件内容查看常用命令

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
    -n 显示文件行号
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行
    tail -f 实时查看日志文件 tail -f 日志文件log
    tail - 100f 实时查看日志文件 后一百行
    tail -f -n 100 catalina.out linux查看日志后100行
  • 你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

3.文件查找常用命令

  • grep:查找文件内容

    grep [option] pattern [file…]
    在文件t.sh中查找包含do的行

    [root@VM_0_16_centos baidu]# grep do t.sh
    do
    done
    
  • find: 在指定范围内找到文件

    find [option] [path] [expression]
    find [搜索范围路径] -name 【文件名称】(根据文件名查找)
    在这里插入图片描述
    匹配任意字符 *
    在这里插入图片描述
    匹配指定字符 ?
    在这里插入图片描述
    find [搜索范围路径] -size [(±)文件大小] (根据文件大小查找,大于+ 小于-)
    find [搜索范围路径] -user(文件的所有者)
    find [时间查找] [以天为单位]
    [以天为单位] 1 ctime、atime、mtime
    [以分钟为单位] 2 cmin、amin、mmin
    。。。。。
    在这里插入图片描述
    描述:查找任何文件或目录(所有)
    例如:

    [root@VM_0_16_centos baidu]# find /usr/bin/ -name zip -print
    /usr/bin/zip
    

    命令:which
    语法:which [命令名称]
    描述:查看命令所在的目录位置
    在linux里面一般只有两种命令,第一种是所有用户都可以使用,第二种则是只允许管理员使用,还有一个命令叫whereis,和which使用类似
    比如: rm命令,其实我们可以使用 which rm查看其命令内容:
    在这里插入图片描述

alias就是别名的意思,说明我们使用的rm命令在默认的情况下加了 -i选项,意思是在删除的时候进行询问是否需要删除,那么添加""就使用真正的rm命令而不是别名,直接就可以删除不需要提示询问。
find的连接执行符号:
find … -exec [执行命令] {} ;
注意:“{}“表示find命令查找的结果,而”"表示转义符

命令:locate
语法:locate [文件名称]
描述:查找文件,根据linux数据库内部的索引(updatedb命令,可以手工更新updatedb数据库,一般和locate配合使用)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191120213204559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTU4NjMxMA==,size_16,color_FFFFFF,t_70)

注意:locate的查找速度非常快,比find查找快很多,原因是locate查找的是linux系统构建的文件数据库的索引值,所以速度非常快,但是有的时候新创建的文件使用locate命令查找不到,原因是这个文件的索引没有马上更新到linux系统文件数据库里

4压缩命令

命令:gzip
语法:gzip [文件名称]
描述:压缩的时候不保留原文件,并且只能压缩文件不能压缩目录

命令:gunzip
语法:gunzip [已压缩的文件]
描述:解压缩文件,不不保留源文件

命令:tar
语法:tar [zcvf] [zxvf] [打包文件名.tar.gz] [源文件]
-c 产生tar打包文件(必选)
-x 产生的解压缩文件(必选)
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
描述:打包目录 生成的后缀名 .tar.gz,或者进行解压
最后配置加-C 表示文件解压后存放的路径
file命令可以查看任何文件的类型

命令:zip
语法:zip 选项[-r] [压缩后文件名称] [源文件]
描述:zip的格式是windows和linux通用的格式,可以压缩文件和目录,压缩目录时需要选项-r。

命令:unzip
语法:unzip [解压缩的文件]
描述:进行解压缩
最后配置加-d 表示文件解压后存放的路径

5.其他命令

过滤:grep,可以将指定内容进行过滤然后输出。

管道:
将一个命令的输出传送给另一个命令,作为另外一个命令的输入。管道可以连接N个命令。
ls -l /etc | more (表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)
ls -l /etc | grep init(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)
ls -l /etc | grep init | wc -l (最后进行统计显示的个数)

四、通配符

shell有一套被称作通配符的符号"*","?","[ ]", “-” 这些通配符可以搜索并匹配文件的一部分,从而大大简化输入命令

  • “*”:用于匹配文件名中任意长度的字符串,"?"用于匹配文件名中任意的一个字符

    [root@VM_0_16_centos baidu]# ls
    shell  test.log  t.sh
    [root@VM_0_16_centos baidu]# ls *.log
    test.log
    
  • “[]”:用于匹配所有方括号中出现的字符

    root@VM_0_16_centos baidu]# ls t[ab]
    ta  tb
    
  • “-”:用于指定一个字符集的范围

    root@VM_0_16_centos baidu]# ls t[a-c]
    ta  tb  tc
    

五、文件权限

1.改变文件权限

命令:chmod
语法:chmod [{ugo}{±=}{rwx}] [文件或目录]
chmod [mode=421] [文件目录]
描述:改变文件或目录的权限
形如:chmod g+w filename
形如:chmod 761 filename

问题示例:新建一个新目录,下面一个新文件,尝试用普通用户去删除新目录下的新文件。
1 尝试修改:新文件的读写权限设置为 777,进行删除文件操作
2 尝试修改:新目录的读写权限设置为 777,进行删除文件操作

文件的rwx权限:
r:可以执行catch、more等读操作。
w:修改文件的内容等写操作,但是不代表你可以把这个文件删除。
x:对文件进行执行操作。
目录的rwx权限:
r:可读操作,可以列出目录的内容,比如ls命令。
w:表示可以在目录下创建或删除文件的权限。
x:表示可以进入这个目录(基本上所以的目录都会有rx权限)。
所以:删除文件的权限,是拥有你当前文件所在的目录的写权限。
在这里插入图片描述

2.改变文件所有权

命令:chown
语法:chown user 文件
描述:改变文件的所有者
示例:chown newuser t1.sh
useradd username 添加用户
passwd username 为用户设置密码

命令:chgrp
语法:chgrp group 文件
描述:改变文件的所属组
示例:chgrp adm t1.sh
查看系统默认的权限 :umask -S (umask查看权限掩码值022 使用777-022得到真实权限)
在这里插入图片描述

3.文件连接(软连接相当于win的快捷方式)(硬链接)

命令:ln(link)
语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)
描述:创建软链接文件
在这里插入图片描述
软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。
软链接就像windows系统中的快捷方式一样,特点也都类似。
硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。
另外:硬链接不能跨文件系统分区,而软连接可以。
在这里插入图片描述

六、输出重定向和管道

1.输出重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:
在这里插入图片描述
命令 说明
command > file 将输出重定向到 file。
command < file 将输入重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
n > file 将文件描述符为 n 的文件重定向到 file。
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m 将输出文件 m 和 n 合并。
n <& m 将输入文件 m 和 n 合并。
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

2.管道

过滤:grep,可以将指定内容进行过滤然后输出。
将一个命令的输出传送给另一个命令,作为另外一个命令的输入。管道可以连接N个命令。
ls -l /etc | more (表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)
ls -l /etc | grep init(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)
ls -l /etc | grep init | wc -l (最后进行统计显示的个数)

七、进程管理

1.查进程

ps命令查找与进程相关的PID号:
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
ps aux | grep program_filter_word,ps -ef |grep tomcat

ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。

2.杀进程

使用kill命令结束进程:kill xxx
常用:kill -9 324
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值