2021-01-24 大数据课程笔记 day4

时间煮雨
@R星校长

cd 命令练习:

我们知道 hadoop 这个用户的主文件夹是 /home/hadoop/ ,而 root 用户的主文件夹是 /root/ ,我们使用 root 账号登录,完成以下练习:
cd [绝对路劲或相对路径或特殊符号]
如何从其它目录切换目录到 hadoop 用户的主文件夹:
方式一:绝对路径的方式
在这里插入图片描述
方式二:特殊符号
在这里插入图片描述
如何回到 root 用户自己的主文件夹?
方式一:绝对路径的方式
cd /root/
方式二:特殊符号方式
cd ~

如何回到刚才访问的目录(不论是哪一个目录)?
cd –

先使用命令 cd /var/spool/mail/ 进入指定目录,然后如何使用相对路径的方式,进入和 mail 同级别的 gdm?
cd …/gdm

pwd 练习

pwd [-P] Print Working Directory
参数:-P 显示出当前的路径,而非使用连接(link)路径

练习:单纯显示当前的工作目录:
在这里插入图片描述
练习:显示出时间工作目录,而非连接文件本身的目录名
在这里插入图片描述

mkdir(make directory新建目录)

mkdir [-p] 目录名称
参数:-p直接将所需要的目录(包含上层目录)递归创建出来
mkdir [-m 权限值] 目录名称

1 在 /tmp 目录下创建一个名为test的新目录:
#mkdir test
2 请到 /tmp 目录下创建一个新目录:/test1/test2/test3/test4(centos6.5下创建不成功,也没有错误提示)
在这里插入图片描述
注意:不建议大家使用 -p 创建多层目录,主要是担心名称写错,导致很多错误目录。
3 在/tmp目录下创建一个权限为 rwx–x--x 的目录 test2
#mkdir –m 711 test2
tmp#ls -l
在这里插入图片描述
仔细查看以上权限部分,如果没有使用 -m 强制设置权限,系统会指定一个默认的权限(后续再详细讲解)

rmdir (删除“空”目录)

#rmdir [-p] 目录名称
参数:-p 连同上层“空”的目录一起删除
在这里插入图片描述
另外了解 rm –r test (可以将 test 目录整个删除,不管 test 是否为空目录)

文件与目录的查看

在这里插入图片描述

cp 复制文件演示

不同用户的某些选项是有区别的:
在这里插入图片描述

rm(移除文件或目录)

在这里插入图片描述

mv(移动文件与目录,或重命名)

在这里插入图片描述

cat 使用范例

范例一:查看 /etc/issue 这个文件的内容:
在这里插入图片描述
范例二:承上题,如果还需要打印行号:
在这里插入图片描述
打印出行号,对于大文件要找某个特定的行时,有点用处,如果不想要编排空白行的行号,可以使用 “cat –b /etc/issue”
在这里插入图片描述
范例三:将 /etc/man.conf 的内容完整的显示出来(包含特殊字符)
[root@localhost ~]#cat –A /etc/man.config
显示内容如下图(注:我们看到的数据仅仅是最后一部分数据,可以通过命令 “more /etc/man.config” 验证)
在这里插入图片描述
cat 是 concatenate 的缩写,其功能是将一个文件的内容连续输出。cat 是 Concatenate 的缩写,其功能时间一个文件的内容连续的输出。该命令适合看行数较少的文件。另外,需要查看一般 DOS 文件时,可以通过 -A 选项来显示换行符和[tab]。
使用 cat –A 文件名 显示时文件中的 [tab] 会以 “^I” 表示,而空格依然显示空格。
范例四:演示 cat –A 显示文件内容时,[tab] 和空格的区别。
步骤一:使用命令: “touch testa” 在当前文件夹中新建文件 testa
步骤二:使用命令 “vi testa” 编辑该文件,添加内容:
[tab] hello,tab
(四个空格)world,space
然后保存并退出。
步骤三:使用命令 “cat –A testa” 查看文件内容
在这里插入图片描述
补充:Linux 系统中断行符是以 ”$” 表示,所以我们发现每一行的后面都有 $ 符号,而 Windows 系统则不太相同,它的断行符为 ^M$

nl(添加行号打印)范例:

范例一:使用 nl 打印 /etc/issue 的内容
在这里插入图片描述
注意:这个文件其实有三行,第三行为空白(没有任何字符),因为他是空白行,所以 nl 不会加上行号,如果确定要加上行号,可以这样做:
在这里插入图片描述
行号加上来了,那么如果要让行号前面自动不上 0 呢?可以这样做:
在这里插入图片描述
自动在自己字段的地方不上 0 了,默认字段是六位数,如果要改成 3 位数呢?
在这里插入图片描述
od 显示非纯文本文件范例(了解)
在这里插入图片描述

touch 命令范例

注意系统默认时间不是东八区时间,而是比北京时间晚了 15 个小时

范例一:新建一个文件并观察时间
在这里插入图片描述
注意该文件大小为 0 ,在默认状态下,如果 touch 后面跟文件名,则修改该文件的三个时间(atime/ctime/mtime)都会更新为当前时间。若文件不存在,则会创建一个新的空文件(如上)。
范例二:将 ~/.bashrc 复制(完全属性 cp -a )成为 .bashrc ,检查其日期
在这里插入图片描述
在这里插入图片描述

手动下载 rpm 的网址:
http://www.rpmfind.net/linux/rpm2html/search.php

Linux 2 简单shell命令
命令提示符详解

在这里插入图片描述
用户名@主机名 当前目录 #系统权限 $普通权限

命令格式

命令 选项 参数 (三者之间要有空格,区分大小写)
command [-options] [args]
[args]: 参数(多个参数之间用空格分隔)
案例演示
在这里插入图片描述

获取命令的帮助

1、使用help查看内建命令的帮助(enable查看内建命令)
2、info 命令
3、!!! 命令 --help
4、!!!#man 命令
5、!!!查手册
6、搜索引擎

help

在这里插入图片描述
但是 help 只能查看内建命令,比如我想查看 mv 的帮助信息就不行
在这里插入图片描述
那么我们怎么知道哪些是内建命令呢?
在这里插入图片描述
在这里插入图片描述
enable 也不用背,该方式比较费时间,help 无法使用时,根据提示换其他帮助方式就 ok 了

命令 --help

在这里插入图片描述

查手册&搜索引擎

手册见《参考手册&资料》
搜索:必应 www.bing.com
谷歌/百度等

man

当前虚拟机中不能直接使用 man ,默认是没有安装的,不识别 man 命令
在这里插入图片描述
所以需要安装,安装 man 和 man-pages 手册,查看命令的帮助信息
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
q 退出命令查看
看到的全是英文,是不是很酸爽,慢慢多看看就好了。如果你英语烂到完全看不懂,那我再教你一招,汉化 man 提示信息。
要想汉化 man 提示信息,系统中需要安装 man-pages-zh-CN 软件包。默认情况下,系统自带的 yum 源不包含 man-pages-zh-CN 。
在这里插入图片描述
默认的源存放目录:
在这里插入图片描述
所以下载后的第三方 yum 源 epel 也保存到该目录下,使用yum命令时会去该目录下解析后缀名为 repo 的文件
在这里插入图片描述
wget 不能使用,需要先安装,安装 wget ,否则无法通过该命令进行下载
在这里插入图片描述
然后将 epel 的源放到本地,然后清除 yum 本地缓存,重新生成缓存
在这里插入图片描述
是不是可以使用了呢,相信你已经迫不及待的想要测试一把了
在这里插入图片描述
在这里插入图片描述
发现还是英文,怎么回事?
这是因为虽然你安装了 man 的中文包,但是系统的语言还是英文环境,
在这里插入图片描述
所以需要修改系统的语言环境
在这里插入图片描述
然后再次测试便有中文信息了。
但是这样修改这有效到断开连接,或者下次重启系统。如何才能长期有效呢?

在这里插入图片描述

man的使用

enter向下一行
空格按页向下翻 b向上翻页
p直接翻到首页
查找按 /要查找的内容,查找 下一个/上一个:按n/N;
退出按q

man

  • 1用户命令(/bin,/usr/bin,/usr/local/bin)
  • 2系统调用
  • 3库函数
  • 4特殊文件(设备文件)
  • 5文件格式(配置文件的语法)
  • 6游戏
  • 7杂项(Miscellaneous)
  • 8管理命令(/sbin,/usr/sbin,/usr/local/sbin)

指定查看某种帮助:
[root@node1 ~]# man 2 read
在这里插入图片描述
[root@node1 ~]# man read
在这里插入图片描述

echo

[root@node1 ~]# help echo

在这里插入图片描述
echo -n 表示不要另起新行
在这里插入图片描述
-e 表示解释逃逸字符
在这里插入图片描述

test 命令

计算 3 > 2 的结果,打印返回值,计算 3 < 2 的结果,打印返回值。
echo $? 打印上一行命令的执行结果

在这里插入图片描述
成立返回 0(true),不成立返回 1(false)

在这里插入图片描述
[] 和内容之间一定要有空格,否则抛错。

环境变量:PATH

当在 shell 中执行命令的时候,默认到 PATH 指定的路径中查找可执行文件。
如果在 PATH 中的多个目录都包含该可执行文件,则执行最先找到的。
在这里插入图片描述
如果找不到,这提示命令不识别

type 和 file

type 命令:外部命令和内部命令
type 打印一个字符串的类型,可能的值为:别名,内置命令,函数,关键字,可执行文件或者什么都不输出(不是前面的类型)

操作系统:kernel 内核 + shell 壳

查看 cd 命令的类型:
在这里插入图片描述
cd 是一个 builtin 命令,也就是 bash 内置的命令

查看 yum 命令的类型:
在这里插入图片描述
yum 是外部命令

file 命令:检查文件的类型
在这里插入图片描述
yum 命令是外部命令,它的文件是 python 脚本类型文件
在这里插入图片描述
ls 是二进制可执行文件(ELF)

ls

ls 命令用于列出目录内容
在这里插入图片描述
添加 -l 以长格式输出,列出根目录下内容的详细列表
在这里插入图片描述
也可以后面跟多个目录,列出多个目录的内容
在这里插入图片描述
也可以通过命令的别名列出详细列表
在这里插入图片描述

pwd

打印当前工作目录路径
在这里插入图片描述

cd

cd 用于更改 shell 工作目录,也就是切换目录 change directory cd
在这里插入图片描述
如果 cd 后什么都不写,表示直接回当前用户家目录
在这里插入图片描述
cd 后跟波浪线,也表示回用户家目录
在这里插入图片描述
cd 后也可以跟减号(-)用以表示回到最后一次切换之前的目录,多次使用减号在最近两个目录之间切换
在这里插入图片描述
root 用户可以直接通过绝对路径进到普通用户的家目录
在这里插入图片描述
也可以直接跟波浪线用户名表示直接进入到某个用户的家目录
在这里插入图片描述

ps

可以通过命令查看系统内进程信息
在这里插入图片描述
查看磁盘使用情况
在这里插入图片描述

进程查看命令

  • ps(process status) :将某个时间点的程序运作情况截取下来
  • 选项和参数
  • a :和输入终端(terminal) 关联的所有 process,通常与 x 一起使用,列出完整信息
  • x :后台进程,通常与 a 这个参数一起使用,可列出较完整信息
  • u :有效使用者 (effective user) 相关的 process

常用组合

  • ps aux 观察系统所有的程序数据 (常用)
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    以下为各选项的含义

  • USER:该 process 属于那个使用者

  • PID :该 process 的程序标识符。

  • %CPU:该 process 使用掉的 CPU 资源百分比;

  • %MEM:该 process 所占用的物理内存百分比;

  • VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

  • RSS :该 process 占用的物理的内存量 (Kbytes)

  • TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?, 另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

  • STAT:该进程目前的状态,状态显示与ps -l 的 S 旗标相同 (R/S/D/T/Z)

  • START:该 process 被触发启动的时间;

  • TIME :该 process 实际使用 CPU 运作的时间。

  • COMMAND:该程序的实际命令为何?

进入到 /usr 目录;usr 不是用户的意思,而是 unix software resources 的简写
在这里插入图片描述查看内容
在这里插入图片描述

mkdir

mkdir 用于创建目录
mkdir abc
mkdir a1 a2 a3

如果直接创建多层目录,则报错,因为默认只能创建最后一级目录
在这里插入图片描述
可以添加 -p 选项,用以创建多层目录,因为系统发现某一级目录不存在的时候创建父目录
在这里插入图片描述
也可以在 mkdir 后跟多个目录,用于一次性创建多个目录
在这里插入图片描述
但是可以使用大括号高效创建相似的目录

在这里插入图片描述

rm

rm 用于删除文件
直接删除,需要确认 yes
rm file

在这里插入图片描述
添加-f选项可以不用确认强制删除
rm -f file
如果rm的参数是目录,则会提示需要迭代删除而不能成功
rm adir
在这里插入图片描述
此时可以添加 -r 参数表示迭代删除
rm -r dira
也可以使用 -rf 选项,迭代强制删除某个文件或目录,此命令慎用。
rm -rf dira
尤其是
!!! rm -rf /

cp

• cp 拷贝

cp 文件… 目标目录 拷贝文件…到目标目录,可以同时拷贝多个文件,文件名之间用空格隔开

在这里插入图片描述
cp -r 目录 目标目录
在这里插入图片描述

mv

mv 用于移动或重命名文件
• 移动文件/目录 #mv 源文件/[源文件1 源文件2] 目标

[root@node1 ~]# cd abc
[root@node1 abc]# mkdir -p x/y/z
[root@node1 abc]# mv install.log anaconda-ks.cfg x/y
[root@node1 abc]# ls x/y
anaconda-ks.cfg  install.log  z
[root@node1 abc]# mv x /root
[root@node1 abc]# ls -R /root/x
/root/x:
y
/root/x/y:
anaconda-ks.cfg  install.log  z
/root/x/y/z:
[root@node1 abc]#

• Linux中没有专门改名的命令,兼职改名工作:

[root@node1 abc]# ls
1dir  2dir  3dir  xdir  ydir  zdir
[root@node1 abc]# mv zdir zzdir
[root@node1 abc]# ls
1dir  2dir  3dir  xdir  ydir  zzdir
[root@node1 abc]#
Ln

用于创建硬链接或软链接

可以使用 ll -i 选项让 ll 打印文件的 inode 信息

[root@node1 ~]# cp /etc/profile ./
[root@node1 ~]# ll –i

创建硬链接

[root@node1 ~]# ln profile  ln1

创建软链接:让 ln2 指向 profile , 给 profile 创建软连接,相当于 windows 中的快捷方式

[root@node1 ~]# ln -s profile ln2

再次打印 inode 信息查看

[root@node1 ~]# ll -i

在这里插入图片描述
如果两个文件 inode 一样,表示两个文件( ln1 和 profile )实际上是同一个文件,硬连接。如果 inode 不一样,但是有 ln2->profile,表示 ln2 是 profile 的软链接。

在这里插入图片描述

ln: creating symbolic link `ln1': File exists

软连接删除不会删除源文件
硬链接删除后如果源文件没有硬链接,则文件被删除

如何在不使用 mv 的情况下移动文件?可以操作硬连接

文件系统命令
虚拟目录树!!!

在这里插入图片描述

df

查看系统挂载的磁盘情况

df

以人能看懂的格式显示

df -h

列出根目录下的内容

ls /

进到 boot 目录

cd /boot

在 linux 中用到了虚拟目录树

它的存在就是为了解耦应用和底层存储

mount

将光驱挂载到 /mnt 目录:

mount /dev/cdrom /mnt

进入到 /mnt 目录

cd /mnt

查看磁盘分区的挂载情况:

df -h
umount

卸载掉挂载的分区 /mnt

umount /mnt

注意卸载 /mnt 时,当前目录不能在 /mnt 下面,否则报出如下图所示提示:
在这里插入图片描述
再次查看磁盘分区的挂载情况:

df -h

重新挂载

mount /dev/cdrom /mnt

如果没有挂载,则访问父目录的文件夹

再次查看

df -h
虚拟目录树的各个目录用途

在这里插入图片描述

文件元数据

在这里插入图片描述
在这里插入图片描述

系统操作命令
du!!!

du 可以为目录递归地汇总每个 FILE 的磁盘使用情况

• du:文件系统的磁盘使用量或是目录使用量
ᅳ a :列出所有的文件与目录容量
ᅳ h :以人们较易读的容量格式(G/M)显示 重要
ᅳ s :列出总量而已,而不列出每个各别的目录占用容量
ᅳ k :以 KBytes 列出容量显示
ᅳ m :以 MBytes 列出容量显示

cd /usr
du

在这里插入图片描述
添加 -s 参数可以生成指定目录的汇总信息,也就是共占用多大的磁盘空间

du -s ./

添加 -h 参数可以显示为人类可以读懂的格式

du -sh ./

将路径写成 ./* 统计当前目录下每项内容占用的磁盘空间信息

du -sh ./*

在这里插入图片描述
查看 /usr/local 目录下共占用多大磁盘空间

stat

显示文件的元数据

stat    /etc/profile

change和modify的不同

modify 指的是文件内容被修改的时间
change 表示文件元数据被修改的时间
在这里插入图片描述

touch

touch 已存在的文件,抹平各个时间
touch 不存在的文件,则创建文件

文本操作命令
cat

直接查看一个文件的内容可以使用 cat , tac , nl 这几个指令

cat(concatenate):
在这里插入图片描述
cat 是 concatenate 的缩写,其功能时间一个文件的内容连续的输出。该命令适合看行数较少的文件。另外,需要查看一般 DOS 文件时,可以通过 -A 选项来显示换行符和 [tab]

tac (反向输出):

在这里插入图片描述
与上面的 cat 命令进行比较,是由最后一行先显示

tac 功能与 cat 类似,但是是由文件最后一行反向连续输出到屏幕上

nl (添加行号打印):
在这里插入图片描述
nl 可以将输出的文件内容自动的加上行号
在这里插入图片描述

more
[root@node1 ~]# more /etc/man.config

在这里插入图片描述
more 会在最后一行输出目前按显示内容的所占百分比,在现实过程中我们还可以输入以下命令进行进一步操作:
空格 (space): 向下翻页
回车 (Enter): 向下翻一行
“/字符串”: 在当前显示内容中线下查询字符串内容
“:f”: 立即显示出文件名以及目前显示的行数
“q”: 离开显示内容
“b” 或 [ctrl]-b: 代表回翻,该操作仅对文件有效
在这里插入图片描述

less

在这里插入图片描述
查看文件内容的时候可以进行一下操作:
空格:向下翻一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
“/字符串”: 向下搜索字符串内容
“?字符串”: 向上搜寻字符串内容
n: 重复上一次查询任务
N: 反向重复前一个查询任务
g: 到文件的第一行
G: 到文件的最后一行(注意大小写)
q: 离开文件

head

head (取出前面几行,Centos6.5 使用 /etc/man.config 文件):
在这里插入图片描述

tail

在这里插入图片描述

管道
[root@bk1 ~]# ps -ef |grep ssh
[root@bk1 ~]# yum list |grep mysql

如何显示文件中间的几行?

head  -m  profile  |  tail  -n

管道左侧的输出作为右侧的输入
echo "/" | ls -l 显示内容错误(不是预期的结果),因为 ls 不需要输入,只需要参数

Xargs

将前面输出作为后面命令的参数

echo  "/"  |  xargs  ls  -l  

• xargs:命令
– 1,在标准输入中读取到的内容!
– 2,自己的参数理解为一个字符串

• 模仿 shell ,做 blank 切分,第一个子字符串为命令
– 3,将步骤1的内容做为步骤2的命令的选项参数拼接起来
– 4,执行得到的结果

数据重定向
标准输入(stdin):编号为0
标准输出(stdout):编号为1
标准错误输出(stderr):编号为2
1>:以覆盖的方法,将正确的数据输出到文件;  
1>>:以累加的方法,将正确的数据输出到文件;  
2>:以覆盖的方法,将错误输出的数据输出到文件;  
2>>:以累加的方法,将错误输出的数据输出到文件;  



ls  -l  >>  ok1.log
ls  -l  >  ok2.log
ls  hello 2>/root/err.log
ls  hello / 1>/root/log.log 2>/root/err.log
ls 1>/dev/null
ls  2>/tmp/err.log
既向控制台输出,也向文件写入
ls  -l  /  |  tee  ok2.log
tee 命令,将输入分成两个输出

猜你喜欢

转载自blog.csdn.net/qq_44745905/article/details/113098139
今日推荐