linux命令随笔
用户操作
whoami
“我是谁?”
查看当前用户名sudo su root
“获取root最高权限”
最高权限?据说都拥有可以把自己完全抹杀的能力!!!!
搜索命令
PATH环境变量
- PATH环境变量:定义的是系统搜索命令的路径
echo $PATH //显示系统搜索命令的路径,这样可以使命令不需要输入绝对路径找到执行文件然后再运行命令
Linux中的通配符
* //匹配任意内容
find /root -name “文件名*” //匹配包含文件名的所有文件
? //匹配任意一个单独的字符
[] //匹配任意一个中括号内的字符
find /root -name “文件名[n个字符]” //匹配文件名后面跟n个字符中一个字符的文件
文件搜索命令locate
- 后台数据库中按文件名搜索,搜索速度更快
- var/lib/mlocate
#locate
命令搜索的数据库//默认一天已更新 updatedb
更新数据库- /etc/updatedb.conf配置文件
PRUNE_BING_MOUNTS=“yes”
//开启搜索模式
PRUNEFS =
//搜索时,不搜索的文件系统
PRUNENAMES =
//搜索时,不搜索的文件类型
PRUNEPATHS =
//搜索时,不搜索的路径
- 缺点:只能按照文件名来搜索
- 优点:快啊!!!
搜索命令的命令whereis与which
- whereis 命令名
搜索命令执行文件所在路径及帮助文档所在位置
-b: //只查找可执行文件
-m: //只查找帮助文件
- which 命令名
搜索命令文件执行文件所在路径及别名
文件搜索命令find(最强大的哦!!)
- 按照文件名来查找文件
find [搜索范围] [搜索条件]
find /root -name 文件名1 //搜索的文件名和文件名1完全一样的文件
find /root -iname 文件名 //iname 不区分大小写
find /root -user 文件名 //搜索有所有者的文件
find /root -nouser 文件名 //搜索没有所有者的文件。
//没有所有者的文件通常包含,内核产生的文件(根目录/下的proc:sys目录包含的文件),或者外来文件
//(windows下的文件通过u盘的设备移动到Linux上的文件),光盘文件,垃圾文件!!!
- 按照文件时间属性来查找文件
find /var/log/ mtime +10 //查找十天前修改的文件
-10 //十天内修改的
10 //十天当天修改的
+10 //十天之前修改的
atime //文件访问时间
ctime //修改文件属性的时间
mtime //修改文件内容的时间
- 按照文件大小来查找文件
find . -size 25k //“.”代表当前目录,搜索文件大小为25k的文件
-25k //小于25k的文件
25k //等于25k的文件
+25k //大于25k的文件
//千字节小写k,兆字节大写M
//如果不加单位,则默认单位为磁盘一个扇区的单位及512k
- i节点搜索
find /root -inum i节点号 //查找相应i节点的文件
- 组合搜索
find /etc -size +20k -a -size -50k
//搜索大于20k小于50k的文件
//-a and 逻辑与 两个条件都满足
//-o or 逻辑或 连个条件满足一个
-exec 对搜索结果进行操作的命令
- 在-exec 命令 {}; //标准格式
find -/etc -size +20k -a -sizoef -50k -exec ls -lh {};
//-exec/-ok 命令{};对搜索结果执行操作
- 缺点:慢~~~
字符串搜索命令grep
grep [选项] "字符串" 文件名
//在文件中匹配符合条件的字符串
//字符串应使用双引号括起来
选项:
-i //忽略大小写
-v //排除指定字符串
find命令和grep命令的区别
find命令:在系统中搜索符合条件的文件名(需要和搜索的的文件名完全匹配),如果需要匹配,只用通配符进行匹配,通配符是完全匹配
grep命令:在文件中搜索符合条件的字符串(包含搜索要找的字符串),如果需要匹配,使用正确的表达式进行匹配,正则表达式是包含匹配
开关机
- 惯用的关机命令
shutdown [-t] [-arkhncfF] 时间 [警告消息]
-t sec :-t 后面加秒数,即“过几秒后关机”的意思
-k :不要真的关机,只发送警告信息
-r :在将系统停掉之后重启(常用)
-h :将系统服务停掉之后立即关机(常用)
-n :不经过init程序,直接以shutdown的功能来关机
-f :关机之后强制略过fsck的磁盘检查
-F :系统重启之后,强制进行fsck的磁盘检查
-c :取消已经在运行的shutdown命令内容
reboot
init 6
“重启”halt
poweroff
init 0
“关机”
系统运行级别
0 关机
1 单用户(相当于windows的安全模式)
2 不完全多用户,不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
- runlevel 查询系统运行级别
帮助命令
- man 命令
NAME //显示命令作用
其他帮助命令
--help
例如 ls --help
- 获取内部帮助命令 help
只有通过whereis不可以找到执行文件的命令
可以通过:help 命令 来过去帮助
例如:help cd
- 详细命令帮助 info
info 命令
例如:info ls
- 回车: 进入子帮助页面(带有*号标记)
- u: 返回上一层一面
- n: 进入下一个帮助小节
- p: 进入上一个帮助小节
- q: 退出
压缩及解压缩命令
常用压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2
.zip压缩格式
- 压缩
zip 压缩文件名 源文件
//压缩文件
zip -r 压缩文件名 源目录
//压缩目录
zip格式可以在Windows和linux上互用
zip解压缩
- 解压缩
unzip 解压缩文件名
.gz格式压缩
- gzip压缩
- gzip 源文件
//压缩为.gz格式的压缩文件,源文件会消失
- gzip -c 源文件 > 压缩文件
//压缩问.gz格式的压缩文件,源文件保留
//例如:gzip -c abc > abc.gz
- gzip -r 目录
//压缩目录下所有子文件,但不能压缩目录
- gzip解压缩
- gzip -d 压缩文件
//解压缩文件,解压之后源文件删除
- gunzip 压缩文件
//解压缩文件,解压之后源文件删除
- gunzip -r 目录
//解压缩目录
bz2压缩格式
不能压缩目录
- bzip2 源文件
//压缩为.bz2文件,源文件不保留
- bzip2 -k 源文件
//压缩之后保留源文件
- bzip2 -d 源文件
//解压缩,加-k保留源文件
- bunzip2 源文件
//加压缩,加-k保留源文件
打包命令tar
tar -cvf 打包文件名 源文件
-c 打包
-x 解包
-t 查看压缩包内容,不解压
-v 显示过程
-f 指定打包后的文件名
- tar命令支持直接压缩
tar -zcvf 压缩包名.tar.gz 源文件
//选项:-z压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
//选项:-z解压缩.tar.gz格式
同理:z改为j,则压缩格式为bz2格式
- 将解压后的文件保存到指定问价 例如:
tar -jxvf jp.tar.bz2 -C 想要保存的位置
- 压缩多个文件 例如:
tar -zcvf 想要保存的位置及文件名 文件1 文件2
//将文件1和文件2压缩到同一个文件里
界面
基础命令的操作
- clear
“清屏~~”或者“Ctrl+L”快捷键
- date
显示日期与时间命令
sd@sd:~$ date +%Y/%m/%d
2017/07/31
sd@sd:~$ date +%H:%M
15:00
cal
显示日历的命令,万年历呀!!!!
sd@sd:~$ cal 2020
2020
一月 二月 三月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 1 1 2 3 4 5 6 7
5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
四月 五月 六月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
七月 八月 九月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 1 1 2 3 4 5
5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
30 31
十月 十一月 十二月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
sd@sd:~$ cal 10 2020
十月 2020
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
bc
简单好用的计算器o,quit退出
目录和文件操作
mv
“改名”or“剪切”ls
“查看当前目录所包含文件”
ls -a //查看当前目录所有文件(包括隐藏文件!!)
ls -d //目录本身权限
ls -l //查询详细信息,别名“`ll`”
ls -A //列出全部文件,不包含.和..
ls -f //直接列出结果,而不进行排序
ls -F //根据文件、目录等信息给予附加数据结构,例如:*:代表可执行文件; /:代表目录; =:代表socket文件; |:代表FIFO文件
ls -h //将文件容量以人类易读的方式列出来
ls -i //列出inode号码
ls -n //列出UID与GID,而非用户与用户组的名称
ls -r //将结果方向输出,例如:原本文件名由小到大,反向则为由大到小
ls -R //连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
ls -s //以文件容量大小排序,而不是文件名称排序
ls -t //依时间排序,而不是文件名
ls --color=never //不要依据文件特性给予颜色显示
ls --color=always //显示颜色
ls --color=auto //让系统自行依据设置来判断是否给予颜色
ls --full-time //已完整时间模式输出
ls --time={atime,ctime} //输出访问时间或改变权限时间(ctime)而非内容更改时间(modification time)
//r:可读 w:可写 x:可执行
//第一位:d 为目录 - 文件 l 链接文件 b 设备文件 c串行端口设备
//三位: 当前用户所拥有权限
//三位: 相同组用户权限
//三位: 其他用户权限
//数字 引用数
//再往后面就是创建者,相同组,文件大小,创建时间,文件所包含字符数等;
链接文件ln
hard link (硬链接或实际连接)
原理:每一个文件都有一个inode块儿和一个block块儿,inode记录的是文件的权限信息和block号码信息,block记录的是文件的数据,需要注意的是,文件的inode块儿中信息不包含文件名,文件名信息只是保存在当前目录中的block中。硬链接就是在另一个目录中新建一条文件名连接到一个已经存在的文件的inode号码。
ln (硬链接)文件位置 连接文件位置及名称
//1.拥有相同的i节点和存储block块,可以看做是同一个文件
//2.可通过i节点识别
//3.不能跨文件系统
//4.不能针对目录使用
symbolic link(符号连接,也即是快捷连接)
原理:创建一个独立的文件(与指向的文件具有不同的inode号),而这个文件会让数据的读取指向他连接的那个文件名,由于只是利用文件来作为指向的操作,所以,当源文件被删除之后,symbolic link的文件会“打不了”会一直说“无法打开某文件”,实际上就是找不到源文件“文件名”而已。
连接过程:由连接文件的inode号找到black号,读取black的内容,找到目标文件的目录,通过目录找到目标文件的inode,最终读取到争取的数据。(所以,这种连接需要占用inode和black)
ln [-sf] 源文件 目标文件
-s:如果不加任何参数就进行连接,那就是hard link,至于-s就是symbolic link(软连接)
-f:如果目标文件存在,就主动将姆比哦啊文件直接删除后在创建。
//1.类似于Windows的快捷方式
//2.软连接拥有自己的i节点和存储block快,但是数据块儿中只保留原文件的文件名和i节点,并没有实际的文件数据
//3.lrwxrwxrwx l为软连接 软连接文件权限所有都为rwxrwxrwx
//4.修改任意文件,另一个都改变
//5.删除原文件,软连接不能用
目录操作
cd 文件名
“打开一个目录”
cd .. //后退,返回上一层
cd ‘回车’ 或者 `cd ~` //回到家目录
cd - //进入上次目录
cd . //进入当前目录(没啥用)
cd ../目录/目录/ //相对路径查找打开
cd /目录/目录/ //绝对路径查找打开
mkdir 文件夹名
“创建一个目录”rmdir 文件夹名
“删除一个目录”很少用,通常使用rm
文件操作
touch 文件名
“创建文件”cp 原名 复制名
“复制文件”
//不加复制名 则使用原名
cp -r //复制目录
cp -p //连带文件属性复制
cp -d //如文件是连接文件,则复制连接属性
cp -a //相当于 -pdr
rm 文件名
“删除文件”或者“目录”
rm -r //删除目录
rm -f //强制删除,不询问
cat 文件名
“查看文件内容”
如何改变文件属性与权限
- chgrp: 改变文件所属用户组
chgrp [-R] dirname/filename
-R:进行递归(recursive)的持续更改,同时更改子目录下的文件目录
#范例
chgrp users install.log
//需要注明,改变的用户组必须已经存在,否则会报错;
- chown: 改变文件所有者
chown [-R] 账户名称 文件或目录
chown [-R] 账户名称:组名 文件或目录
chown 可以单纯的修改用户组
chown [-R] :组名 文件或目录
参数:
-R:进行递归
#范例:
chown bin install.log
- chmod: 改变文件的权限
chmod [-R] xyz 文件或目录
-R: 进行递归
命令 | 用户 | 操作 | 权限 | 文件名 |
---|---|---|---|---|
chmod |
u g o a |
+(加入) -(除去) =(设置) |
r w x |
文件或目录 |
注:u=>user=>用户所有者 | g=>goup=>组 | o=>other=>所有者|a=>all=>所有用户。
范例:
chmod u=rwx,go=rx 文件或目录
chmod a+w 文件或目录
磁盘与目录的容量:fd,du
df: 列出文件系统的整体磁盘使用量
df [-ahikHTm] [目录或文件名]
-h //艺人们较易阅读的GB、MB、KB等格式自行显示:
-i //不用磁盘用量,而已inode的数量来显示
-a //列出所有的文件系统,包括系统有的/proc等文件系统
-k //以KB的容量显示各文件系统:
-m //以MB的容量小时各文件系统;
-H //以M=1000K代替M=1024K的进位方式
-T //连同该分区的文件系统名称也列出来
- Filesystem: 代表改文件系统是在那个分区,所以理出设备名称。
- 1k-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变容量
- Used:顾名思义,就是使用掉的硬盘空间了!
- Available:就是剩下的磁盘空间大小
- Use%:就是磁盘的使用率。如果使用率高达90%以上时,最好注意一下了,免得容量不足造成系统问题。(例如最容易填满的/var/spool/mail 这个方式邮件的磁盘)。
- Mountedon:就是磁盘挂载的目录所在(挂载点)
- 由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在super block内的信息,所以这个命令像是结果的速度非常快。在显示的结果中你需要特别留意的是那个根目录的剩余容量,因为我们的所有的数据都是由根目录衍生过来的,因此当根目录的剩余容量剩下0时,那你的linux可能就问题很大了。
- 另外需要注意得失,如果使用-a这个参数时,系统会出现/proc这个挂载点,但是里面的东西都是0,不要紧张。/proc的东西都是linux系统所需要加载的系统数据,而且是挂载在内存当中的,所以当然没有占用任何的磁盘空间了。
du评估文件系统的磁盘使用量(常用语评估目录所占容量)
du [-ahskm] 文件或目录名称
-s //列入总量,而不列出每个个别的目录占用容量
-a //列出所有的文件与目录容量,因为默认仅容积目录下面的文件数量而已
-h //以人们易读的的容量方式列出
-S //不包括子目录下的总计,与-s有点差别
-k //以容量单位为KB显示
-m //以容量单位为MB显示
- 至于-S这个参数,由于du默认会将所有的文件大小,包括/etc下面的子目录容量会被计算一次。然后最终的容量(/etc)也会加总一次,因此很多朋友都会误会du分析的结果不太对劲,所以,如果想列出莫目录下的额全部数据,或许也可以加上-S的参数,减少子目录的计算。
du和df的区别
- 与df不一样的是,du这个命令其实会直接到文件系统内去查找所有的文件数据,所以这个命令运行时会执行一小段时间。此外在默认的情况下,大小的输出是以KB来设计的,如果你想要知道目录占了多少MB,那么可以使用-m这个参数计科,而如果你只想知道该目录占了多少容量的话,使用-s就可以。
vi文件编译器
vi 文件名
“使用vi编译器进入文件编译模式”
在vi编译模式下,按“i”进入插入模式,可以进行插入字符等操作,按“esc”退出。
:q //退出
:w //写入,即保存
:wq //写入退出
:q! //强制退出
磁盘管理
磁盘检验fsck,badblocks
在系统训形式,谁也说不准啥时候硬件伙食电源有问题,,所以四级可能是难免的情况。那么假如文件系统发生错乱的话,该如何是好?就挽救啊!!!
fsck
fsck [-t 文件系统] [-ACay] 设备名
-t //同mkfs一样,fsck也是综合软件而已,因此我们同样需要制定文件系统,不过由于现今的linux太聪明了,他会自动通过super block去分辨文件系统,因此通常可以不需要这个参数的。
-A //一局/etc/fstab 的内容,将需要的设备扫描一次。通常开机过程中就会执行此命令。
-a //自动修复家查到的有问题的产区,所以你不用一直按y
-y //与-a类似,但是某些文件系统仅支持-y这个参数
-C //可以在检验的过程中使用一个直方图来显示目前的进度!
EXT2/EXT3 的额外参数功能:(e2fsck 这支命令所提供)
-f //强制检查,一般来说,如果fsck没有发现任何unclean的表示,不会主动进入细化价差的,如果你想强制进入fsck进入细化检查,就得加上-f标志。
-D //针对文件系统的目录进行优化配置。
- 这是用来检查与修正文件系统错误的命令。需要root权限,否则在正常状况下使用此命令,可能会造成对系统的危害,通常使用这个命令的场合都是在系统楚翔极大地问题,导致你在linux开机的时候的进入单用户模式下进行文虎的行为时,才必须使用此命令。
- 另外如果你怀疑刚才格式化成功的磁盘有问题的时候,也可以使用fsck来检查硬盘。其实就有点像是windows的scandisk。此外,由于fsck在扫描磁盘的时候,可能会造成部分文件系统损坏,所以执行fsck时,被检查的分区务必不可挂载到系统上!即是需要在卸载的状态!
- 另外,我们的系统实际执行的fsck命令,其实是调用e2fsck这个软件。可以mane2fsck找到更多的参数辅助。
badblocks
badblocks -[svw] 设备名
-s //在屏幕上猎术进度
-v //可以在屏幕上看到进度;
-w //使用写入的方式来测试,建议不要使用此参数,尤其是检查的设备有文件时!!
- fsck是用来检查文件系统是否出错,至于badblocks则是用来检查硬盘或软盘扇区有没有坏轨。由于这个命令其实可以通过“mke2fs -c 设备文件名”在进行格式化的时候处理磁盘表面的读取测试,因此目前大多不使用这个命令。
******************未完待续!!!**********************