linux之shell命令

shell基础命令

浏览Linux 文件系统

Linux 系统目录结构
  • /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

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

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

  • /etc: etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

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

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

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

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

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

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

  • /proc: proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root: 该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin: s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

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

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

  • /sys

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

    sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

    该文件系统是内核设备树的一个直观反映。

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

  • /tmp: tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

  • /usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

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

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

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

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

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

列出文件和目录

显示基本列表
#遍历目录
ls / 
#显示吟唱文件
ls -a
#递归显示:列出当前目录所包含的子目录的文件
ls -r
​
显示长列表
ls -l
过滤输出列表

?代表任意单个字符

*代表零个或多个字符

!表示将不需要的排除再外

ls -l h?me
ls -l h*
ls -l h[!o]me

处理文件

创建文件
touch testone
复制文件
cp testone testtwo  #如果目标文件存在相同文件将强制覆盖
cp -i testone testtwo  #如果目标文件存在,则询问是否覆盖
使用命令补全

按制表键 teb可以补全文件名,单需要提供足够的文件名信息

链接文件

符号链接(软连接):是一个实实在在的文件指向另一个地方的 另一个文件,以符号连接在一起的文件其内容并不相同。

创建一个软链接,其原文件必须事先存在

in -s test_file shink_test_file

硬链接:创建的是一个独立的虚拟文件,其中包含了原始文件的信息及位置。但两者根本就是同一个文件。

创建一个硬链接,其原文件必须事先存在。

in test_one hlink_test_one
文件重命名(移动文件)mv

mv命令不会修改文件的innode编号和时间戳

mv fall fazll  #修改文件名字,由fall修改为fazll,
mv  /home/fall  /home/tep #移动文件fall到tep目录下
删除文件(移除)rm
rm -i fall   #删除文件并进行询问,不加-i就不询问,linux无回收站删除后无法找回

管理目录

创建目录 mkdir
mkdir new_dir
mkdir -p /home/tep/test/new_dir   #-p可以根据根据需要创建目录和子目录
删除目录 rmkdir
rmkdir new_dir    #rmkdir只能删除空目录,如果其下有内容无法进行删除
rmkdir -r  new_dir #删除 new_dir目录下的子文件并挨个询问
rmkdir -rf  new_dir  #直接删除指定目录及其所有内容
查看文件类型 file
file myfile
查看整个文件
cat

cat缺点;开始运行后无法控制后续操作

cat test_file
cat -n test_file  #给所有行加上行号
more
more /home/test_file

more分页查看文件内容,使用空格向前翻页,使用回车逐行查看,按q键退出。

查看部分文件
tail (显示结尾)
tail log_file #默认显示文件最后10行内容
tail -n 20 log_file  #-n修改显示行数   查看最后20行内容
tail -f 20 log_file  #-f,保持活动状态,并持续的显示添加到文件中的内容。
head(显示开头)
head logfile
head -n 20 logfile  #-n修改显示行数   查看前20行内容

监测系统及磁盘

监测程序

探测进程
ps

语法

ps [options] [--help]

参数

  • ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

  • -A 列出所有的进程

  • -w 显示加宽可以显示较多的资讯

  • -au 显示较详细的资讯

  • -aux 显示所有包含其他使用者的进程

  • au(x) 输出格式 :

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    • USER: 行程拥有者

    • PID: pid

    • %CPU: 占用的 CPU 使用率

    • %MEM: 占用的记忆体使用率

    • VSZ: 占用的虚拟记忆体大小

    • RSS: 占用的记忆体大小

    • TTY: 终端的次要装置号码 (minor device number of tty)

    • STAT: 该行程的状态:

      • D: 无法中断的休眠状态 (通常 IO 的进程)

      • R: 正在执行中

      • S: 静止状态

      • T: 暂停执行

      • Z: 不存在但暂时无法消除

      • W: 没有足够的记忆体分页可分配

      • <: 高优先序的行程

      • N: 低优先序的行程

      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)

    • START: 行程开始时间

    • TIME: 执行的时间

    • COMMAND:所执行的指令

查找指定进程格式:

ps -ef | grep 进程关键字

例如显示 php 的进程:

# ps -ef | grep php
root       794     1  0  2020 ?        00:00:52 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data   951   794  0  2020 ?        00:24:15 php-fpm: pool www
www-data   953   794  0  2020 ?        00:24:14 php-fpm: pool www
www-data   954   794  0  2020 ?        00:24:29 php-fpm: pool www
top

语法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数说明

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s

  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行

  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称

  • S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来

  • s : 安全模式,将交谈式指令取消, 避免潜在的危机

  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程

  • n : 更新的次数,完成后将会退出 top

  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

实例

显示进程信息

# top

显示完整命令

# top -c
结束进程
kill
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数说明

  • -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。

  • -s <信息名称或编号>  指定要送出的信息。

  • [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

使用 kill -l 命令列出所有可用信号。

最常用的信号是:

  • 1 (HUP):重新加载进程。

  • 9 (KILL):杀死一个进程。

  • 15 (TERM):正常停止一个进程。

实例

杀死进程

# kill 12345
pkill

Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。

kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。

语法

  pkill [选项]  name

参数说明

  • name : 进程名

选项包含如下几个参数:

  • -o 仅向找到的最小(起始)进程号发送信号 -n 仅向找到的最大(结束)进程号发送信号

  • -P 指定父进程号发送信号

  • -g 指定进程组

  • -t 指定开启进程的终端

实例

# pkill -9  php-fpm          //结束所有的 php-fpm 进程

监测空间

Linux 磁盘管理常用三个命令为 dfdufdisk

  • df(英文全称:disk free):列出文件系统的整体磁盘使用量

  • du(英文全称:disk used):检查磁盘空间使用量

  • fdisk:用于磁盘分区

df(文件目录)

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法:

df [-ahikHTm] [目录或文件名]

选项与参数:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;

  • -k :以 KBytes 的容量显示各文件系统;

  • -m :以 MBytes 的容量显示各文件系统;

  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

  • -H :以 M=1000K 取代 M=1024K 的进位方式;

  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;

  • -i :不用硬盘容量,而以 inode 的数量来显示

du(空间)

Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍 Linux du 命令。

语法:

du [-ahskm] 文件或目录名称

选项与参数:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

  • -h :以人们较易读的容量格式 (G/M) 显示;

  • -s :列出总量而已,而不列出每个各别的目录占用容量;

  • -S :不包括子目录下的总计,与 -s 有点差别。

  • -k :以 KBytes 列出容量显示;

  • -m :以 MBytes 列出容量显示;

fdisk

fdisk 是 Linux 的磁盘分区表操作工具。

语法:

fdisk [-l] 装置名称

选项与参数:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

处理数据文件

数据排序 sort

Linux sort 命令用于将文本文件内容加以排序。

sort 可针对文本文件的内容,以行为单位来排序。

语法

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]

参数说明

  • -b 忽略每行前面开始出的空格字符。

  • -c 检查文件是否已经按照顺序排序。

  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

  • -f 排序时,将小写字母视为大写字母。

  • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

  • -m 将几个排序好的文件进行合并。

  • -M 将前面3个字母依照月份的缩写进行排序。

  • -n 依照数值的大小排序。

  • -u 意味着是唯一的(unique),输出的结果是去完重了的。

  • -o<输出文件> 将排序后的结果存入指定的文件。

  • -r 以相反的顺序来排序。

  • -t<分隔字符> 指定排序时所用的栏位分隔字符。

  • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

  • --help 显示帮助。

  • --version 显示版本信息。

  • [-k field1[,field2]] 按指定的列进行排序。

数据搜索 grep

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

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数

  • -a 或 --text : 不要忽略二进制的数据。

  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

  • -c 或 --count : 计算符合样式的列数。

  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。

  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。

  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。

  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

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

  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

  • -o 或 --only-matching : 只显示匹配PATTERN 部分。

  • -q 或 --quiet或--silent : 不显示任何信息。

  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

  • -s 或 --no-messages : 不显示错误信息。

  • -v 或 --invert-match : 显示不包含匹配文本的所有行。

  • -V 或 --version : 显示版本信息。

  • -w 或 --word-regexp : 只显示全字符合的列。

  • -x --line-regexp : 只显示全列符合的列。

  • -y : 此参数的效果和指定"-i"参数相同。

实例

1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

grep test *file 
数据压缩 gzip gzcat gunzip

gzip:压缩文件

gzcat:查看文件

gunzip:用于解压文件

数据归档 tar

tar 命令的选项有很多(用 man tar 可以查看到),但常用的就那么几个选项,下面来举例说明一下:

# tar -cf all.tar *.jpg

这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。

# tar -rf all.tar *.gif

这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去,-r 是表示增加文件的意思。

# tar -uf all.tar logo.gif

这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

# tar -tf all.tar

这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

# tar -xf all.tar

这条命令是解出 all.tar 包中所有文件,-x 是解开的意思。

忘记密码解决方法

1、重启系统,3s内按下回车按钮,然后输入e

2、第二行后面输入 single,有一个空格。具体方法为按向下尖头移动到第二行,按"e"进入编辑模式

img

在后边加上single 回车

3、最后按"b"启动,启动后就进入了单用户模式了

4、进入到单用户模式了,你可以更改root密码了。更密码的命令为 passwd

文件基本属性

通常使用以下两个命令来修改文件或目录的所属用户与权限:

  • chown (change owner) : 修改所属用户与组。

  • chmod (change mode) : 修改用户的权限。

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录

  • 当为 - 则是文件;

  • 若是 l 则表示为链接文档(link file);

  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);

  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值