Who/date命令
那么Who i am和whoiam有什么区别呢?
linux中who am i 和whoami 命令是不一样的,简单来说:
who am i :是记录登录shell时的用户,你以什么用户登录就显示什么
whoami:这个才是当前系统的有效用户
举个例子:
我以root用户登录系统,然后执行su - hwangchen 切换到hwangchen用户下,此时who am i 显示的是root用户,而whoami则显示hwangchen用户。
cal命令
更正命令
Backspace键可以删除单个字符
ctrl+u撤销命令行的整行输入
中断命令的执行用组合键ctrl+c
运行刚才执行过的命令
用上下光标键选择命令后,回车即可,很方便的,一定要记住!
文件系统
文件系统是
-
对象及其属性的说明
- 文件、目录和存储空间
-
对对象进行操作和管理的软件集合
- 文件的读、写操作,文件的共享和保护,文件存储空间的管理、文件目录的管理等
-
文件系统接口
- 命令接口、图形接口、程序接口
文件系统的布局
- 超级块
- 文件系统的关键参数:文件系统类型的标识,块的大小和数量,文件的最大长度等
- 空闲块
- 位图或者链表表示空闲空间
- i节点列表:描述文件信息的列表
- 根目录
- 文件和目录区
常见的文件系统类型
-
Dos、Fat16、Fat32、NTFS
-
Ext、Ext2、Ext3、 Ext4
-
JFS(IBM)、XFS(大文件)
-
NFS(网络上与它人共享目录和文件)、Smb、 ISO9660
…… -
LVM、RAID
文件系统的逻辑层次结构
-
Unix/Linux文件系统的逻辑层次结构
- 树型结构的分级文件系统
- 最高层目录称为根目录,用符号/表示,所有其他目录是他的直接或者间接的分支
重要目录介绍
-
/home目录
- 默认的系统合法用户的家目录
- 用户登录后默认位于自己的家目录
- 例如/home/tom、/home/mary
-
/root目录
- root用户的家目录
-
亲自实践验证
-
用系统合法的普通用户登录,出现shell提示符后,输入命令pwd,看普通用户所在的目录是否为自己的家目录
-
用root用户登录,出现shell提示符后,输入命令pwd,看root用户所在的目录是否为目录/root,即自己的家目录
-
/usr目录
-
/usr/local #本地安装程序目录
-
/usr/share/doc #本地安装程序文档目录
-
/usr/src #程序源码目录
-
/usr/X11R6 # XWindow系统的文件
-
/usr/share/man #手册页目录
-
/usr/bin #二进制文件目录
-
/usr/sbin #二进制文件目录
-
/usr/lib #库文件目录
-
-
系统可执行程序(二进制文件)的路径
- /bin
- /usr/bin
- /sbin
- /usr/sbin
- /usr/local/bin
- /usr/local/sbin
-
一般sbin下的可执行程序是系统管理员才有权限执行的
-
/boot目录
其中存放了多重启动程序(grub、lilo)的文件
你可以先尝试学习/boot/grub/grub.conf文件的修改(/etc/grub.conf)
还会存放编译后的内核文件,名字类似vmlinuz-2.6.9* -
实际工作中,考虑安全性,会多分一个分区,把/boot分区和根分区放在两个不同的分区中
-
/lib目录
- 应用程序共同使用的标准功能(函数库),从应用程序中分离出来,存储在系统中,程序编译、链接时,需要的时候会调用这些库文件
目录/usr/lib中也存放了大量的库文件
- 应用程序共同使用的标准功能(函数库),从应用程序中分离出来,存储在系统中,程序编译、链接时,需要的时候会调用这些库文件
-
/etc目录
- 系统配置文件所在的目录,只有root用户才有权限修改
- 可以尝试学习下列文件的配置
- /etc/inittab,
- /etc/passwd, /etc/group, /etc/motd,
- /etc/hosts
- 作为一名专业的Unix/Linux系统管理员,你要经常和这个目录下的文件打交道
-
mnt目录
- 临时挂载点
- 通常会在mnt下建立cdrom目录、floppy目录、C目录、D目录,USB目录等,方便管理
- 现在的很多发行版本已经设置了自动挂载功能,你如果注意观察路径,它们实际也是挂载到了/mnt目录下的一个子目录
- mkdir /mnt/UDisk #创建一个挂载点
- fdisk -l #查看系统检测到的磁盘分区列表,重点是增加的外设的设备名,例如/dev/sda1
- mount /dev/sda1 /mnt/Udisk #挂载
- cd /mnt/Udisk #切换到挂载点目录
- ls #查看到u盘上的内容
-
挂载光s盘
- mount /dev/cdrom /mnt/cdrom
-
指定字符集,解决乱码问题
- mount -o iocharset=gb2312 /dev/cdrom /mnt/cdrom
-
取消挂载使用umount,两种方式
- umount 挂载设备名
- umount 挂载点
-
偶尔会出现,umount一个设备,或者一个挂载点时,提示设备忙(busy),无法卸载
- 是不是这个挂载点下的程序或者文件正在使用
- 是不是你在挂载点目录下执行了umount命令,cd到父目录或者其他目录,再执行umount
- 不是以上问题,尝试命令:umount -f 设备名(挂载点)
-
/dev目录
系统中的所有硬件在/dev目录中对应一个文件,内核通过写入和读取这些文件,连接到设备驱动程序,从而实现对硬件的访问。 -
/tmp目录
- 一个临时目录,一些程序在运行时生成的临时文件,在删除前都存放在这里
-
/var目录
- 系统运行时产生的信息,最常用的是查看此目录下的日志文件
- /var/spool/mail/下的各用户的邮件队列
- /var/log/目录下的各种服务的日志文件
-
/lost+found
- 多用户、多任务情况下,系统从故障中恢复,如果有些文件无法确定原存储位置,就被放在此目录中
-
Linux FHS(Filesystem Hierarchy Standard)
- 一些发行版本个性化的目录,看随盘发布的用户手册,例如manual文件夹中
-
.目录表示用户的当前目录
-
… 目录表示当前目录的父目录
-
切换到父目录可以输入命令 cd …
-
家目录、主目录
- 用户登录后默认位于的目录,在目录内用户拥有绝对的权限
-
按颜色可以区分文件类型
- 蓝色显示表示是目录
- 黑色显示表示是普通文件或者硬链接文件
- 绿色显示表示是可执行文件
- 淡蓝色表示是软链接文件
- 红色闪烁(红色背景)表示出错的软链接文件
- 红色表示压缩文件
-
文件名以“.”开头的文件或者目录称为隐藏文件或者隐藏目录
-
多用户环境下,存储各自用户状态的文件通常放在用户家目录下,以隐藏文件的形式存放
-
程序自己的配置文件,放在一个目录中,不希望用户修改,通常也会以隐藏形式存放
-
pwd
- print working directory的缩写,打印当前工作目录的绝对路径
- 任何时候随时随地,你不知道自己在哪里了,都可以使用此命令
-
cd [目录]
- change directory的缩写,改变当前工作目录
- cd #默认回到用户家目录
- cd /usr/local #切换到/usr/local目录下
- cd … #切换到父目录
- cd …/X11R6 #切换到父目录的X11R6子目录中
-
ls 显示当前目录下的文件或者文件夹
- 习惯性的,进入任何一个目录,都需要输入命令ls查看目录下的有哪些文件
- ls -a #显示所有文件
-
mkdir 文件夹名
- 在当前目录下建立一个新文件夹
- 例如 mkdir movie #在当前目录下建立一个文件夹
- 注意要在有写权限的目录下才能创建成功,比如你自己的家目录下
-
mkdir [选项] 目录
- make directory的缩写,创建目录
- p是大家需要掌握的一个选项,用来一次创建多层目录
- mkdir music #在当前目录下创建一个子目录,命名为music
- mkdir /usr/local/redOffice #在目录/usr/local下创建一个子目录,命名为redOffice,不论自己当前在什么目录下
- mkdir -p music/yanni/CD1 #一次创建多层目录
- 还可以在创建目录的同时指定权限,即使用-m选项,学习文件系统权限时,我们补充上这个选项
-
rmdir 目录
- remove directory的缩写,只能删除空目录
- 需要注意的一点就是什么是空目录?
- 目录下除了隐藏的.和…目录外,其他什么目录和文件(包括隐藏的)都没有。
-
rm 文件名
- 删除当前目录下的文件
- 例如rm a.txt
-
rm -r 文件夹名
- 删除当前目录下的文件夹及子文件夹
- 例如 rm -r movie
-
rm [选项] 目录或者文件
- remove的缩写,删除文件或者目录
- 常用选项-f、-r、-i
- rm -i readme.txt #删除文件,同时给出确认提示
- rm -f readme.txt #删除文件,不用确认
- rm -r /usr/local/music #删除目录不管目录空否
-
你会发现rm readme.txt删除文件时,不用-i参数,也会给出确认提示?
- 因为你执行rm时,系统实际上是执行rm -i,做了隐含的默认设置,安全起见!
- 提示符下输入alias,就可以看到一些系统隐含的命令的定义了,不同发行版本可能设置的不同
-
cat [选项] [文件名]
concatenate的缩写,连续显示文件内容
cat readme.txt #显示文件readme.txt的内容
注意:如果文件内容很多,一屏幕显示不下,只能看到文件的最后一屏幕的显示内容,所以常用于看小文件,内容不超过一屏幕的
cat file1 file2 file3
#文件中间用空格分开,可以同时显示多个文件的内容 -
cat -n readme.txt
- 不光显示文件,还会显示行号
- cat文件还有创建文件和连接文件的功能,要和shell重定向结合使用
-
安装rpm格式的软件包
-
红帽包资源管理器,用于管理rpm格式的程序
-
rpm -qa | grep ***
-
查询系统是否安装***的rpm包
-
rpm -e ***
-
删除***程序
-
rpm -ivh ***.rpm
-
安装 ***程序
-
rpm -Uvh ***.rpm
-
升级***程序
-
用rpm安装的程序,可执行文件一般安装在/usr/bin目录下,在任意目录下都可直接输入程序名称运行程序
-
举例安装一个扫描软件nmap
- rpm -qa | grep nmap
- rpm -e nmap
- rpm -ivh nmap*.rpm
- nmap 127.0.0.1
- nmap fedora.unix-center.net
-
安装后,进入安装目录,一般可以看到和安装程序的名字一样的绿色文件,使用命令 ./绿色文件名 就可以执行程序
也有的可执行程序放在安装目录下的bin目录中,先用cd命令进入bin目录(cd bin),然后再用命令 ./绿色文件名 执行程序
这样安装后的程序是纯绿色软件,删除程序时,删除整个安装目录即可 -
举例nmap程序的具体安装步骤如下
- tar -jxvf nmap-3.93.tar.bz2
- cd nmap-3.93
- ./configure - -prefix=/usr/local/namp3.93
- make
- make install
- cd /usr/local/nmap3.93/bin
- ./nmap localhost
-
删除namp程序
- rm -fr /usr/local/namp3.93
温故而知新
- 文件系统
- 当前路径、工作路径、相对路径、绝对路径
- 根据颜色区分出文件类型
- 文件命名规则
- 文件系统命令:pwd、cd、mkdir、 rmdir、rm、cat
文件系统命令
-
shell重定向
-
wc、文件名替换
-
head、tail
-
df、du
-
cp 、mv、ln
-
more、less
-
cat 回车,然后输入任意字符串再回车 ,有什么效果?
-
Unix/Linux中,shell(命令解释器)默认的输入设备是键盘,输出设备是终端屏幕
-
shell重定向功能可以临时改变命令执行时默认的输入和输出设备
- 输入重定向: <
- 输出重定向: > 和 >>
-
输入重定向<
-
从文件中获得命令需要的输入数据,适合数据源已经定义好,可重复利用
-
例如cat < test.txt
- 显示文件test.txt的内容
-
wc < test.txt
- 统计文件readme.txt中的行数,单词数和字符数
- 统计文件readme.txt中的行数,单词数和字符数
-
很多命令可以直接处理输入重定向,使用时可以省略重定向符号
-
-
输出重定向>
- 将命令执行后的结果输出/保存到文件中
- vi编辑器中如何实现?
- ls > conten.txt
- 查看文件content.txt的内容,就是ls命令的执行结果
- 使用输出重定向后,命令的执行结果就不会显示在终端屏幕上了
- 输出重定向>>
- 将命令的执行结果追加输出/保存到文件中
- 例如
- ls | wc -l >> content.txt
- 将当前目录下文件和目录的个数追加到文件content.txt中
- 与cat命令结合使用
- 创建文件
- cat > file1.txt 回车后,输入文件的内容,新行行首输入结束后按ctrl+d,回到shell提示符下
- cat file1.txt就可以看到结果了
- 利用学习过的命令,实现拷贝文件和合并文件呢?
- wc:利用目前所学的命令,统计系统当前登录用户名及用户数,要求只有一条:不能人工计数,你有几种实现办法?
- 利用目前所学的命令,统计系统中已经创建的所有用户名及用户数,要求只有一条:不能人工计数,你有几种实现办法?
文件名替换
-
Shell命令中可以使用一些特殊符号,称之为通配符(wildcard)
-
- #匹配任意字符串,包括空串
-
? #匹配单个字符
-
[ list ] #匹配任意list中指定的字符
-
[ ! list ] #匹配任意不在list中指定的字符
-
[c1-c2] #匹配c1-c2中的任意单个字符
-
{string1,string2,…} #匹配其中一个字符串
-
举例
- ls file?
- ls *.cpp
- ls file[123]
- ls file[1-5]
- ls file[!456]
- ls file{zip,tar}
- head
- 举例
- head file1.txt
- head -3 file1 file2 file3
tail
- 举例
- tail file1
- tail -3 file1
- tail -n 3 file1
- tail -c 3 file1
- tail -n 3 file1 file2 file3
- tail -c 3 file1 file2
- tail -f /var/log/messages #动态看系统日志!!
df (disk free)
- 举例
-
df -hT
-
df -i /dev/sda1(3,5)
注意:(3,5)是什么意思?
-
df -H /dev/sda3
-
du
du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh
- du常用的选项:
- -h:以人类可读的方式显示
- -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
- -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
- -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
- –apparent-size:显示目录或文件自身的大小
- -l :统计硬链接占用磁盘空间的大小
- -L:统计符号链接所指向的文件占用的磁盘空间大小
- du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量
- du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。
- du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序
- du -sk filename 查看指定文件大小
练习:
- 统计文件 /etc/passwd
- 统计目录 /boot
- 创建一个文件test.txt,里面的内容就是一个数字3,然后统计这个文件的大小。
一个整数四个字节
补充:
ls
-
ls -l |grep “^-”|wc -l或find ./company -type f | wc -l 查看某文件夹下文件的个数,包括子文件夹里的。
-
ls -lR|grep “^-”|wc -l 查看某文件夹下文件夹的个数,包括子文件夹里的。
-
ls -lR|grep “^d”|wc -l
创建文件和目录
删除文件和目录
复制文件和目录
移动文件和目录
cp
-
cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能。
-
cp 命令的基本格式如下:
[root@localhost ~]# cp [选项] 源文件 目标文件 -
选项:
-
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件;
-
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-
-r:递归复制,用于复制目录;
-
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。
-
需要注意的是,源文件可以有多个,但这种情况下,目标文件必须是目录才可以。
-
mv
注意:
-
使用mv和cp 命令时注意权限问题
-
mv和cp接受两个以上参数时,最后一个参数一定是目录!!
-
上机实践,理解并实现如下操作
- 复制/移动文件到另一个目录下,名字不变
- 复制/移动文件到另一个目录下,改名字
- 复制/移动目录到另一个已经存在的目录下,作为其子目录,名字不变
- 复制/移动目录到另一个已经存在的目录下,作为其子目录,改名字
ln
- 用ls -l 看到的文件的详细信息中包含硬链接的个数
- 硬链接(新名字)
- 软链接(类似windows中的快捷方式)
- 当前工作路径是/tmp
- ln -s /usr/david/REPORT report
- 执行命令后当前目录下产生淡蓝色软链接文件report
cp、ln、ln -s
- cp是复制文件,两个文件分别占用物理磁盘,修改一个文件不会影响另一个文件
- ln是给文件创建新名字,硬链接(新文件)是原文件的一个新属性, 不能跨越文件系统分区建立硬链接
- 硬链接有防止误删除的作用,删除文件时,只是删除它的一个名字,只有硬链接数是1 时执行删除操作,系统才删除该文件
- 软链接类似windows中的快捷方式,源文件或者目录被删除后,软链接将失效
more
- 举例
- more file
- ls | more #内容列表很多时,可以分屏显示