Linux学习笔记-文件属性与目录配置

来源:互联网 发布:金税通网络电子发票 编辑:程序博客网 时间:2024/05/02 01:35

如下笔记是学习自鸟哥的私房菜基础学习篇(第二版)

记录一些比较有用且实用的命令。

  • 命令行模式就是指在登入Linux的时候得到的一个Shell

基础操作命令:

显示日期:

date

显示日历:

cal

计算器:

bc

基础操作快捷键:

命令/文件名补全:

按下Tab键

终止正在执行的命令:

Ctrl+C

退出,相当于exit命令:

Ctrl+D

Man Page命令帮助

在很多时候,我们并不知道某一条命令的用法,需要查看帮助文档。可以使用Man命令查看某条命令的帮助文档。例:

man ls

# 这里会有ls命令的帮助及用法

同步数据到磁盘

在Linux中,读写文件的话,并不会马上存入磁盘,而会暂存在内存中,这样往往在硬盘/U盘写入数据时,或者关机后,发现数据并没有写入成功。所以,在关机或者插拔USB设备时,我们应该先执行一下磁盘同步命令:

sync

关机命令

shutdown -h now # 立刻关机

shutdown -r now # 立刻重启

关机建议,如下操作(首先将磁盘内容同步,sync多执行几次无妨):

sync;sync;sync;reboot

Linux文件属性

用 ls -l 可以列出文件的属性,如下所示:

drwxr-xr-x. 2 warmsheep Warmsheep 4096 Sep 30 20:12 Desktop

第一列drwxr-xr-x.是文件的属性,其余列依次是代表:连接、拥有者、用户组、文件大小、最新修改时间、文件名。

这里主要讲一下文件的属性:

文件主要分为10个属性

d rwx rwx rwx

d是文件类型,r代表文件可读,w代表文件可写,x代表文件可执行

第一组rwx是文件拥有者对该文件的权限,第二组则是文件所属用户组对其的操作权限,第三组是其他人对该文件的权限

例如刚那条文件属性:拥有者对其有完全操作的权限,所属用户组对其有读取和执行权限,其他人对其同样有读取和执行权限。

当然,在更改文件权限时,有时为了方便,可以用数字代替,例如777,实际上这是权限的数字相加。

r(4)w(2)x(1)

更改文件权限

chgrp 改变文件所属用户组

chown 改变文件拥有者

chmod 改变文件的属性

chgrp -R root /home/Downloads

#将Downloads下的文件所属用户组改为root用户组,-R是包含其下的所有文件和目录

chgrp root /home/Downloads/abc.txt

#将Downloads下的abc.txt文件所属用户组更改为root

chown -R root:root /home/Downloads/abc.txt

#将Downloads下的abc.txt文件拥有者更改为root用户组下的root用户

chmod 777 /home/Download/abc.txt

#将Downloads下的abc.txt文件权限对所有用户完全开放

有时候,我们只需对文件进行增加一项权限,但是却不想更改其本身其余的权限,此时用chmod 777则有些不合适,毕竟已经覆盖了其他权限。我们可以这样操作:

chmod a+x /home/Download/abc.txt #a是对所有人,x是执行权限,这里指对所有人增加执行权限

chmod a-x /home/Download/abc.txt #对所有人去除执行权限


目录的空间规划

之前对目录也没什么概念,不过遵循目录结构规则是一个很好的习惯,就如在windows下统一把软件都安装在Program Files一样,Linux同样也需要有良好的习惯,文件不要乱放。

根据学习后目录空间规划的大致如下(合适本人,仅供参考):

/boot -放置系统启动信息 -200M

/home -放置个人文件,比如音乐、电影、文档等等,个人放置50G差不多了,只有这么多数据

/usr -放置用户安装的软件等 -20G

/etc 50M

/var -记录暂存数据 2G左右

/opt -同样也是用来放置用户安装的软件,或者/usr/local下 -20G

/ -根目录 4G左右

不过硬盘一般都不止这么区区100G,具体可以把剩余空间全规划到/home目录下,也单独做一个其余的分区,用来备份什么的。

分区后,重装系统是装在/下,这样/home下的数据也不会丢失,如果没有规划分区的话,乖乖先备份后重装吧(目前我就是把空间全分在/下,好惊恐啊!)

目录的常用操作

cd 切换目录

pwd 显示当前目录

mkdir 建立新目录

rmdir 删除空目录(目录不为空会删除失败)

pwd -P 会显示真是的完整目录,而不是链接的目录

mkdir -m 777 -p test1/test2/test3 #同时新建多层次的目录,并赋予777的权限

rmdir -p test1/test2/test3 #同时删除多层次的空目录

  • echo $PATH #查看PATH环境变量目录

管理文件与目录

ls -a ~ #将家目录下所有的文件列出来(包含隐藏文件)

复制文件:cp

cp -i ~/.bashrc bashrc

加上-i参数,覆盖前会让用户进行确认

如果需要强制覆盖则加上-f参数

  • 在不加任何参数的情况下,文件的拥有者会改变,文件的权限也会跟着改变

cp -a /var/log/wtpm wtmp

加上-a参数后,文件属性依然保持与源文件一致

cp -r /var/log wtmp

-r参数可以复制目录包括其下的所有文件,同样的,-r复制也会更改文件的属性,这里依然可以用-a来复制目录。

cp -s /var/log/wtmp #用-s,这里建立的是一个快捷方式

cp -u /var/log/wtmp wtmp #在目标文件与源文件有差异时才会复制,通常用于备份

  • 在复制连接文件时,如果没有加任何参数的情况下,会将源文件复制过来,如果需要复制连接文件本身,则加上-d或者-a参数

同时复制多个目录或文件到同一个目录:

cp ~/.bashrc ~/.bash_history /tmp #将.bashrc和.bash_history都复制到/tmp下

删除文件

rm -i ~/xxx.log #删除xxx.log时需要用户确认

rm -f ~/xxx.log #无需确认直接删除

rmdir ~/test1 #删除空目录

rm -rf #强制删除目录及其下所有的文件,无需确认

移动文件、目录或重命名

mv bashrc mvtest #将bashrc移动到mvtest目录下(前提是存在mvtest目录,不然就会变成重命名)

mv mvtest mvtest2 #重命名

mv bashrc1 bashrc2 mvtest2 #将多个源文件或目录移动mvtest2下,mvtest2必须是目录且存在。

获取文件名和目录名

basename /etc/sysconfig/network #获取到文件名network

dirname /etc/sysconfig/network #获取到目录名/etc/sysconfig

查看文件内容的常用命令

cat 从第一行开始查看

tac 从最后一行开始查看(实际上就是cat倒过来)

nl 查看的时候输出行号(似乎用处也不是很大)

more 一页一页的显示内容

less 同more类似,比more更强大,于是可以舍弃more

head 只查看前几行

tail 只查看最后几行

od 以二进制的方式查看文件

cat -A -n xxx #-A参数显示出所有的特殊符号,-n显示出行号

tac xxx #反向显示

nl -b a -n rz -w 3 xxx #-b a,给空白行也加上行号。-n rz,行号自动补0。-w 3,默认补0位数为6位,更改为3位

less命令

空格键 向下翻页

pagedown 向下翻页

pageup 向上翻页

/xxx 向下搜索xxx

?xxx 向上搜索xxx

n 重复前一次搜索

N 反向重复前一个搜索

q 离开less

head与tail

head -n 20 xxx #查看前20行

tail -n 20 xxx #查看最后20行

tail -f xxx #查看之后不会退出,会继续读取更新,适合用来监控日志更新变化

od命令

od -t c /usr/bin/passwd #用ASCII字符输出文本

这里-t代表的是类型,其中有如下类型:

c ASCII码输出

a 默认字符串输出

d[size] 使用十进制输出,每个整数占用size字节

f 浮点数输出

o 八进制输出

x 十六进制输出

修改文件时间与创建新文件:touch

Linux会记录文件的3个主要的时间,mtime:修改时间,ctime:状态修改时间(比如修改了文件了拥有者),atime:访问时间。

touch xxx #默认该文件时间都会更新为当前时间,如果文件不存在,则会新建一个名为xxx的文件

touch -d "2 days ago" bashrc #将mtime和actime的时间提前2天

touch -t 0507120202 bachrc #将mtime和actime的时间更新为2005/07/12 02:02,ctime时间更新为当前时间。

  • ll 可以理解为就是 ls -l 的简写,; 分号是用来同时发出多条命令执行的。

查看文件类型

file xxx #查看xxx的文件类型

搜索文件

which,搜索可执行的文件

which -a command #-a将所有可找到的文件列出来,而不仅仅是第一个。

这条命令是根据PATH环境变量所规范的路径来寻找文件的。

用find命令来搜索文件

find / -mtime 0 #将过去24小时内更改过的文件找出来

find /etc -newer /etc/passwd #将比/etc/passwd新的文件列出来

find /home -user dmtsai #找出/home目录下属于dmtsai用户的文件

find / -nouser #查找系统中不属于任何用户的文件(异常文件?)

find / -name passwd #找出名为passwd的文件

find / -size +1000k #找出大于1M的文件

笔记看起来果然有点乱了- -,马马虎虎了~~