Linux常用命令应用

目录

(一) 文件和目录操作

1.练习cd、ls、pwd等命令,理解每个命令功能和显示信息的意义

2.练习显示文本文件命令,理解每个命令功能和显示信息的意义

3.练习建立、删除、移动目录文件命令,理解每个命令功能和显示信息的意义

4.练习ln命令,理解每个命令功能和显示信息的意义

5.练习管道及输出重定向

6.进程管理

(二)文本处理

1.新建c源程序文件feb.c,编译执行,显示费波纳奇数列:

2.分别打开stu.txt文件,练习vi命令模式命令:

①移动光标

②查找、删除、修改字符

③删除、粘贴行

④复制、粘贴行

⑤恢复编辑

3.打开passwd文件,练习vi末行命令

①删除、复制、移动多行

②写文件、读文件,指定文件路径(另存)

4.替换--将文件中每行“软件工程”替换为“软工”

(三)用户和文件安全

1.使用ls -l命令,浏览目录 ./、/、/etc、/home、/sbin、/bin及其下文件的权限,理解显示信息的意义

2.新建用户user1、user2,并设置口令

3.切换到不同的虚拟控制台终端,使用分别用user1、user2身份用户登录系统,使用ls –l或ls -al命令查看文件的权限,理解显示信息的意义

4.建立c源程序文件、编译产生可执行文件,查看、改变这些文件的权限,显示、打开或执行文件,理解显示信息的意义

5.建立目录、在目录下建立c源程序文件、编译产生可执行文件,查看、改变目录的权限,查看、打开或执行文件,理解显示信息的意义

思考题

1.如何将一个已经登录的用户踢出Linux系统,写出思路、步骤及相关命令

2.如何统计当前系统的用户数,写出思路及相关命令


(一) 文件和目录操作

目录/var/materials下保存了本实验用到文件

步骤和要求

登录主机教学服务器 

1.练习cd、ls、pwd等命令,理解每个命令功能和显示信息的意义

pwd --查询当前目录,初始状态在当前用户的主目录(显示在home下的xxx用户中)

cd /  --切换目录(切换到根目录下)

pwd  --显示当前目录(当前目录为根目录/)

cd /home  --切换目录(切换到根目录下的home目录)

pwd  --显示当前目录(当前目录为根目录下的home目录)

cd s个人学号 --切换目录(切换到/home目录下的本用户目录sxxxxx用户名)  

pwd --显示当前目录(当前目录在/home目录下的本用户目录sxxxx用户名)  

cd ..  --返回上一级目录(当前目录在/home目录下)

cd /etc  --切换目录(切换到根目录下的etc目录)

cd  --切换目录(当前目录在家目录~用户主目录)

cd /var/materials  --切换目录(当前目录在/var/materials下) 

pwd  --显示当前目录(当前目录在/var/materials下)    -- 显示路径

cd ..  --切换到上一级目录

pwd  --显示当前目录(当前目录在/var下)

cd  --切换目录(当前目录在家目录~用户主目录)

ls –l  --列出当前目录(用户主目录下)的详细信息

ls –l .  --列出当前目录(用户主目录下)的详细信息

ls -al  --列出当前目录下的所有文件(包括隐藏文件)的详细信息

ls –ld .  --列出当前用户主目录下的目录的详细信息

ls –ld /home  --列出根目录下home目录下的目录的详细信息

ls –ld ~  --列出当前用户主目录下的目录的详细信息

ls -s --每个文件后边打印出大小;

ls -S --文件按照大小排序;

ls -F --每个文件后边打印出类型 @->符号链接 | -> FIFOS  / -> 目录  = ->套接字   * ->可执行

ls -R --递归显示所有文件夹中的文件

2.练习显示文本文件命令,理解每个命令功能和显示信息的意义

cd  --切换到当前用户主目录(/home/xxxx用户名)

cp /var/materials/stu.txt ./ --将/var/materials/stu.txt复制到当前用户主目录

cp /var/materials/he* ./  --将/var/materials下以he开头的文件复制到当前用户主目录

cp /var/materials/lastlogs ./ --将/var/materials/lastlogs的文件复制到当前用户主目录

cat hello.c --将hello.c的内容呈现出来

cat hello.c hello.c.bak 【失败】

cat he* --将以he开头的文件的内容呈现出来

cat *.sh  --*表示通配符,显示目录中可用的所有“sh”文件的内容

more ex.sh --将ex.sh的内容呈现出来

more stu.txt --将stu.txt的内容呈现出来

more stu* --将所有以stu开头的文件内容呈现出来

head -n 5 stu.txt --显示在stu.txt文件中的前5行内容

tail -n 3 stu.txt --显示在stu.txt文件中的后3行内容

3.练习建立、删除、移动目录文件命令,理解每个命令功能和显示信息的意义

cd --切换到当前用户主目录(~)

mkdir dir1 --在当前用户的主目录创建目录dir1

mkdir dir2 --在当前用户的主目录创建目录dir2

mkdir dir2/dir21  --创建目录dir2下的目录dir21

mkdir dir2/dir22 --创建目录dir2下的目录dir22

mkdir /dir2/dir23  --创建根目录dir2下的目录dir23【失败:mkdir无法实现连环创建,因为在根目录下没有dir2,即无法创建dir2下的dir23】

mkdir ./dir2/dir24  --在当前用户主目录下已创建的dir2中创建dir24

【‘ ./ ’代表当前用户目录  ‘ / ’代表根目录】

mkdir –p dir3/dir31/dir311/dir3111  --在当前用户主目录下连环创建dir3-dir31-dir311-dir3111

rmdir –p dir3 --【失败:rmdir只删除空目录,递归删除目录的参数是-r而不是-p】

rmdir –p d2 --【失败:不存在d2这个目录】

mv stu.txt ex.sh dir1 --将stu.txt和ex.sh移到dir1中

rm dir1  --【失败:rm默认删除文件,而dir1是目录】

rm dir1 –r  --递归删除dir1下所有的子目录

rm dir2  --【失败:rm默认删除文件,而dir2是目录】

rmdir dir3  --【失败:rmdir只删除空目录,dir3非空】

rmdir 删除非空文件夹,递归删除 -r  ;

rm 默认只删除文件  -r   递归删除目录,包括其内容(子目录) - 目录和文件 ;-f  不提示;

mkdir -m 777 aaa  创建拥有(rwx权限)的文件夹aaa ; 

mkdir  -p  aaa/bbb/ccc  递归创建目录 ;

mkdir -v aaa   创建时返回创建信息 “mkdir:已创建目录  aaa ”  ;

touch aaa.txt  创建aaa.txt文件;

4.练习ln命令,理解每个命令功能和显示信息的意义

cd  --切换到当前用户的主目录

ln –s /var/materials ma  --为/var/materials创建软链接ma

ln -s /etc/passwd pw --为/etc/passwd创建软链接pw

ls –la .  --显示主目录下所有的文件(包括隐藏文件)的详细信息

cat pw  --显示pw(链接文件的内容)

cd ma --返回到主目录下ma

ls –ld .  --显示/ma下所有的目录的详细信息

ls –ld .. --显示父目录(上一级目录即当前用户主目录)下所有的目录详细信息

cd  --返回到主目录

ls –ld ../其他同学学号--显示/home下其中一个用户的所有目录的详细信息

ls –ld /home/其他同学学号 --显示/home/下其中一个用户的所有的目录详细信息

ln  //创建硬连接

ln -s  //创建软连接,符号链接

硬链接:与原文件共享同一个 i 节点,相当于原文件的一个别名;硬链接 不可以跨越文件系统 ,创建时原文件必须存在,不能给目录创建目录链接。

符号链接是一个独立的文件,有自己的 i 节点,内容保存的是指向真实文件的路径。可以跨越文件系统,创建时原文件可以不存在
5.练习管道及输出重定向

cd  --切换到当前用户主目录

ls | wc -l  --统计当前目录下目录/文件的总数

ls -l | grep ^- > txt   --将当前目录下所有文件的详细信息中以‘-’(普通文件)开头的文件写到txt中

ls -l | grep -v ^d | grep -v ^l | wc -l > cnt  --将当前目录下所有文件的详细信息中除了以dl开头的文件传给wc,wc统计数量写到cnth中

6.进程管理

ps  --显示当前进程

ps -aux  --aux 显示所有包含其他使用者的进程详细信息

ps -u root   --将root用户的进程信息过滤出来

top  --实时显示系统中各个进程的资源占用情况

kill -9 201  --结束pid为1234的进程

grep -v  显示不包含匹配文本的所有行;

grep -n 显示匹配行及行号;  grep -n int *average.c* -- 从average.c文件中找出 'int' 字符并显示;


find 【路径】-name  【文件名】 输出搜索结果,并且打印;

find 【路径】-user  【文件名】显示搜索文件的属性;


head -n 3 aaa.txt  输出aaa文件的前三行;

head +3 aaa.txt  输出aaa文件从第三行开始的行;

tail -3 aaa.txt  输出aaa文件倒数三行;


wc -c  统计字节数

wc -l 统计行数

wc -w 统计单词数


gzip test1.c  //压缩test1.c 只能压缩文件;--压缩后源文件消失;

gzip -d test1.c.gz    //解压缩;

bzip2 test1.c    // 后缀test1.c.bz2

bzip2 -d test1.c.bz2;  //解压缩;

tar -cvf home.tar ./home  //打包压缩/home文件夹

gzip home.tar ; //后缀名home.zip.gz;

tar -zxvf home.tar.gz; 

tar -cvf home.tar ./home ;

bzip2 home.tar ; //后缀名home.zip.bz2;

tar -jxvf home.tar.bz2;

(二)文本处理

1.新建c源程序文件feb.c,编译执行,显示费波纳奇数列:

vi feb.c   --进入编辑

gcc feb.c -o feb  --编译

./feb  --运行

2.分别打开stu.txt文件,练习vi命令模式命令:
①移动光标

[快捷键]

光标移动至当前行的行首:0 或 ^

光标移动至当前行的行尾$

光标移动至当前行只有 n 行的行尾,n为数字n$

:set nu 显示行号

:set nonu  取消设置行号

定位光标到行尾:G

光标移动到文件开头:gg

光标移动至文件末尾:G

光标移动到第 n 行,n 为数字:nG--定位光标到第8行:8G

编辑模式下使用的快捷键,可以将光标快速定义到指定行的行首::n

②查找、删除、修改字符

查找:/字符串若查找下一个按n

删除:x,3x删除光标后3个字符//dw,删除一个词

修改(替换):

把2-5行的每一行的第一个:改成?

:2,5 s/:/?

把2-5行的每行的:全部改成?

:2,5 s/:/?/g

③删除、粘贴行

删除行:dd,5dd删除5行

粘贴行:p

④复制、粘贴行

复制单个词yw

yw之后p复制到光标后的位置

复制光标所在行yy

复制光标所在接下来的5行:5yy

粘贴在光标下一行:p

撤销最近一次修改前的状态u

⑤恢复编辑

恢复到文档的初始状态::e!

3.打开passwd文件,练习vi末行命令
①删除、复制、移动多行

复制光标所在接下来的5行:5yy

删除光标所在接下来的5行:5dd

②写文件、读文件,指定文件路径(另存)

文件另存:

首先需要按ESC键回到命令模式;
然后输入命令:w fileName,文件不存在会自动新建文件。
用法示例:
另存为文件为Feb.cpp
:w /home/s2022013428/Feb.cpp

4.替换--将文件中每行“软件工程”替换为“软工”

替换--将文件中每行“软件工程”替换为“软件”

:%s/old/new/g  

%代表全局 s表示替换操作

:%s/软件/软工

5.练习匹配文本文件命令,理解每个命令功能和显示信息的意义

grep ^2019 stu.txt  --显示出在stu.txt中以2019开始的所有学生信息

grep 3$ stu.txt --显示出在stu.txt中以3结尾的所有学生信息

grep -n 2019013[0-9][0-9][13579] stu.txt  --显示在stu.txt中学号信息符合'2019013xxy'(x为任意数字,y是奇数)的所有学生信息(显示每个学生所在行数)   //注意 搜索的内容不需要加引号

grep 软件1901 stu.txt > rg191.txt  --将stu.txt中软件1901的学生信息重新写到rg191.txt中

grep 软件1902 stu.txt > rg192.txt  --将stu.txt中软件1902的学生信息重新写到rg192.txt中

grep 软件1903 stu.txt > rg193.txt  --将stu.txt中软件1903的学生信息重新写到rg193.txt中

lastlog | grep Never | wc -l --统计上次从未登录的用户数量

lastlog | grep -v 从未登录 | wc -l  --统计上次登录过的用户数量

wc rg192.txt  --统计在rg192.txt中的行数和字节数

wc -l rg192.txt  --统计在rg192.txt中的行数

(三)用户和文件安全

1.使用ls -l命令,浏览目录 ./、/、/etc、/home、/sbin、/bin及其下文件的权限,理解显示信息的意义

ls -l ./  --将当前用户主目录下的详细信息显示出来

ls -l /  --将根目录下【root】的详细信息显示出来

ls -l /etc  --将根目录下etc目录中的详细信息显示出来

ls -l /home  --将根目录下所有用户目录的详细信息显示出来

ls -l /sbin  --将根目录下sbin目录下的详细信息显示出来

ls -l /bin  --将根目录下bin目录的详细信息显示出来

ls -l:

第一个字段的第一个字母表示文件类型,其他九个字母表示所有者、组、其他用户的权限,第二个字段表示文件的连接数,第三个字段文件所有者的登录名,第四个字段是所有者的组的名字,第五个字段是文件的大小(字节单位),第6-8字段表示最近修改的日期时间,第九个字段表示文件名;

2.新建用户user1、user2,并设置口令

useradd user1

passwd user1

useradd user2

passwd user2

//useradd -m -s /bin/bash user1  --添加用户

//su -  --切换到root用户 

3.切换到不同的虚拟控制台终端,使用分别用user1、user2身份用户登录系统,使用ls –l或ls -al命令查看文件的权限,理解显示信息的意义

adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

4.建立c源程序文件、编译产生可执行文件,查看、改变这些文件的权限,显示、打开或执行文件,理解显示信息的意义

   //建立两个整数相加的c源程序文件

   //源文件:

   #include <stdio.h>

   int main(){

        int m,n;

        printf(“请输入两个数字:”);

        scanf(“%d%d”,&m,&n);

        printf(“两个数的和是:%d\n”,m+n);

        return 0;

   }

使用gcc把C文件编译成可执行文件可分为四步:预编译、编译、汇编、连接。

1、预编译(生成.i文件)

预编译器cpp把源文件和相关的头文件(如实例代码中的头文件stdio.h)预编译成一个.i的文件。

执行的命令:gcc -E sum.c -o sum.i

预编译的作用:

a、处理所有的“#include”预编译指令

b、处理所有的"#define"指令,将代码中所有的"#define"删除,并展开所有的宏定义

c、处理所有的条件预编译指令,如#if #elif #else #ifdef #ifnodef #endif等

d、删除所有的注释

e、添加行号和文件名标识,以便产生错误时给出提示信息

2、编译(生成.s文件)

编译器gcc把预处理后的文件进行语法分析、语义分析以及优化后生成汇编代码文件。

执行的命令:gcc -S sum.i -o sum.s

3、汇编(生成.o文件)

汇编器把汇编代码文件转换成中间目标文件

执行的命令:gcc -c sum.s -o sum.o

4、链接(生成可执行文件)

链接器ld把目标文件与所需要的所有的附加的目标文件(如静态链接库、动态链接库)链接起来成为可执行的文件

执行的命令:gcc sum.o -o sum

//vim sum.c即进入vim编辑环节,将原代码编辑,保存代码之后键入命令ls就可以显示sum.c文件,之后键入“gcc sum.c -o sum”和“./ sum”,然后ls命令就可以得到sum文件(可执行文件),用ls -l命令就可以得到源文件sum.c和可执行程序文件sum的详细信息(读写权限等)

5.建立目录、在目录下建立c源程序文件、编译产生可执行文件,查看、改变目录的权限,查看、打开或执行文件,理解显示信息的意义

键入命令mkdir Sum,在当前用户主目录下创建Sum目录,用来存放两数相加的源程序,ls查看当前用户根目录下已成功创建Sum目录,cd Sum切换到Sum目录下,vi sum.c进入源程序的命令模式,之后i进入编辑当前中,将3中的代码编辑后保存,按照gcc sum.c -o sum和。/ sum的命令编译并运行源文件,在当前Sum目录下ls -l,可得到sum.c和sum的详细信息(包括读写权限)

思考题
1.如何将一个已经登录的用户踢出Linux系统,写出思路、步骤及相关命令

用 w 命令查看信息

②找到想踢出的用户对应的tty

命令1:pkill -kill -t pts/1

命令2:fuser -k /dev/pts/1

再次查看w命令是否已经踢出用户

2.如何统计当前系统的用户数,写出思路及相关命令

方法1:who|wc -l    --呈现当前登录系统的用户数

思路:who命令列出当前登录的用户信息,wc命令来统计用户数量

方法2:cat /etc/passwd|wc -l  --呈现当前系统中的用户数量

思路:将/etc/passwd文件中的内容输出给wc命令,wc命令来统计文件中的行数,行数即用户数,可以得到当前系统中的用户数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值