Linux常用的shell命令

shell

  linux命令行就是由shell提供的,shell其实是所有命令行程序的统称,而CentOS系统中默认使用的shell程序就是bash,他是linux系统中运行的一种特殊程序,其文件位于/bin/bash,用户在登录linux系统时,系统就会自动加载一个shell程序,在用户和内核之间充当“翻译官”。

  这里要跟shell脚本(shell script)区分开,shell脚本是一种未shell编写的脚本程序,业界所说的shell通常都是指shell脚本。

1 文件管理

1.1 ls命令(显示指定工作目录下的内容及属性信息)

ls命令是linux下最常用的指令之一,ls为list的缩写,默认状态下ls命令会列出当前目录的内容;

语法:ls [选项] [文件]

常用参数:

示例:

1. 列出所有文件(包括隐藏文件):ls -a

2. 列出文件的详细信息:ls -l 或 ll

3. 列出根目录(/)下的所有目录:ls /

4. 列出当前工作目录下所有名称是“s”开头的文件:ls -ltr s*

5. 列出/bin目录下的所有目录及文件的详细信息:ls -lR /bin

6. 列出当前工作目录下所有文件及目录以文件的大小进行排序:ls -AS

 

1.2 cp命令(复制文件或目录)

cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。

语法格式:cp [参数] [文件]

常用参数:

示例:

1. 复制目录:cp -R dir1 dir2/

2. 将文件test1改名为test2:cp -f test1 test2

3. 复制多个文件:cp -r file1 file2 file3 dir

4. 交互式地将目录/usr/linuxcool中的所有.c文件复制到目录dir中:cp -r /usr/linuxcool/*.c dir 

5. 复制test目录下的file.txt文件到目录下:cp /tmp/test/file.txt /tmp/test1 

6. 移动test目录下的file.txt文件到test1目录下:mv test/file.txt test1 

 

1.3 mkdir命令(创建目录)

语法:mkdir [参数] [目录]

参数:

示例:

1. 在工作目录下,建立一个名为dir的子目录:mkdir dir 

2. 在目录/usr/linuxcool下建立子目录dir,并且设置文件属主有读、写和执行权限,其他人无权访问:mkdir -m 700 /usr/linuxcool/dir

3. 同时创建子目录dir1,dir2,dir3:mkdir dir1 dir2 dir3

4. 递归创建目录:mkdir -p linuxcool/dir

5. 当前目录下创建a1,a2,a3,a4,a5:mkdir a{1...5}

6. 创建多层目录(没有父目录):mkdir -R /tmp/h//d/b

 

1.4 mv命令(移动或改名文件)

语法:mv [参数]

参数:

 示例:

1. 将文件file1重命名未file2:mv file1 file2 

2. 将文件file移动到目录dir中:mv file /dir

3. 将目录dir1移动到dir2中(前提是dir2已存在,若不存在则改名):mv /dir1 /dir2

4. 将目录dir1下的文件移动到当前目录下:mv /dir1/* .

 

1.5 pwd命令(显示当前路劲)

语法:pwd [参数]

常用参数:

 

1.6 head命令(输出文件数据)

输出文件最前面的几行数据:head -2 file.txt

 

1.7 more命令(显示文本文件内容)

more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字,而对于内容较少的文本文件内容则推荐使用cat命令查看。

参数:

命令内部操作:

Space键:显示文本的下一屏内容
Enter键:向下n行,需要定义,默认为1行
斜线符\:接着输入一个模式,可以在文本中寻找下一个相匹配的模式
H键:显示帮助屏
B键:显示上一屏内容
Q键:退出more命令
Ctrl+F、空格键:向下滚动一屏
Ctrl+B:返回上一屏
=: 输出当前的行号
:f:输出文件名和当前的行号
V:调用vi编辑器
!:调用Shell,并执行命令

示例:

1. 显示文件file的内容,显示之前先清屏,附已显示的百分比:more -dc file 

2. 显示文件file的内容,每10行显示一次,而且在显示之前先清屏:more -c -10 file

3. 显示文件file的内容,每5行显示一次,而且在现实之后在清屏:more -p -5 file 

4. 逐页显示file文档内容,如有连续两行以上空白行则以一行空白行显示:more -s file

5. 从第20行开始显示file之后文档内容:more +20 file 

 

1.8 less命令(分页显示工具)

浏览文字档案的内容,用less命令显示文件时,PageUp键向上翻页,PaGeDown键向下翻页,要退出less程序,应按Q键。

less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。

参数:

命令内部操作:

b 向后翻一页

d 向后翻半页

h 显示帮助界面

Q 退出less 命令

u 向前滚动半页

y 向前滚动一行

空格键 滚动一页

回车键 滚动一行

示例:

1. 查看文件:less test.php

2. ps查看进程信息并通过less分页显示:ps -ef | less

3. 查看命令历史使用记录并通过less分页显示:history | less

4. 浏览多个文件:less log2018.log log2019.log

5. 当正在浏览一个文件时,也可以使用 :e 命令打开另一个文件:less file1

                                                                                                :e file2

2. 文档编辑

2.1 cat命令(在终端设备上显示文件内容)

cat命令就是用于查看内容较少的纯文本文件的。

注意:当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。因此对于较长文件内容可以按Ctrl+S键,停止滚屏;以及Ctrl+Q键可以恢复滚屏;而按Ctrl+C中断键则可以终止该命令的执行。或者对于大文件,干脆用more命令。

语法格式:cat [参数] [文件]

创建文件:cat > 文件名

向文件追加内容:cat >> 文件名

合并文件:cat 文件1 >> 文件2  或  cat 文件1 > 文件2

参数:

 示例:

1. 查看文件的内容:cat filename.txt

2. 查看文件的内容,并显示行数编号:cat -n filename.txt

3. 查看文件的内容,并添加行数编号后输出到另外一个文件中:cat -n linuxcool.log > linuxprobe.log

4. 清空文件内容:cat /dev/null > /root/filename.txt

5. 持续写入文件内容,碰到EOF符后结束并保存:cat > filename.txt <<EOF

6. 将软盘设备制作成镜像文件:cat /dev/fd0 > fdisk.iso

 

2.2 echo命令(输入字符串或提取Shell变量的值)

用于在终端设备上输出字符串或变量提取后的值;

人们一般使用在变量前加上符号的方式提取出变量的值,例如:PATH,然后再用echo命令予以输出,或者直接使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用。

语法:echo [参数] [字符串]

参数: 

示例:

1. 输出一段字符串:echo 'start' 

2. 输出变量提取后的值:echo $PATH

3. 对内容进行转义,不让$符号的提取变量值功能生效:echo \$PATH

4. 结合输出重定向符,将字符串信息导入文件中:echo "hello world" > admin

5. 使用反引号符执行命令,并输出其结果到终端:echo `date

6. 输出带有换行符的内容:echo -e "a\b\c"

7. 输出信息中删除某个字符,删除3:echo -e "123\b456"

 

2.3 rm命令(移动文件或目录)

rm是常用的命令,该命令的功能为删除一个目录中一个或多个文件或目录,他也可以将某个目录及旗下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。 rm也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

语法:rm [参数] [文件]

参数:

示例:

1. 删除前逐一询问确认:rm -i text.txt

2. 直接删除,不会有任何提示:rm -f test.txt

3. 递归删除目录及目录下所有文件:mkdir /data/log

                                                      rm -rf /data/log

4. 删除当前目录下所有文件:rm -rf *

5. 清空系统中所有的文件(慎用):rm -rf /*

 

2.4 tail命令(查看文件尾部内容)

tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名未“-”,则读取标准输入。

语法:tail [参数]

示例:

1. 显示文件file的最后10行:taile file 

2. 显示文件file的内容,从第20行至文件末尾:tail +20 file 

3. 显示文件file的最后10个字符: tail -c 10 file 

4. 一直变化的文件总是显示后10行:tail -f 10 file 

 

2.5 grep命令(强大的文本搜索工具)

这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令;

grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。需要注意的是:档模式中包含了空格,务必要用双引号将其引起来;

linux系统支持三种形式的grep命令:

  1. grep,标准,模仿的代表;

  2. egrep,简称扩展命令,其实和grep -E等价,支持基本和扩展的正则表达式;

  3. -fgrep,快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。

语法:grep [参数]

参数:

示例:

1. 支持多文件查询并支持使用通配符:grep zwx file_* /etc/hosts

file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj

2. 输出匹配字符串行的数量:grep -c zwx filr_* 

file_1:2
file_2:1
file_3:0

3. 列出所有的匹配行,并显示行号:grep -n zwx file_*

file_1:1:zwx
file_1:4:zwx
file_1:10:zwxddkjflkdjfdlkfjlsdkj
file_2:2:zwx
file_4:3:dkfjlzwxejfkje
file_4:4:zwx djfkdjf
file_4:5:zwxedkfgj

4. 显示不包含模式的所有行:grep -vc zwx file_*

file_1:7
file_2:4
file_3:5
file_4:2

5.不再显示文件名:grep -h zwx file_*

zwx
zwx
zwxddkjflkdjfdlkfjlsdkj
zwx
dkfjlzwxejfkje
zwx djfkdjf
zwxedkfgj

6. 只列出符合匹配的文件名,不列出具体匹配的行:grep -l zwx file_*

file_1
file_2
file_4

7. 不显示不存在或无匹配的文本信息:grep -s zwx file file_1

file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj

  : grep zwx file file_1

grep: file1: No such file or directory
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj

8. 递归搜索,不仅搜索当前目录,还搜索子目录:grep -r zwx file_2 *

file_2:zwx
anaconda-ks.cfg:user --name=zwx --gecos=“zwx”
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj
initial-setup-ks.cfg:user --name=zwx --gecos=“zwx”

9. 匹配整词,以字面意思去解释他,相当于精准匹配:grep zw* file_1

zwx
zwx
zdkfjeld
zw
ze
zwxddkjflkdjfdlkfjlsdkj
[root@linuxcool ~]# grep -w zw* file_1
zw

10. 匹配整行,文件中的整行与模式匹配时,才打印出来:grep -x zwx file_*

file_1:zwx
file_1:zwx
file_2:zwx

 

2.6 touch命令-创建文件

使用指令touch时,如果指定的文件不存在,则将创建一个新的空白文件;如果制定的文件存在,则变更文件的日期属性。

1. 创建一个file文本文件:touch file.txt

2. 批量文件:touch file{1..5}.txt

 

2.7 vi命令-编辑文本

vi时linux系统上的第一个全屏模式编辑器,它用法简单,而且所占空间不大,操作灵活。

1. 打开或新建文件,并将光标置于第一行首:vi filename

2. 打开文件,并将光标置于第n行首:vi +n filename 

3. 打开文件,并将光标置于最后一行:vi + filename

4. 在上次正用vi编辑器时发生崩溃,恢复filename:vi -r filename

 

vi在命令模式下的参数

复制粘贴 (命令模式下)

  yy复制一行
  p 粘贴
  [n] yy复制光标后n行
  p 粘贴


剪切与删除(命令模式下)

  dd删除一行
  [n] dd删除光标行的后n行
  p粘贴上面的内容


快捷操作(命令模式下)

  u撤销操作

搜索

  命令模式下,键入 / 后面按搜索的内容
  按 n 向后搜索
  按 N 向前搜索


替换

  末行模式下
  :%s/源/目标替换/g %指代整个文件内容 g代表全局替換
  :1,10s/源/目标替换/ 替换从第1行到10行中每行第一个目标内容
  :1,5s/源/目标替换/g 替换从第1行到5行中所有的目标内容


撤销

  命令模式下,u 撤销至上一步
  crtl + r恢复至上一步撤销


其它命令

  显示行号
  末行模式:set nu!
  显示当前文件名
  末行模式:file

 

3. 系统管理

3.1 rpm命令-RPM软件包管理器

rpm命令包含了五种基本功能:安装、卸载、升级、查询、验证;

语法格式:rpm [参数] [软件包]

参数:

实例:

1. 直接安装软件包:rpm -ivh packge.rpm

2. 忽略报错,强制安装:rpm --force -ivh package.rpm

3. 列出所有安装过的包:rpm -qa 

4. 列出rpm包中的文件安装的位置:rpm -ql ls

5. 卸载rpm包:rpm -e package.rpm

6. 升级软件包:rpm -U file.rpm

 

3.2 find命令-查找和搜索文件

find命令可以根据给定的路劲和表达式查找的文件或目录。支持正则,和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。

find不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find模糊搜索还是比较消耗系统资源的。

语法:find [参数] [路径] [查找和搜索范围]

参数:

1. 使用-name参数查看/etc目录下面所有的.conf结尾的配置文件:find /etc -name "*.con"

2. 使用size参数查看/etc目录下面大于1M的文件:find /etc -size +1M

3. 查找当前用户目录下的所有文件:find $HOME -print 

4. 列出当前目录和子目录下所有的文件和文件夹:find . 

5. 在/home目录下查找以.TXT结尾的文件名:find /home -name "*.txt"

6. 搜索超过七天内被访问过的所有文件:find . -type f -atime +7 

7. 找出/home下不是以.txt结尾的文件:find /home ! -name "*.txt"

 

3.3 uname命令-显示系统信息

用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。

如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。

语法:uname [参数]

参数:

 

 

 

3.4 user*命令

3.4.1 useradd命令-创建新用户

useradd命令 用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

语法:useradd [选项] [参数]

 

 

3.4.2 usermod命令-修改用户的基本信息

usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。

语法:usermod [选项] [参数]

参数:

 

3.4.3.userdel命令 – 删除给定的用户以及与用户相关的文件

userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

语法:userdel [选项] [参数]

参数:

 

3.5 ch*命令

3.5.1 chage命令-修改帐号和密码的有效期限

语法:chage [选项] 用户名

参数:

 

3.5.2.chattr – 改变文件属性

语法:chattr [选项]

选项:

 

3.5.3.chown命令 – 变更文件或目录的拥有者或所属群组

chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

语法:chown [选项] [参数]

参数:

用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。

 

3.5.4.chmod命令 – 改变文件或目录权限

chmod命令的英文原意是“change the permissions mode of a file”,我们简称为“change mode”,意为用来改变文件或目录权限的命令,但是只有文件的属主和超级用户root才能执行这个命令。有两种模式,一种是采用权限字母和操作符表达式;另一种是采用数字。

语法:chmod [参数] [文件]

 

4. 磁盘管理

4.1 df命令-显示磁盘空间使用情况

默认显示单位为KB,建议使用df -h参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。

语法:df [参数] [指定文件]

常用参数:

 

4.2 lsblk命令-查看系统的磁盘

用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。

语法:lsblk [参数]

 

5. 文件传输

5.1 tftp命令-上传及下载文件

tftp命令用于传输文件。ftp让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。

语法:tftp [参数]

 

6. 网络通信

6.1 ssh命令-安全连接客户端

语法:ssh [参数] [远程主机]

参数:

实例:

1. 登录远程服务器:ssh 192.168.1.1

2. 用test用户链接远程服务器:ssh -l test 192.168.1.1

3. 查看分区表:ssh 192.168.1.1 /sbin/fdisk -l

4. 强制使用ssh协议版本1:ssh -1 

5. 开启认证代理连接转发功能:ssh -A

 

6.2 netstat命令-显示网络状态

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到;另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

语法:netstat [参数]

参数:

 

6.3 hostname命令-查看主机名称

1. 查看主机名称:hostname 

2. 临时修改主机名(重启后失效):hostname mytest

3. 永久修改主机名:vi /etc/sysconfig/network

 

6.4 ping命令

ping命令一般用于检测网络通与不通或者网络连接速度的命令,也叫时延,其 值越大,速度越慢;

Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows 下运行ping命令一般会发出4个请求就结束运行该命令。
而Linux下不会自动终止,此时需要我们按CTR+C终止
参数:

实例:

1. 查看本机的连通性:ping 192.168.1.1

2. 查看百度是否连通:ping www.baidu.com

3. 连续ping 4次查看:ping -c 4 www.baidu.com

 

7. 备份解压

7.1 zip命令-压缩文件

zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。

对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。(如果添加了bzip 2支持,zip也可以使用bzip 2压缩,但这些条目需要一个合理的现代解压缩来解压缩。当选择bzip 2压缩时,它将通货紧缩替换为默认方法。)zip会自动为每个要压缩的文件选择更好的两个文件(通缩或存储,如果选择bzip2,则选择bzip2或Store)。

格式:zip [参数] [文件]

 

7.2 unzip命令-解压缩zip文件

unzip命令是用于.zip格式文件的解压缩工具 ,unzip命令将列出、测试或从zip格式存档中提取文件,这些文件通常位于MS-DOS系统上。

默认行为(就是没有选项)是从指定的ZIP存档中提取所有的文件到当前目录(及其下面的子目录)。一个配套程序zip(1L)创建ZIP存档;这两个程序都与PKWARE的PKZIP和PKUNZIP为MS-DOS创建的存档文件兼容,但许多情况下,程序选项或默认行为是不同的。

语法:unzip [参数] [文件]

参数:

 

7.3 gzip命令-压缩和解压文件

gzip命令的英文是“GNUzip”,是常用来压缩文件的工具,gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

语法:gzip [参数]

参数:

 

7.4 zipinfo命令-查看压缩文件信息

zipinfo命令的全称为“zip information”,该命令用于列出压缩文件信息。执行zipinfo指令可得知zip压缩文件的详细信息。

语法:zipinfo [参数]

 

7.5 gunzip命令-压缩文件

gunzip命令用于解压文件,它是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为”.gz”。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip命令单独完成。

语法:gunzip [参数]

参数:

 

7.6 tar命令

将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件

语法:tar [选项...] [FILE]... 

 

posted @ 2023-06-04 10:52  小王同学学编程  阅读(3313)  评论(0编辑  收藏  举报
levels of contents