date
date
date +%Y-%m-%d
date +%H:%M:%s
date +%H:%M:%S
cal
cal
cal 6 1999
#查询1999年6月日历
bc
bc
2+3
1/3
quit
bc
scale=3
#设置精度
1/3
[Tab]
ca[Tab] [Tab]
#ca后按两次TAB
# 命令补全
ls -la ~/.bash[tab] [tab]
#文件补全
ctrl+c
中断命令
ctrl+d
键盘输入结束
linux文件属性
ls -la
ls -l --full-time Desktop
修改文件属性与权限
命令 | 解释 |
---|---|
chgrp | 修改文件所属用户组 |
chown | 改变文件所有者 |
chmod | 改变文件的权限 |
(以上三者)-R | 进行递归更改 |
更改用户组,本地所在的用户组有wjl和root
ls -la
chgrp root a.txt
# 权限不够
chgrp wjl b.txt
改变文件所有者
chown [-R] 账号名称 文件或者目录
ls -lA
# -A忽略隐藏目录
chown wjl b.txt
ls -lA
将b.txt的所有者和用户组改回root
ls -lA
chown root:root b.txt
ls -lA
改变权限 chmod
- 数字类型
r:4
w:2
x:1
每种身份各自的三个权限是需要累加的如[-rwxrwx---]
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
others=---=0+0+0=0
命令则如下:
chmod 770 文件或者目录
格式:chmod [-R] xyz 文件或者目录
# b.txt为例
# -rw-r--r--
# 改为-rwxrwxrwx
chmod 777 b.txt
ls -lA
- 符号类型更改权限
格式:
chmod u/g/o/a +/-/= r/w/x 文件目录
u=user
g=group
o=others
a=all
设置b.txt权限为-rwxr-xr-x
# -rwxrwxrwx
chmod go=rx b.txt
ls -lA
假如是-rwxr-xr--这样的权限设置,可以使用chmod u=rwx,g=rx,o=r 文件名
如果不知道b.txt文件权限,想要把b.txt的这个文件改为每个人可以写入的权限
chmod a+w b.txt
#增加写的权限
ls -lA
如果想去掉b.txt的x权限可以这样写
chmod a-x b.txt
ls -lA
查看文件与目录 ls
参数 | 解释 |
---|---|
-a | 全部的文件连同隐藏文件一起列出来 |
-A | 列出全部文件连同隐藏文件,但不包括. 和.. |
-d | 仅仅列出目录本身,而不是列出目录内的文件数据 |
-f | 直接列出结果而不进行排序ls以文件名默认排序 |
-F | 根据文件目录等信息给予附加目录结构 |
-h | 将文件容量以人类较易读的方式列出来 |
-i | 列出inode号码 |
-l | 列出长数据串,包含文件属性与权限 |
-n | 列出UID与GID而非用户的UID与GID |
-r | 将结果方向输出 |
-R | 连同子目录内容一起列出来 |
-S | 以文件容量大小排序 |
-t | 依据时间排序 |
--color=never | 不要依据文件特性给予颜色显示 |
--color=always | 显示颜色 |
--color=auto | 让系统自行依据设置来判断是否给予颜色显示 |
--full-time | 以完整时间模式输出 |
--time={atime,ctime} | 输出访问时间或者改变权限属性 |
复制删除与移动
cp
参数 | 解释 |
---|---|
-a | 相当于-pdr的意思 |
-d | 如源文件为链接文件属性则复制链接文件属性而非文件本身 |
-f | 强制的意思,如果目标文件已经存在并且无法开启,删除后再尝试一次 |
-i | 如果目标文件已经存在,再覆盖时会先询问操作的进行 |
-l | 进行硬链接的链接文件创建而非复制文件本身 |
-p | 连同文件的属性一起复制过去,而非使用默认属性(备份常用) |
-r | 递归持续复制,用于目录的复制行为 |
-s | 复制成为符号链接文件,即快捷方式文件 |
-u | destination比source旧才更新 |
用root身份将主文件夹下的.bashrc复制到/tmp下,并且更名为bashrc
cp /.bashrc /tmp/bashrc
cp -i /.bashrc /tmp/bashrc
# 会询问是否覆盖
切换到/tmp,并且将/var/log/wtmp复制到/tmp并且查看属性
cd /tmp
cp /var/log/wtmp .
# "." 代表当前目录
ls -l /var/log/wtmp wtmp
# 不加参数文件的属性或者权限会被改变
cp -a /var/log/wtmp wtmp_2
ls -l /var/log/wtmp wtmp_2
#属性就相同了
复制/etc目录下所有文件到/tmp文件夹下
# 如果目标是文件夹则需要加-r参数
cp -r /etc/ /tmp
将复制的bashrc创建一个链接文件
cp -s bashrc bashrc_slink
cp -l bashrc bashrc_hlink
ls -l bashrc*
如果~/.bashrc比/tmp/bashrc新才复制过来
cp -u ~./bashrc /tmp/bashrc
将bashrc_slink复制为bashrc_slink_1,bashrc_slink_2
cp bashrc_slink bashrc_slink_1
cp -d bashrc_slink bashrc_slink_2
ls -l bashrc_slink*
#没有加任何参数时,cp复制的是源文件,如果要复制链接文件的属性就是用-d参数
将主文件夹下的.bashrc以及.bash_history复制到/tmp下面
cp ~/.bashrc ~/.bashrc_history /tmp
#最后一定是目录
rm
参数 | 解释 |
---|---|
-f | 忽略不存在的文件,不会出现警告信息 |
-i | 交互模式,在删除之前会询问 |
-r | 递归删除,最常用的是目录删除 |
通过通配符*将/tmp下的bashrc开头的文件全部删除
rm -i bashrc*
如果想删除目录不要询问,可以这样做
\rm -r /tmp/etc
# \忽略掉alias参数
删除一个带有-开头的文件
touch ./-aaa-
rm -aaa-
#删除不掉
rm ./-aaa-
mv
参数 | 解释 |
---|---|
-f | 目标文件存在不询问直接覆盖 |
-i | 交互模式,已经存在文件夹时覆盖之前询问 |
-u | 如果目标文件存在且source比较新才会更新 |
移动/home/wjl/a.txt到/tmp文件夹下
#wjl登录
cd ~
mv a.txt /tmp
mkdir test
#将test改名为test2
mv test test2
# 将a.txt,b.txt移动到桌面
mv a.txt b.txt /home/wjl/Desktop/
当文件路径很长时,获取最后的文件夹名字或者路径比太方便,可以使用下列命令
basename /home/wjl/Desktop
dirname /home/wjl/Desktop
文件内容查阅
cat
由第一行显示内容
参数 | 解释 |
---|---|
-A | 相当于-vE的整合参数,可以列出一些特殊字符 |
-b | 列出行号,仅仅针对非空白行做行号显示,空白行不显示行号 |
-E | 将结尾的断行字符串$显示出来 |
-n | 打印行号,连同空白行也会有行号,与-b的参数不同 |
-T | 将TAB以^I显示出来 |
-v | 列出一些看不出来的特殊字符 |
tac
反向列示
nl(添加行号打印)
参数 | 解释 |
---|---|
-b | 指定行号样式,主要有两种 |
-b a | 无论是否为空行,同样列出行号 |
-b t | 没有空行,空的一行不列行号(默认) |
-n | 列出行好的样式 |
-n ln | 行号在屏幕的最左方显示 |
-n rn | 行号在自己字段的最右方显示,且不加0 |
-n rz | 行号在自己字段的最右方显示,且加0 |
-w | 行号字段占用的位数 |
列出所有行号,最右方显示三位数的行号
nl -b a -n rz -w 3 a.txt
可翻页查看
more
参数 | 解释 |
---|---|
空格 | 代表向下翻一页 |
Enter | 代表向下滚动一行 |
/字符串 | 代表在这个显示的内容当中向下查询"字符串"这个关键字 |
:f | 立刻显示出文件名以及目前显示的行数 |
q | 代表立刻离开more |
b或者ctrl+b | 代表往回翻页,不过这操作只针对文件有用,对管道无用 |
less
参数 | 解释 |
---|---|
空格 | 代表向下翻一页 |
PageDown | 向下翻一页 |
PageUp | 向上翻动一页 |
/字符串 | 向下查询“字符串”的功能 |
?字符串 | 向上查询“字符串”功能 |
n | 重复前一个查询 |
N | 反向重复前一个查询 |
q | 离开less |
数据选取
head(取出前面几行)
参数 | 解释 |
---|---|
-n | 后面接数字,代表显示几行的意思 |
不加参数默认显示10行
-n -100代表列出前面的所有行数,但不包括后面100行
tail(去除后面几行)
参数 | 解释 |
---|---|
-n | 后面接数字,代表显示几行的意思 |
-f | 表示持续监测后面所接的文件名,等到按下[TAB]-c才结束tail检测 |
不加参数默认显示10行
-n +100 a.txt
列出100行以后的数据
持续监测/var/log/messages
tail -f /var/log/messages
每当messages有内容写入时,就会显示到屏幕,除非ctrl+c停止
显示第11到第20行的命令
head -n 20 a.txt|tail -n 10
非纯文本文件 od
参数 | 解释 |
---|---|
-t | 后面可以接各种类型(type)的输出,例如: |
a,利用默认的字符串输出 | |
c,使用ASCII字符串输出 | |
d[size]利用十进制来输出数据,每个整数占用size bytes | |
f[size]利用浮点数来输出数据,每个数占用size bytes | |
o[size]利用八进制来输出数据,每个整数占用size bytes | |
x[size]利用十六进制来输出数据 |
将/usr/bin/passwd的内容用ASCII方式输出
od -t c /usr/bin/passwd
将/etc/issue这个文件内容以八进制列出存储值与ASCII的对照表
od -t oCc /etc/issue
touch
三个主要变动时间
状态 | 触发 |
---|---|
modification time(mtime) | 当该文件的内容数据更改时就会更新这个时间 |
status time(ctime) | 当该文件的状态改变时,就会更新这个时间例如权限与属性的更改 |
access time(atime) | 当该文件的内容被取用是,就会更新这个读取时间,例如用cat读取文件时 |
ls默认显示的时间是mtime
参数 | 解释 |
---|---|
-a | 仅仅修改访问时间 |
-c | 仅仅修改文件的时间,如果文件不存在则不创建新文件 |
-d | 后面可以接欲修改的日期而不用目前的日期,也可以使用--date=日期或者时间 |
-m | 仅仅修改mtime |
-t | 后面可以接欲修改的时间而且不用目前的时间,格式为【YYMMDDhhmm】 |
文件默认权限 umask
umask
umask -S
数字形式关注的是后面三位,代表的是减分制。
022代表u=rwx,g=rx,o=rx
即go被拿掉了w权限
新建文件时(-rw-rw-rw-) - (-----w--w-)=-rw-r--r--
新建目录时(drwxrwxrwx) - (-----w--w-)=drwxr-xr-x
touch test1
mkdir test2
ll
umask 002
touch test3
mkdir test4
ll
chattr(设置文件的隐藏属性)
chattr [+-=] [ASacdistu]
参数 | 解释 |
---|---|
+ | 增加某一参数其他原本的参数不变 |
- | 删除某一个参数,原本参数不动 |
= | 仅仅有后面界的参数 |
A | 当设置了A这个属性时,若你有访问此文件时,他的访问时间atime不会被修改,可避免I/O较慢的机器过度访问磁盘。 |
S | 一般文件时异步写入磁盘的,如果加上S这个属性是,当你进行任何文件修改,该修改会同步写入磁盘中 |
a | 当设置a之后,这个文件只能增加数据,而不能删除数据也不能更改数据,只有root才能设置这个属性 |
c | 这个属性设置之后,将会自动将此文件压缩,在读取的时候将会自动解压缩,但是在存储的时候,将会先进性压缩后在存储 |
d | 当dump程序被执行时,设置d属性可以将该文件不会被dump备份 |
i | 它可以让一个文件不能被删除、改名,设置连接也无法写入或者添加数据。对于系统安全行有相当大的帮助 |
s | 当文件设置了s属性是,如果这个文件被删除,它会被完全从磁盘空间中删除 |
u | 与s相反,当使用u来配置文件时如果该文件被删除了,则数据内容其实还存在在磁盘中,可以使用来找回该文件 |
lsattr(显示文件隐藏属性)
参数 | 解释 |
---|---|
-a | 将隐藏文件的属性也显示出来 |
-d | 如果接的是目录,仅仅列出目录本身的属性而非目录内的文件 |
-R | 连同子目录的数据也一同列出 |
file产看文件类型
脚本文件名查询 which(寻找执行文件)
参数 | 解释 |
---|---|
-a | 将所有由PATH目录中可以找到的命令均列出来 |
文件名查找 whereis(寻找特定文件)
参数 | 解释 |
---|---|
-b | 仅仅查找二进制格式的文件 |
-m | 只找在说明文件manual路径下的文件 |
-s | 只找source原文件 |
-u | 查找不在上述三个选项当中的其他特殊文件 |
locate
参数 | 解释 |
---|---|
-i | 忽略大小写的差异 |
-r | 后面可以接正则表达式的显示方式 |
找出系统中所有与passwd相关的文件名
locate passwd
updatedb更新数据库
这样新安装的库就可以搜索到了
find
find [PATH] [option] [action]
参数 | 解释 |
---|---|
时间有关 | mtime,atime,ctime |
-mtime n | n为数字,意义为在n天之前的一天之内被改过的文件 |
-mtime +n | 列出n天之前不包括n天被更改的文件 |
-mtime -n | 列出在n天之内含有n天被更改过的文件名 |
-newer file | file为一个存在的文件,列出比file还要新的文件 |
find / -mtime 0
#在过去系统上24小时内有改动的文件
# 0代表目前时间
find / -mtime 3
#三天前24小时内有改动的文件
find /etc -newer /etc/passwd
# 寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出
find /var -mtime -4
#四天内被改动的文件名
find /var -mtime +5
# 五天前的文件名
参数 | 解释 |
---|---|
用户有关 | uid,gid,user,group,nouser,nogroup |
-uid n | n为数字,数字时用户的账号ID,即UID。这个UID是记录在/etc/passwd里面与账号名称对应的数字 |
-gid n | 用户组名的ID |
-user name | name为用户账户 |
-group name | name为用户组名 |
-nouser | 寻找文件的所有者不存在/etc/passwd的人 |
-nogroup | 寻找文件的所有用户组不存在与/etc/group中的文件 |
find /home -user wjl
# 寻找/home下属于wjl用户的文件
find / -nouser
# 查找不属于任何人的文件
参数 | 解释 |
---|---|
与文件权限以及名称有关的参数 | |
-name fielname | 查找文件名为filename的文件 |
-size [+-]size | 查找不size还要打或者小的文件,规格有c:byte,k:1204bytes |
-type TYPE | 查找文件类型为TYPE的类型主要有一般正规文件f,设备文件b,c,目录d,连接文件l,socket s以及FIFO p等属性 |
-perm mode | 查找文件权限刚好等于mode的文件,mode相当于chmod的属性值,-rwxr-xr-x的属性为4755 |
-perm -mode | 查找文件全必须要全部包括mode的权限 |
-perm +mode | 查找文件权限包含任一mode的权限文件 |
find / -name passwd
# 找出文件名为passwd的文件
find /var -type s
# 查找var文件夹下socket的文件名
find /bin /sbin -perm +600
#查找bin sbin这两个目录下只要具有SUID或者SGID的文件就列出来
参数 | 解释 |
---|---|
其他 | |
-exec command | command为其他命令,-exec后面可以再接其他命令来处理查询的结果 |
将结果打印到屏幕上,这个操作时默认操作 |
find / -perm +700 -exec ls -l {} \;
# 查找bin sbin这两个目录下只要具有SUID或者SGID的文件就使用ls -l列出来
find / -size +1000k
# 查找系统中大于1m的文件
# M,G代表MB个GB感兴趣的可以试一下看看是否可以
find /etc -name "*httpd*"
#通配符查找符合规则的文件
列出文件系统的整体磁盘使用量 df
参数 | 解释 |
---|---|
-a | 列出所有文件系统,包括特有的/proc等文件系统 |
-k | 以kb的容量显示各个文件系统 |
-m | 以MB的容量显示各个文件系统 |
-h | 以人们容易阅读的GB,MB,KB等格式自行显示 |
-H | 以M=1000k代替m=1024k显示 |
-T | 连同该分区的文件系统名称也列出 |
-i | 不用硬盘容量而用inode的数量显示 |
df
# 以1kb的容量列出来,/dev/shm是与内存有关的挂载
df- h
df -h /etc
df -ih
评估文件系统的磁盘使用量 du
参数 | 解释 |
---|---|
-a | 列出所有的文件与目录容量 |
-h | 以人们较易读的格式显示 |
-s | 列出总量 |
-S | 不包括子目录下的统计 |
-k | 以kb容量显示 |
-m | 以mb容量显示 |
du -sm /*
#列出根目录下每个目录所占用的容量
连接文件 ln
cd Desktop/
ls
mkdir test
ls
cd test
ln /etc/crontab .
ll -i /etc/crontab /home/wjl/Desktop/test/crontab
# 硬链接,只是会多一个连接,不会增加inode和block数量,不可以链接目录,不能跨文件系统
ln -s /etc/crontab crontab2
ll -i /etc/crontab /home/wjl/Desktop/test/crontab2
#软链接,相当于windows的快捷方式
参数 | 解释 |
---|---|
-s | 如果不加任何参数进行连接,那就是hard link,-s就是symbolic link |
-f | 如果目标文件存在时,直接将目标文件直接删除后在创建 |
磁盘的分区 fdisk
参数 | 解释 |
---|---|
-l | 输出后面接的设备所有的分区内容,若仅有fdisk -l时,则系统会把整个系统中能够找到的设备分区均列出来 |
添加一块虚拟硬盘
点击添加
选择默认即可
选择第一个即可
选择磁盘容量,一般默认即可,我这里选择5G只是测试用
完成
fdisk -l
注意sdb是我们新添加的磁盘,有5G
fdisk /dev/sdb
输入m查看帮助
d为删除一个分区,n为添加一个分区,p在屏幕上显示分区表,q不存储直接离开,w将刚才的操作写入分区表
p
q
#退出
新增磁盘分区练习
fdisk /dev/sdb
n
p
4
#默认
+512M
p
新增扩展分区练习
n
e
1
#默认
#默认
p
逻辑分区里面分出2GB分区
n
l
#默认
+2048M
p
partprobe
#强制让内核重新照一次分区表