鸟哥的LINUX私房菜基础篇笔记1

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

  1. 数字类型
    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
  1. 符号类型更改权限
    格式:
    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后面可以再接其他命令来处理查询的结果
-print 将结果打印到屏幕上,这个操作时默认操作
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
sdb
sda
q
#退出

新增磁盘分区练习

fdisk /dev/sdb
n
p
4
#默认
+512M
p
新增扩展分区练习
n
e
1
#默认
#默认
p

逻辑分区里面分出2GB分区

n
l
#默认
+2048M
p
partprobe
#强制让内核重新照一次分区表
fdisk无法处理大于2TB容量的磁盘分区

你可能感兴趣的:(鸟哥的LINUX私房菜基础篇笔记1)