目录

切换用户

查看帮助文档(help、man、info)

(1)help

(2)man

(3)info

清屏

操作目录和文件

(1)操作目录

创建目录(mkdir)

查看目录下文件信息(ls)

复制目录(cp)

剪切目录(mv)

删除目录(rmdir、rm)

打印当前所在目录路径

(2)操作文件

创建文件(touch)

复制文件(cp)

剪切文件(mv)

查看文件类型(file)

为命令设置别名

打印shell变量(echo)

重定向和管道(>、>>、&>>、>&)(|、tee)

(1)重定向的作用

(2)重定向语法

(3)重定向案例

(4)管道

查看文件内容(cat、more、less、head、tail)

编辑文件内容(vim)

查看日期日历(date、cal)

查找文件或文件夹

查找(find)

过滤命令(grep)

排序(sort)

统计文件里的字数(wc)

查看端口占用情况(netstat)

查看和操作进程(ps、top、kill)

查询指定进程(ps)

监控所有进程(top)

结束进程(kill)

管理服务(systemctl)

下载(wget)

创建链接(windows里叫快捷方式)

(1)链接分类

(2)硬链接和软连接的区别

(3)关于硬链接

1.创建硬链接

2.查看文件的硬链接数

3.说明和注意事项

(4)关于软连接

1.创建软连接

2.什么是悬挂的软连接

(5)查看文件的硬链接、软连接

查看历史命令(history)

查看程序安装路径(whereis)

shell扩展

(1)通配符扩展

(2)波形符扩展

(3)大括号扩展

(4)变量扩展

(5)命令替换

(6)防止扩展的办法

1.转义

2.引号保护


切换用户

su - 用户名   //su是switch user切换用户

查看帮助文档(help、man、info)

(1)help

语法:命令 --help

特点:简洁,不够详细

(2)man

语法:man 命令        //默认以less命令打开的

/*显示的是从《Linux内置的manual帮助手册》查询出来的结果:

翻下一行:回车

翻下一页:空格

退出:Q

*/

关于Linux内置的manual帮助手册

英文名叫man page,分为9个章节:

1——用户命令(可执行命令和shell程序)

2——系统调用(从用户空间调用的内核例程)

3——库函数(由程序提供)

4——特殊文件(如设备义件)

5——文件格式(配置文件相关)

6——游戏

7——惯例、标准和其他(协议、文件系统)

8——系统管理和特权命令(维护任务)

9——Linux内核API(内核调用)


查看方式:

  • 第一步

mandb           //生成一个man索引数据库

  • 第二步

找到命令在man page第几章

man -k ls        //在man索引数据库中,查找ls命令所在man page的章节数

man -f ls         //也是在man索引数据库中查,比-k查找更精确

man -K ls        //在man page中全文检索,凡是含有ls命名的都找出来。缺点是速度慢

  • 第三步

man 1 ls        //查看man page第1章关于ls命令的内容

打印内容如下:

(3)info

说明:内置的GUN ifo文档。man page一般作为命令参考,而info则是详细介绍的文档。

语法:pinfo           //显示比输入info更好看,有颜色

清屏

clear      //相当于wimdows下cmd里面的cls命令

操作目录和文件

(1)操作目录

  • 创建目录(mkdir)

创建一个目录:mkdir 目录名

如:mkdir /opt/testDir


创建多级目录:

mkdir -p /opt/mydir1/mydir2/mydir3       //如果mydir1、mydir2不存在,在创建mydir3前会先创建mydir1、mydir2

  • 查看目录下文件信息(ls)

ls  【选项】【目标目录】       //打印当前目录下的文件信息

【选项】


美化显示打印结果:-h


显示更详细的信息:- l             //-l是list的简写。“ls -l” 可以简写成“ll”


显示隐藏文件:-a

只显示目录:-d


递归显示所有子目录、子文件:-R


按文件大小排序:

-S          //从大到小

-Sr        //从小到大(-r表示反转顺序)


按时间排序:

-t

-tr          //倒序(-r表示反转顺序)


按文件类型分组:-F

/*根据打印结果的最后一个符号判断文件类型:

*表示是可执行文件;

/表示是目录;

@表示是 ”符号链接文件“

*/

“ls -l”打印结果说明:

第1个字段:d【文件类型:-是文件,d是目录】rwx【所有者权限】---【所在组成员权限】---【其他人权限】

第2个字段:15【链接数】

第3个字段:student【所有者用户名】 //如果所有者用户被删除了不存在了,就会显示其pid

第4个字段:student【所在组名】

第5个字段:4096【文件占用空间,单位字节byte】

第6个字段:Sep 21 2020【最近一次修改文件内容时间】

第7个字段:sutdent【最近一次修改文件内容时间】

  • 复制目录(cp)

cp 【源目录】 【存放位置】

cp -r dir dir2

/* -r参数的作用:

  • 递归复制。递归复制dir目录(含其下所有子目录、子文件)到dir2;
  • 完全复制。dir目录及其下子目录的权限也会复制

*/

  • 剪切目录(mv)

mv 【源目录】 【存放位置】

递归剪切,源目录及其下子目录、子文件,都会移动到指定存放位置

  • 删除目录(rmdir、rm)

删除空目录:rmdir 目录

递归删除目录:rm -r /dir/目录001                           //递归删除dir下所有子目录、文件

递归删除目录(不提示):rm -rf /dir/目录001        //递归删除每一个子目录时会提示,-f表示强制删除不提示

  • 打印当前所在目录路径

pwd

(2)操作文件

  • 创建文件(touch)

1. vi/vim

vi/vim 文件名      //本来是编辑文件命令,没有该文件就会创建

2.touch

touch 文件名

touch 文件名1 文件名2     //一次创建多个文件,文件名之间用空格隔开

如:

touch documents/1.txt

touch /home/steven/documents/1.txt

touch 1.txt 2.txt 3.txt

  • 复制文件(cp)

cp 【源文件】 【存放位置】

复制单个文件

cp /etc/1.txt ./         //复制etc下的1.txt到当前目录下


复制多个文件

cp 1.txt 2.txt /etc/3.txt /home/steven        //复制3个文件到steven目录


复制文件并重命名

cp 1.txt /home/steven/2.txt       //复制1.txt,并重命名为2.txt。如果2.txt已经存在,会提示是否覆盖


完全复制(包含权限)

cp -a 1.txt /home/steven          //复制时权限也复制

  • 剪切文件(mv)

mv 【源文件】 【存放位置】

mv /dir1/1.txt /home/steven/dir1             //如果1.txt已经存在,会提示是否覆盖

mv /dir1/1.txt /dir/2.txt                             //剪切并重命名为2.txt

mv /dir1/1.txt /home/steven/dir1/2.txt     //剪切并重命名为2.txt

  • 删除文件(rm)

rm 【文件】

  • 查看文件类型(file)

file 【文件】

  • 查看文件属性(stat)

stat 【文件】

打印结果的内容说明

access:最近一次访问时间

modify:最近一次修改内容时间         //ls 文件名,显示的时间是modify时间

change:最近一次属性(如文件大小、权限等)发生变化时间

为命令设置别名

查看

alias     //查看所有别名


设置

alias 'mysql=sh /opt/mysql/startup.sh'    //设置别名。一输入mysql,就会执行引号里的命令


执行

mysql


删除

unalias mysql       //删除别名

打印shell变量(echo)

echo $变量名

例子:echo $PATH //查看环境变量。环境变量属于shell变量

重定向和管道(>、>>、&>>>&)(|、tee

例子:ls > 123.txt

会把ls查询的结果,输出到123.txt文件中(如果123.txt中有内容,会覆盖123.txt中的内容)

(1)重定向的作用

官方说法:改变默认输入输出的方向(默认一个进程是从键盘输入、输出到屏幕)。比如改为从文件输入到屏幕,或者从键盘输入到文件,都是重定向

简单理解:重定向之后,执行结果不打印在屏幕,而是保存到文件

(2)重定向语法

语法:命令 【选项】 【重定向符号】

【选项】

又叫通道,有下面4种:

  • 标准输入stdin(编号为0)【默认】:在终端接收键盘的输入【键盘输入】
  • 标准输出stdout(编号为1):在终端执行命令后,打印在屏幕的内容【输出到屏幕】
  • 标准错误stderr(编号为2):在终端执行命令后报错,打印在屏幕的错误信息【输出到屏幕】
  • 其他文件filename(编号为3)

【重定向符号】

  • >                    覆盖
  • >>                  追加,追加到文件内容的最后
  • >/dev/null      丢弃执行结果。适用于既不想结果打印出来,也不想输出到文件)

(3)重定向案例

1.把打印结果保存到文件

pwd 1>path.txt         //把pwd命令执行后的标准输出,重定向到path.txt文件中。选项为1表示使用1号通道重定向(重定向通道默认是1,这儿可以省略不写)


2.把打印结果正确部分保存到1.txt,报错部分保存到error.txt

ls 1.txt 不存在文件.txt >result.txt 2>error.txt        //不存在“不存在文件.txt”这个文件,执行命令会有报错


3.把打印结果正确部分、报错部分都保存到result.txt

方式一:ls 1.txt 不存在文件.txt >result.txt 2>&1

方式二:ls 1.txt 不存在文件.txt &>result.txt        //“&>”如果换成“&>>”就是追加。方式二bash shell外的某些shell不支持这种语法,最好用方式一

(4)管道

概念:左边命令的输出(标准错误部分会丢失),作为右边命令的输入

符号:|

例子:ls 1.txt | wc                //统计1.txt的字数

扩展:管道后面加tee

  • 作用:tee一般后面跟一个文件。即会重定向到该文件,又会打印在终端
  • 例子:

把结果重定向到result.txt,又打印在屏幕

ls -l | tee result.txt #即把结果重定向到result.txt,又会打印在屏幕


屏幕不打印信息、result.txt只保存ls 1.txt除去标准错误部分后的内容:

ls 1.txt 不存在文件.txt | tee result.txt 2>error.txt         //因为标准错误部分经过“| tee”,传过来就已经丢失了,所以 2>error.txt没什么用,不会有标准错误

查看文件内容(cat、more、less、head、tail)

(1)查看短文本

cat -n 文件名     //-n显示行号


合并文件

cat 1.txt 2.txt     //把1和2两个文件合并到一个文件

(2)查看长文本

more 文件名

(3)查看文本末尾

tail 文件名

tail -n 20 /xxx.log               //显示最后20行(不加-n默认最后10行)
tail -n +20 /xxx.log             //显示前面20行

tail -f -n 20 /xxx.log            //-f 实时刷新显示日志文件最后20行

退出,按下CTRL+C

编辑文件内容(vim)

查看日期日历(date、cal

date、cal两个命令,前者是日期,后者是日历

查找文件或文件夹

  • 查找(find)

find 命令用于查找文件:


【选项】

-name:指定文件名,*.log 表示后缀名为 .log,* 是通配符,表示匹配任意字符串
-mtime:指定修改时间(以天为单位),+xx 表示修改时间大于 xx 天, -xx 表示修改时间小于 xx 天
-type:是指定文件类型,b 表示块设备文件,d 表示目录,c 表示字符设备文件,p 表示管道文件,l 表示符号链接文件,f 表示普通文件
-size:指定文件大小,+xx 表示文件大小大于 xx,-xx 表示文件大小小于 xx

-user:指定文件所有者


【例子】

查找当前目录一个月(30天)以前大于 100M 的日志文件(.log)并删除

find . -name "*.log" -mtime +30 -type f -size +100M | xargs rm -rf {};

/*xargs:把前一命令输入当作后一命令输出,通常配合管道使用*/

-size、-name、-user选项的更多例子:

find -name '关键字' //find指令会从当前目录递归遍历各个子目录查找


例子1:find -name *e* //查找当前目录及其子目录下含e的文件或文件夹

例子2:find -name *.txt //查找当前目录及其子目录下文件类型是txt的文件

1)指定目录下按名称搜索(目录可以是绝对目录和相对目录)

例子:find /etc -name *.txt //搜索/etc下的所有txt文件类型的文件


2)按文件大小搜索

例子1:find /etc -size -5M //搜索/etc下的小于5M的文件(第三个参数-5M中的-表示小于,+5M表示大于5M,5M表示等于5M)

例子1:find /etc -size +5K //搜索/etc下的大于5K的文件


3)按文件所有者搜索

find /etc -user steven         //搜索/etc下所有者是steven的文件或文件夹

find /etc -nouser -o -nogroup    //搜索/etc下没有所有者的文件、目录

过滤命令(grep)

例子1:find *.txt | grep new //查找.txt格式的文件中过滤出名称含有new的文件


例子2:find /etc -size -5M | grep new //查找/etc下的小于5M的文件中中过滤出名称含有new的文件


例子3:cat t1.txt | grep beijing //查看t1.txt文件内容中过滤出含beijing的内容


例子4:cat t1.txt | grep -i beijing // -i不区分beijing的大小写


例子5:cat t1.txt | grep -ni beijing //-n表示显示出行号


例子6:ls -l | grep new //搜索出当前目录下所有名称含new的文件或文件夹

排序(sort)

sort -参数 文件

sort -参数 文件1 文件2 //多个文件合并为一个文件排序

9.4 通配符

*匹配0到多个字符:ls /opt/test*.txt //可以把test1.txt、test123.txt都查出

?匹配1个字符:ls /opt/test?.txt //只能查出test1.txt

统计文件里的字数(wc)

wc 【选项】 文件名     //如果不带选项,默认输出三个值:行数 单词数 字节数

【选项】


-c   字节数

-m  字符数(主要用于中文汉字)       //此选项不能与 -c 参数一起使用

-l    行数

-w  单词数(主要用于英文单词)       //由空格键、换行符分隔的字符串,叫一个单词

查看端口占用情况(netstat)

netstat -anp |grep 3306        //查看3306端口是否在使用

查看和操作进程(ps、top、kill)

  • 查询指定进程(ps)

ps -efl |grep firefox

ps -aux |grep firefox              //比-efl更详细

pstree -【选项】                   //树形显示

-p 显示进程的pid
-u 显示进程所属的用户
-apnh 显示进程间的关系
  • 监控所有进程(top)

top                                      //类似windows的任务管理器

  • 结束进程(kill)

kill -9 http*                      //结束以http开头名字的所有进程

kill -9 【指定pid数字】   //结束指定pid的进程

管理服务(systemctl)

systemctl是systemControl的简写,和windows下的service.msc是类似的


systemctl status 服务名称       //查看服务

systemctl start 服务名称         //开启服务

systemctl stop 服务名称         //停止服务

systemctl restart 服务名称      //重启服务

systemctl reload 服务名称      //重新加载服务

systemctl enable 服务名称    //设置服务开机自启

下载(wget)

wget -p /opt/usr -r www.baidu.com

/*参数说明:

-r:递归下载页面所有资源(视频、网页、图片等)

-p:保存到指定文件夹

*/

创建链接(windows里叫快捷方式)

(1)链接分类

硬链接、软链接(又叫符号链接)

(2)硬链接和软连接的区别

1.软链接类似快捷方式,指向的是路径,而硬链接指向的是数据;

/*创建一个与被删除文件同名的文件,悬挂的软连接会指向新文件,而硬链接不会*/

2.软连接可以指向目录,而硬链接不能指向目录、特殊文件;

/*虽然我们不能创建指向目录的硬链接,但是“任意一个用户的工作目录”默认有6个硬链接(自己目录名字本身、其下隐藏文件“.”、其下隐藏文件“.xxx”里面的隐藏文件“..”)*/

3.硬连接不占空间(相当于文件的别名,不产生新的inode结点),软连接占磁盘空间(要产生新的inode结点,来指向源文件)。

/*原因如下:

硬连接:相当于创建一个文件名字这个默认硬链接的一个副本,也是直接指向元数据的inode;

软链接:有自己元数据和block块,其block块存放的是对应目标的文件名字,通过文件名字可以找到文件数据

*/

(3)关于硬链接

注意:文件名本身这个硬链接,和手动创建的硬链接必须存放在同一挂载的磁盘里;

1.创建硬链接

touch 1.txt             //默认生成一个硬链接。1.txt这个名字是默认指向其对应文本数据的一个硬连接

ln 1.txt 1_link.txt   //手动创建一个硬链接。创建默认生成的硬链接的一个副本

2.查看文件的硬链接数

ls -l 【文件】

打印信息:-rwxrwxrwx 2 root root 6.4k Apr 23 2023 1.txt        //2就是文件的所有硬链接数

3.说明和注意事项

  • 指向同一数据的硬链接权限都一样;
  • 只有把所有的硬链接(含文件名字这个默认硬链接)删了对应数据才会删除;
  • 文件名本身这个硬链接,和手动创建的硬链接必须存放在同一挂载的磁盘里;

(4)关于软连接

1.创建软连接

ln -s /etc/1.txt /home/steven/1_link.txt         //指向文件。创建一个指向1.txt的软连接文件(注意:创建软连接时必须写绝对路径,不能写相对路径)


ln -s /home/steven/dir /opt/dir_link               //指向目录。在opt下创建一个指向dir目录的的软连接

2.什么是悬挂的软连接

当被指向的目标被删除后,软连接失效,被称为悬挂的软连接

(5)查看文件的硬链接、软连接

ls -l 【文件】

打印的信息,开头部分:

-rwxrwxrwx          //第一个字符是-,表示是硬连接

lrwxrwxrwx           //第一个字符是l,表示是软连接

drwxrwxrwx         //第一个是字符d,表示是目录

查看历史命令(history)

查看历史命令:history

搜索历史命令:按ctrl+r,然后输入命令前面部分,会自动匹配出来

执行序号为21的历史命令:!21

查看程序安装路径(whereis)

查看含mysql关键字的程序安装文件所在路径:whereis mysql

shell扩展

(1)通配符扩展

用法:对路径进行模式匹配

例子:(假设目录下有a1、a2、a3、a4、ak、ts这5个文件)

ls a*                                      //检索以a开头的文件

ls a?                                    //检索出:a1、a2、a3、a4、ak

ls a[234]                                //检索出:a2、a3、a4

ls a[!234] 或者 ls a[^234]      //检索出:a1、ak

(2)波形符扩展

echo ~用户名                       //如果有“用户名”这个用户,就返回该用户主目录(比如:root用户返回/root,steven用户返回/home/steven),没有就返回“~用户名”这个字符串

(3)大括号扩展

用于快速生成多个文件名。扩展项用大括号括起来,可以是字母和数字

echo name_{1,2,3,4}           //打印:name_1、name_2、name_3、name_4

echo name_{1..4}                //打印:name_1、name_2、name_3、name_4

echo name_{a,c,d}              //打印:name_a、name_c、name_d

echo name_{a..c}                //打印:name_a、name_b、name_c

echo name_{a,{1,2},b,c}     //打印:name_a、name_1、name_2、name_b、name_c

(4)变量扩展

创建变量:变量名=值

引用变量:$变量名 或者 ${变量名}

(5)命令替换

使用命令替换:<反引号> `命令` 和 $(命令) (区别在于后者可以嵌套而前者不可以);

作用:在输出里面,不视为字符串,而视为命令;

例子:echo "my name is $(命令)"

(6)防止扩展的办法

1.转义

\对特殊含义字符转义,只能转义一个字符。比如echo \$var只会打印$var;

2.引号保护

单引号或双引号可以保护字符串,不让字符串最前面或最后面的符号被识别为扩展符号。

单引号和双引号的区别

  • 双引号

引用的字符串里面如果含有命令,就会解析为命令(如果双引号里面字符串命令符被转义了,就不会解析为命令)

如:

echo "$hello"       //打印hello这个变量的值

echo "${hello}"    //也一样的,是打印hello这个变量的值

echo "\$hello"     //"\"转义,打印"$hello"字符串

  • 单引号

引号里面是啥,就输出啥,不会解析成命令

Linux-常用shell命令相关推荐

  1. 八、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(中)

    @Author : Runsen @Date:2020/9/11 文章是Runsen在Gitchat付费文章分享:Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程 顺便同步到C ...

  2. 七、Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程(上)

    @Author : Runsen @Date:2020/9/11 文章是Gitchat付费文章分享:Linux 常用 Shell 命令,控制台的快捷键以及 Shell 编程 顺便同步到CSDN中,这里 ...

  3. Linux基础(2)--Linux常用shell命令

    Linux常用shell命令 显示命令 查看当前工作路径 切换目录 清屏 显示和配置网络属性 新建文件夹 删除命令 压缩和解压命令 拷贝命令 帮助命令man 显示命令 – 命令:ls – 参数:a,l ...

  4. linux常用shell命令面试,shell经典笔试题目总结

    shell经典笔试题目总结 守望者整理了一些高手的博客记录的shell面试题分享给大家,有些比较有意思,帮助大家面试或则学习shell编程的学习例子 一 文件内容如下: 100 a         1 ...

  5. linux常用shell命令之文件操作命令

    # touch 新建空文件,或更新文件时间标记 touch path/filename user@computer: ~$ touch myfile # 在当前目录下新建myfile user@com ...

  6. Linux常用shell命令总结

    Linux shell命令: ifconfig  查看本地IP地址 ls dir 显示当前目录下的文件和文件夹 cd 目录 进入某个目录 cd .. 返回上一层目录   cat 文件名 输出文件内容到 ...

  7. linux 常用 shell 命令示例参考

    1. "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell 2. 分号可分隔一行中多条命令,shell分别执行 3. 命令以 & 符结 ...

  8. linux常用shell命令之目录操作命令

    # pwd 查看当前所在目录 user@computer: ~$ pwd /home/user 复制代码 # cd 跳转到目标目录 user@computer: ~$ cd . # 到本目录 user ...

  9. linux shell 命令记录,linux常用shell命令记录

    获取本机内网IP /sbin/ifconfig | grep "inet addr" -m 1 | cut -d ":" -f 2 | cut -d " ...

  10. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

最新文章

  1. 从jQuery的缓存到事件监听
  2. Hierarchy视图里的Transform和Camera组件
  3. python主线程有两个子线程、创建两个主函数_Python多任务之线程
  4. AT4120-[ARC096D]Sweet Alchemy【贪心,背包】
  5. flutter 国际化_从0开始设计Flutter独立APP | 第二篇: 完整的国际化语言支持
  6. 只有数学老师懂的15个泪流满面的瞬间~
  7. java中after什么意思_Java中的即时isAfter()方法
  8. linux 中 svn 服务器搭建 重启
  9. 海外精致办公名片展示样机|智能贴图 Mockup名片模板
  10. SAP License:20个公司绝对不会告诉你的潜规则
  11. 如何借助SimpleAdapter和Spinner实现下拉列表
  12. 设计最简单的c语言程序,最简单的C语言程序
  13. 华为的数字化转型之道
  14. Matlab数字图像处理——图像增强
  15. Java 经纬度转UTM投影
  16. 回到十七世纪,让我来编算一本常用对数表(对数结果是小数,要有分数的思想,指数的幂是分数,这样可以实现小数分数转化位整数的幂的求法)
  17. 毕设设计要点整理(一)——角色相关
  18. Ubuntu 18.04 究极美化教程
  19. 2016年世界各国gdp排名 人均gdp排名 人口排名
  20. 【软开云】基于华为软开云用敏捷思想管理项目团队一点思路(2)

热门文章

  1. 电脑格式化后数据恢复软件EasyRecovery16
  2. Lammps之MP方法粘度计算(包含in文件)
  3. Google趋势 - Google Trend in Chinese
  4. Foursquare数据集处理之利用defaultdict进行主次关键字排序
  5. 打造超精简绿色 迅雷 和 IDM附详细教程:
  6. 钛备份Titanium Backup pro (Android)v5.4.1捐赠完整版
  7. AS--Location specified by ndk.dir...
  8. 最像win的linux,最像Windows的Linux系统发行版
  9. java 模拟评委打分系统
  10. QGraphicsView类