一、启动、关机等基础操作
- date 显示日期命令
- date +%Y/%m/%d
- date +%H %M
- cal(calender) 显示日历
- 显示当前月份的日历 cal
- 显示2008年的日历 cal 2008
正确的关机方法
- 观察系统的使用状态(用来判断是否可以关机)
- 如果要查看当前有谁在线,可以发出who命令
- 如果要查看网络联机状态,可以使用netstat -a命令
- 通知在线用户关机时间:关机前,总要给在线用户一些时间来结束其工作,可以使用shutdown命令实现此功能。
- 使用正确的关机命令:shutdown和reboot
数据同步写入磁盘
- linux系统中,为了加快数据的读取速度,某些数据不会直接写入硬盘,而是暂存在内存中。万一关机,不正常断点等情况下,数据尚未写入磁盘,就会丢失,此时需要命令sync(只有root可以执行该命令)。
- 当然在shutdown/reboot命令均已在关机前进行了sync工具的调用。
- 重新启动reboot
reboot命令与shutdown -r now几乎相同。
二、 linux的文件属性与目录配置
1.用户与用户组
- (linux中任何一个文件都具有“用户、用户组和其他人”3个权限)
- 文件拥有者:linux是多用户、多任务的系统,不同的人可以同时使用主机,考虑到每一个用户的隐私和喜好的工作环境,文件拥有者就可以派上用处了。
- 用户组:用户组主要基于团队开发。可以进行简单的文件权限设置,就能限制其他用户组成员不能查看该文件。还可以让自己用户组的成员修改自己创建的文件,同时,如果有自己的私有文件,可以设置通用户组其他成员不能看到。用户组的概念使这些实现起来很方便。
- 其他人:不属于自己用户组的成员
2.文件属性
-
登录linux后,输入ls -al(ls即list,-al表示列出所有的文件,包括隐藏文件,就是文件名前第一个字符为 . 的文件)
-
从1到7依次为文件属性、连接数、文件拥有着、文件所属用户组、文件大小、文件最新修改时间、文件名。
-
文件属性
-
文件类型包括
- [d] :目录
- [ - ] :文件
- [ l ] :连接文件
- [b]:设备文件中可供存储的接口设备
- [c] : 设备文件中的串行端口设备,例如键盘、鼠标。
-
需要注意的是x属性与目录关系很重要,如果某个目录下不能执行任何命令的话,则无法进入该目录。例:
若文件名为一个目录
dwxr------ 3 root root 4096 Jun 08:35 .ssh root用户可以进入该目录,其他用户无法进入 dwxr--r--- 3 root root 4096 Jun 08:35 .ssh 虽然用户组有r权限,但因为没有x权限,无法进入该目录
- linux中,文件能否执行,是通过是否具有x属性来决定的,所有与文件名及扩展名没有绝对关系。
-
3.更改文件权限
-
更改所属用户组(change group)
chgrp [-R] 群组名称 文件目录 -R表示进行递归(recursive)的持续更改,即连同子目录下的所有文件、目录都更改为这个用户组
-
更改文件拥有者(change owner)
chown [-R] 账号名称:文件或目录 chown bin install.log
-
更改文件拥有者的常见例子是,将一个文件的内容复制到另一个文件,并把另一个文件给别人。
cp 源文件 目的文件 例,将.aa文件复制给.bb,并给xiaoming这个人(用户),可以这样做 cp .aa .bb chown xiaoming .bb
-
更改9个属性chmod
- 第一种方法
各属性和数字的对照表 r:4 w:2 x:1 chmod [-R] xyz 文件或目录 xyz为rwx属性数值的和 例:chmod 777 .aa 第一个7=4+2+1,对应的属性未rwx 第二个7和第三个同理
- 第二种方法
可以用u,g,o表示user,group,others三组属性;a表示all,即全部三组 语法:
例:chmod u=rwx,go=rx .aa 其中go表示g和o 要是想增加某一属性,而不改变其他属性,可以如下操作 chmod a+w .aa 要是想除去某一属性,而不改变其他属性,可以如下操作 chmod a-x .aa
4.目录属性的意义
- 以上介绍的都是针对一般文件的属性,对于目录r,w,x是什么含义呢?
- r:表示具有读取目录结构清单的权限
- w:它标识拥有更改该目录结构清单的权限
- 建立新的文件与目录
- 删除已存在的文件与目录
- 将已存在的文件或目录重命名
- 移动该目录内文件、目录的位置
- x:x与能否进入该目录有关
5.linux文件类型与扩展名
- 文件种类
- [ - ] 普通文件。普通文件根据文件的内容又可以分为
- 纯文本文件(ASCII):其中的内容我们可以直接读取到的数据,如数字,字母等。
- 二进制文件(binary):Linux中可执行文件(脚本、文本方式的批处理文件不算)就是这种格式。
- 数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件。
- [d] 目录(directory)
- [ l ] 连接文件(link):类似于Windows下面的快捷方式。
- 设备与设备文件:与系统外设及存储等相关的一些文件,通常都集中在/dev目录下。该文件可分为两种:
- [b]块(block)设备文件:就是存储数据以供系统访问的接口设备。简单而言就是硬盘。
- [c]字符(character)设备文件:即串行端口的接口设备,例如键盘、鼠标等。
- [s] 套接字(sockets):这类文件通常用在网络数据连接。
- [p] 管道(FIFO,pipe):FIFO也是一种特殊的文件类型,其主要目的是,解决多个程序同时访问一个文件所造成的错误。
- linux文件扩展名
- Linux文件能否执行,与它的属性相关,与文件名一点关系都没有。只要有属性x,即表示这个文件可以执行。需要说明的是可以执行与执行成功是不一样的。x表示这个文件具有可执行能力,但不能不能执行成功,当然就要看该文件的内容了。例如,root目录下的install.log是一个纯文本文件,即使权限修改为-rwxrwxrwx,这个文件依然不能执行,因为它的内容根本就没有可执行的数据。
- 通常我们还是希望通过扩展名来表示该文件的类型,所以会以适当的扩展名来表示该文件的类型。下面是常用的几种扩展名:
- *.sh:批处理文件,因为批处理文件使用shell写成,所以扩展名为.sh。
- .tar、.tar.gz、*.zip:经过打包的压缩文件。压缩软件分别为gunzip、tar等,根据不同的压缩软件而取其相关的扩展名。
- .html、.php:网页相关的文件
6. linux目录配置
-
Linux中所有的文件与目录都是由根目录(/)开始。它是所有目录与文件的源头。
-
进入目录的写法:
cd /var/log(绝对路径) cd ../var/log(相对路径) . : 表示当前目录,也可以使用./来表示 ..: 表示上一层目录,也可以用../来表示 / : 指的是根目录root
-
linux目录内容
7. linux支持的文件系统
- 当前的大多数操作系统都是从硬盘中读取数据的,每个操作系统用的硬盘在x86架构上都一样,都是同样的硬盘。但是每种操作系统都有其独特的读取文件的方法,也就是说,每种操作系统对硬盘读取的方法不同,这就产生了不同的文件系统。
- Linux正统的文件系统为ext2(Linux second extended file system,Linux第二代扩展文件系统),不过ext2缺乏日志管理系统。ext3文件系统多做了一个日志式数据的记录。要将数据写入硬盘时,ext2直接将数据写入,但ext3则会将“要开始写入”的信息写入日志纪录区,然后才开始写入数据,在写入数据后,又将“完成写入动作”的信息写入日志记录区。这样做的好处就是数据的完整性与恢复性得到保证。比如,早期的ext2文件系统遇到断电,就要检查文件的一致性,这种检查要将整个分区内的文件进行完整的比较,很慢。如果是ext3,只要通过检查“日志纪录区”就可以知道,断电时有哪些文件正在写入,只需要检查这些地方即可。
三、Linux文件和目录管理
1.目录与路径
-
相对路径与绝对路径
- 绝对路径:路径的写法“一定由根目录/写起”,如/usr/share/doc
- 相对路径:路径的写法“不是由/写起”,例如…/man
-
目录操作相关
- cd 切换目录
- pwd(Print Working Directory) 显示当前所在的目录
pwd [-p] 参数-p表示显示出实际路径,而非使用连接路径。 - mkdir 建立新目录
mkdir[-mp] 参数-m设置文件的权限,直接设置,不要管默认权限;-p:帮你直接建立所需目录的递归
mkdir test 建立一个名为test的目录 mkdir test1/test2/test3 建立失败,默认情况下,目录要一层一层的建立。 加入-p参数可以按照顺序依次建立目录 mkdir -p test1/test2/test3 建立成功 mkdir -m 711 test4 通过-m 711给新目录赋予drwx--x--x属性。
- rmdir删除“空”目录
rmdir [-p] 目录名 参数-p:与上层“空”目录也一起删除 rmdir test 需要注意的是如果test目录不是空目录,则会删除失败。 rmdir test1/test2/test3 只能删除test3 rmdir -p test1/test2/test3 就能将这一串“空”目录删除 被删的目录中,不能有其他目录或文件。这也是空目录的含义 上面采用-p参数删除test1/test2/test3时,会一层一层的删除,先删除test3后,如果test2成为了空目录,则也删除,依次类推。
-
执行文件路径的变量$PATH
- 介绍了绝对路径、相对路径与命令的执行方式之后,你可能会注意到为什么可以在任何地方执行/bin/ls命令呢?这是因为有环境变量PATH的帮助。在执行命令时,系统会按照PATH的设置,去到每个PATH定义的路径下搜索执行文件,先搜索到的命令先执行。
echo $PATH echo命令表示“显示”的意思,PATH前面的$,表示后面接的是变量。
- 如果要执行的命令的目录不在环境变量PATH中,该如何解决呢?
一、直接将命令所在的的路径加入到PATH中
PATH="$PATH":/root 首先$PATH拿到环境变量原有的目录,如/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
然后""将其括起来表示这些目录的字符串,后面再接:/root表示将该目录添加到环境变量中,这样系统就会去/root目录下搜索相关的执行命令。
二、使用完整的文件名来发出命令,即直接使用相对或绝对路径来执行
假设我们把ls命令从/bin目录移到了/root目录
/root/ls
./ls
2.管理文件与目录
- 查看文件和目录:ls
ls [-aAdfFhilRs] 目录名
ls [--color={none,auto,always}] 目录名
ls [--full-time] 目录名
介绍几个参数:
-d:列出目录本身,而不是列出目录内的文件数据
-R:与子目录内容一起列起来
-S:按文件大小排序
-t:按时间排序
--color=never:不要按照文件属性的不同用不同的颜色显示
--color=always:显示颜色
--color=auto:让系统自行按照设置来判断是否使用颜色
--full-time:以完整的时间模式输出
--time={atime,ctime}:输出访问时间(atime)或改变权限属性的时间(ctime),而非内容更改时间(modification time)
- 复制、移动和删除
cp [-adfilprsu] 源文件 目标文件
介绍几个常用的参数:
-d:若源文件为连接文件的属性(link file),则复制连接文件属性而非文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归持续复制,用于目录的复制操作
rm [-fir] 文件或目录
参数:
-f:强制删除
-i:交互模式,在删除前会询问用户是否操作
-r:递归删除。常用在目录的删除。
- mv(移动文件与目录,或重命名)
mv [-fiv] source destination
- 获取路径的文件名与目录名
获取文件名
basename /etc/sysconfig/network
结果:network
获取目录名
dirname /etc/sysconfig/network
结果:/etc/sysconfig
3.查看文件内容
-
1.直接查看文件内容
- cat:由第一行开始显示文件内容
cat(concatenate,连续) cat [-AEntv] 参数:-n 显示行号 很少使用该命令,因为当文件内容行数超过40行以上时,根本来不及看。
-
tac:从最后一行开始显示,可以看出tac与cat字母顺序相反
将最后一行到第一行反向显示在屏幕上
-
nl:显示的时候,输出行号
-
2.翻页查看
-
more:一页一页地显示文件
一页一页查看文件内容 more程序运行过程中,有几个按键可以使用: 空格键:表示向下 回车键:表示向下翻一行 /:表示在这个显示的内容中,向下搜索"字符串"
-
less:与more相似,但它可以向前翻页
less比more更灵活。使用more的时候,没有办法向前翻页,只能往后面看, 但使用了less,就可以使用上下按键往前往后翻看文件,更容易查看文件内容
-
-
3.数据选取
- head:只看前几行
head [-n number] 文件 参数 -n 后面接数字表示显示几行的意思 默认情况下显示10行
- tail:只看最后几行
tail [-n number] 文件 默认情况下显示10行 显示~/.bashrc的第10行到第20行 head -n 20 ~/.bashrc|tail -n 10
-
od:以二进制方式读取文件内容
前面的内容都是在查看纯文本文件(ASCII格式文件),想查看非文字文件可以用od读取。
od [-t TYPE] 文件 -t 后面可以接各种类型TYPE的输出,如: a:使用默认的字符来输出 c:使用ASCII字符输出 d[size]:使用十进制(decimal)来输出数据,每个整数占用size字节 f[size]:使用浮点数(floating)值来输出数据,每个整数占用size字节 o[size]:使用八进制(octal)输出数据,每个整数占用size字节 x[size]:使用十六进制(hexadecimal)输出数据,每个整数占用size字节
- 修改文件时间与创建新文件:touch
- modification time(mtime,修改时间):当文件的内容数据更改时,就会更新这个时间。
- status time(ctime,状态时间):当该文件的状态更改时,就会更新这个时间。如更改了权限与属性。
- access time(atime,访问时间):当读取文件内容时就会更新这个读取时间,如用cat命令查看一个文件时,就会更新atime。
文件时间很重要,因为如果误判文件时间,可能会造成某些程序无法运行。 touch [-acdmt] 文件 -a:仅修改atime -c:仅修改时间,而不是建立文件 -d:后面可以接日期,也可以使用 --date="日期或时间" -m:仅修改mtime -t:后面可以接时间,格式为 [YYMMDDhhmm] 默认状态下:如果touch后面接文件, 若该文件不存在,则会主动建立一个新的空文件。 将bashrc文件的日期调整为两天前 touch -d "2 days ago" bashrc 将bashrc文件的日期日期改为2005/07/15 2:02 touch -t 0507150202 barshrc
4.文件与目录的默认权限与隐藏权限
-
文件默认权限:umask
- 现在我们知道如何建立或者修改一个目录或文件的属性了,但是,当建立一个新的文件或目录时,它默认的属性是什么样的呢?通常,umask就是指定“当前用户在建立文件或目录时的属性默认值”。
umask 结果比如显示 0022 第一组是给特殊权限用的 umask -S 结果显示比如 u=rwx,g=rx,o=rx
- 在默认权限的属性上,目录与文件时不一样的。由于我们不希望文件具有可执行的权限,默认情况下,文件是没有可执行(x)权限的。因此:
- 若用户建立的文件默认没有可执行(x)权限,即只有rw这两个权限,也就是最大为666分,默认属性为 -rw-rw-rw-。
- 若用户建立目录,则由于x与是否可以进入此目录有关,因此默认为所有权限均开放,即为777分,默认属性为 rwxrwxrwx 。
- umask指定的是“该默认值需要减掉的权限”。因为r、w、x分别是4、2、1,也就是说,当要去掉写权限时,就输入2,要去掉读权限时,就输入4,要去掉读与写权限时,就输入6,而要去掉执行与写的权限时,就输入3。上面umask为022,所以user没有被去掉属性,不过group与others的属性被去掉了2,所以用户:
建立文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- 建立目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
- 如何设置umask?直接在umask后面输入相关值,如002。需要注意的是,计算默认权限值时不要直接相减,而是要用AND与NOT计算。
四、vi和vim文字处理器
1.vi的使用
-
vi是几乎任何一个类Unix机器都存在的文字处理器,它功能很齐全,但还有些可以改进的地方。vim可以看做是vi的高级软件,它对程序开发人员很好用,vim官网也说vim是一个“程序开发工具”而不是文字处理软件。vim中增加了很多附加功能,比如支持规范表示法的搜索框架、多文件编辑、块复制等。
-
vi共分为3中模式,分别是“一般模式”、“编辑模式”、“命令行命令模式”。
-
简单执行范例
- 使vi进入一般模式
vi test.text
如下图
如果test.txt不存在的话,会新建该文件。- 按下i进入编辑模式,开始编辑文字
这时候可以输入任意字符。- 按下[ESC]回到一般模式
- 在一般模式下按下 :wq 存储后离开vi(实际上按下 : 后,进入了命令行模式,再按wq存储文件并离开vi)。
- 如果文件权限不对,很可能无法写入。可以使用":wq!" 强制写入,不过需要强调的是,这是在“你的权限可以改变”的情况下可行的。
-
介绍几种常见的命令行命令
- 一般模式:移动光标的方法
右方向键(->):光标向右移动一个字符 多次移动,如向下移动30行:可以使用输入30+向下方向键的组合键形式完成 [Page Down]:向下移动一页 [Page Up]:向上移动一页 0:数字0表示移动到这一行的最前面字符处 $:移动到这一行的最后面的字符处 G:移动到这个文件的最后一行
- 一般模式:搜索和替换
/word:从光标位置开始,向下寻找一个名为word的字符串。 ?word:从光标位置开始,向上寻找一个名为word的字符串。 n:表示重复前一个搜索动作。比如前一个动作是/a,则按下n后,继续向下搜索a。 N:与n反向
- 一般模式:删除、复制与粘贴
p,P:p为将已复制的数据粘贴到光标的下一行,P则为贴在光标上的上一行。
2.vim的附加功能
- 当前大部分版本都采用vim代替vi的功能了。vim具有颜色显示功能,并且还支持很多程序语法,当使用vim编辑程序时(不论是C语言,还是shell脚本),vim可以帮你直接进行程序调试。vim的一般用法与vi一模一样,没有不同。
- 块选择
- 多文件编辑(略)
- 多窗口功能(略)
扫码关注公众号
- 后台回复“Linux及Docker学习资料”免费获取更多Linux及Docker学习教材及实战资料