1、Linux特点
Linux是Unix的衍生版本,Mac os则是Unix 基础上的另一种操作系统。Linux版本主要分为内核版本和发行版本,内核版本主要是操作系统内核,一般我们无法直接使用,而是使用社区或厂商在linux内核基础上研发的发行版本,比如redhat、centos、ubuntu等。
与windows区别:
1、Linux严格区分大小写
2、Linux一切皆文件,无论软件程序还是硬件都对应一个文件
3、Linux区分文件类型并不是根据文件后缀,而是根据文件的权限,但是有一些约定的文件类型来使人区别文件类型
4、windows程序不能直接运行在linux上
Linux一般用于企业服务器或嵌入式(支持裁剪),企业级服务器中一般没有图形界面,因为有更多的额外的程序服务,就会带来更大的风险。linux作为开源软件,拥有丰富的配套资源软件,但是游戏就比较少。
发行版本ubuntu与centos区别是ubuntu图形界面更完善一些,但是也没有达到很优秀,但是centos更稳定一些,做企业级服务器更好。
2、Linux文件用户权限
‘- - - - - - - - - -’
Linux文件权限总共有10位,第1位表示文件的类型-(文件)、d(目录)、l(链接)、b(存储设备)、c(串口设备)
连续---表示rwx(4 2 1)
第1个连续三位表示所有者对文件的权限;
第2个连续三位表示文件所属用户组对文件的权限
第3个连续三位表示其他用户对文件的权限
3、修改用户对文件的权限
chmod 修改文件权限
文字设定法
chmod [ugoa] [+ | – | =] [rwxugofvr…] 文件名
chmod ugo+w file.txt //等价 chmod a+w file.txt
数字设定法
chmod [r4 w2 x1] 文件名
chmod 777 file.txt
chmod 664 file.txt
chown 修改文件所属主或者组
语法:chown [cvR…] 用户或组 文件
chown -R lisi /d1/d2/file //R表示递归包括文件以及目录都修改所有者 不使用R则只是文件或目录file下所有子文件夹权限修改
修改文件所有组 chgrp
语法: chgrp [组名] [文件名]
chgrp group1 file.txt
4、常用文件和目录修改命令
角色切换 su
su root su jack
sudo 用于在执行命令前表示该用户执行被授予的root部分权限,前提是该用户已经在sudoers中
mkdir /dir //提示权限不够
sudo mkdir /dir //则可以执行成功
目录切换cd
//当前为根目录/
cd ect/ //相对路径
cd /ect/ //绝对路径
cd //返回家目录
cd - //返回上一次所在目录cd
cd .. //返回上一级目录
cd . //当前目录
返回当前用户所处绝对路径 pwd
pwd // /etc
查看文件信息 ls
ls [-alhdRt] 目录
-a 全部文件连同隐藏文件(.开头的文件)但是并不列出子目录下文件或目录
-l 列出长数据串,包含文件属性权限 引用次数等
-h 文件容量以易读的方式(KB、GB)列出来
-d 仅列出目录本身
-R 不仅列出本目录下文件,同时递归列出子目录及文件
-t 列出文件以时间排序
ls -al //显示当前目录下所有的文件和目录
ls -al /etc //显示etc目录下所有的文件和目录
创建文件cat (vi filename 、touch filename)
cat [-nb] filename //显示一个已存在的文件的所有内容 n显示行号 b对于空白行不编号
cat >filename //输入内替换原来文件内容 如果文件不存在,则创建一个新文件 ctr+d 退出
cat >filename <<EOF(可自定义) //与上面功能一样,只不过在新的一行输入EOF表示退出编辑
cat >>filename //在原来文件内容后面追加内容,如果文件 不存在则新创建文件
cat >>filename <<EOF //与上面功能一致,同样在新的一行输入EOF表示退出
创建目录 mkdir
mkdir /world //绝对路径方式创建world目录
mkdir world //相对路径 当前路径下创建world目录
mkdir -p /world/world1/world2 //一次创建多级目录
删除目录文件 rm
rm -rf 目录或文件 // r递归删除 f强制删除 i对话提示
拷贝文件或目录cp
cp [-pdra] 源 目标
-p 连同文件属性一块复制 包括时间
-r 递归复制
-d若源文件为连接文件的属性,则复制连接文件属性,而非文件本身
移动文件目录或改名(同一个目录下)mv
mv file dir //文件移动到dir下
mv file1 file2 dir /如果是多个源文件,则最后一个一定是目标目录
将一个文件在另一个文件上建立连接 ln
ln file1 file2 //相当于对file1起别名file2 删除其中一个 不影响另一个使用 硬链接 不能用于目录 跨分区
ln -s file1 file2 //软连接 如果删除file1,则file2也不能使用
4、文件目录查找命令
查找文件命令
locate [-ibc…] filename
locate (只能文件名)比find (但强大)命令快,主要是因为locate并不是像find那样检索相应的所有的文件系统目录,locate是只检索/var/lib/mlocate/mlocate.db数据库,但是这个数据库由系统每天更新一次,所以存在刚创建的文件 locate搜索不到。
还有就是即使更新(updatedb)有些目录下也搜索不到,主要是因为在locate搜索更新配置文件/etc/updatedb.conf中在搜索的时候把默写目录已经排除在外 比如/temp 、/var/temp
可自行修改搜索限制
[root@localhost /]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"
[root@localhost dirtest]# touch gf.txt
[root@localhost dirtest]# locate /dirtest/gf
[root@localhost dirtest]# updatedb
[root@localhost dirtest]# locate /dirtest/gf
/dirtest/gf.txt
查找命令的命令
whereis [-b(显示可执行文件)m(显示帮助文档)] 系统命令
[root@localhost /]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
which 系统命令
显示命令所在路径 有别名会显示别名
[root@localhost /]# which cd
/usr/bin/cd
[root@localhost /]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
命令执行时根据PATH环境变量中来搜索的并执行
[root@localhost /]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/lr/.local/bin:/home/lr/bin
强大的查找find命令
find [搜索范围] [搜索条件]
[root@localhost /]# find /dirtest -name hello.sh //在范围内 根据文件名全匹配搜索
/dirtest/hello.sh
//只搜索文件
[root@localhost dirtest]# find . -type f
./file1.txt
./hello.sh
./test/file.sh
./ff.txt
./ff
./f
./gf.txt
//只搜索目录
[root@localhost dirtest]# find . -type d
.
./test
./test1
./test2
./tets3
./tets3/test31
./tets3/test31/test32
//通配符匹配文件名 任意符号* 单个字符? 其中任意一个字符[]
[root@localhost dirtest]# find . -iname “*.sh” //i不区分大小写 含通配符部分要用引号
./hello.sh
//组合命令 -exec 命令 {} ; 固定格式 对前面执行后在执行这个命令
[root@localhost dirtest]# find . -type f -print -exec ls -al {} ;
./file1.txt
-rw-r–r--. 1 root root 52 10月 19 16:43 ./file1.txt
//加-print会把文件对象输出
[root@localhost dirtest]# find . -type f -exec ls -al {} ;
-rw-r–r--. 1 root root 52 10月 19 16:43 ./file1.txt
//找到某个文件并删除
[root@localhost dirtest]# find . -name f -exec rm -rf f {} ;
//查找文件权限为644的文件
find ./ -perm 644
//根据大小查找文件 等于2k(M)大于+2k(M) 小于-2k(M)
find ./ -size -2k
//根据修改文件内容时间(天)查找 2 +2 -2 (其它时间雷同 ctime 属性修改 atime 访问)
find . -mtime -2
//根据修改文件内容时间(分钟)查找 2 +2 -2
find . -mmin -2
//根据文件所属用户查找
[lr@localhost dirtest]$ find . -user root
查找文件中的字符串grep 常与find搭配使用
grep [-iv] 字符串 文件名
-i 忽略字符串大小写
-v 排除字符串
grep -v he hello.sh
//与find组合使用 查找指定目录下的文件中含有某个字符的行
[root@localhost practice]# find ./ -type f -print -exec grep "金庸" {} \;
[root@localhost practice]# find ./ -type f -print | xargs grep -n "金庸"
-exec与-args区别
-exec 结果参数是一个一个传递的,传递一个参数执行一次后面的命令 -print可以看出;把前面的命令标准输出,作为后面的命令的标准输入,其中{}表示前面命令的结果集,;表示命令终结符
-xargs 是把结果一次(-n可指定传递个数)传递给后面指令执行。
5、查看命令帮助文档
帮助命令man(还有–help)(help 内核自带命令)(info 命令 文档巨大)
查看用户命令如ls 而系统内核命令则可以用help cd来查看帮助文档
man ls //查看ls命令
[root@localhost dirtest]# man -f ls //查看该命令帮助等级数字
ls (1) - list directory contents
ls (1p) - list directory contents
[root@localhost dirtest]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost dirtest]# man 1 ls
//命令 --help也是查看帮助文档
[lr@localhost ~]$ ls --help
// help 内核命令
help cd
//info 命令
info ls
6、linux中常用文件目录压缩
格式 .zip .gz .bz2 ->tar.gz tar.bz2(最常用)
gzip 压缩目录是自压缩目录下的文件,并不会压缩目录
bzip2 是不能压缩目录,因此 需要先打包成.tar单文件,然后压缩 可以命令一步完成
zip 压缩后文件 源文件 //参数文件 可以用包含目录的文件
unzip 解压后文件 源压缩文件 //比如 file1 /dir1/file1
//压缩文件至当前目录
root@localhost dirtest]# zip ff.zip ff
//压缩文件至指定目录
root@localhost dirtest]# zip dir2/ff.zip ff
//解压至当前目录下
[root@localhost dirtest]# unzip ff.zip
//解压文件至指定目录下
[root@localhost dirtest]# unzip dir2/ff.zip -d dir1/
//压缩目录加 -r 其他一样
[root@localhost dirtest]# zip -r dir2/d1.zip dir1
[root@localhost dirtest]# unzip dir2/d1.zip
gzip 源文件 (源文件会消失 只当前目录下使用 不能跨目录,可以使用>流到指定的目录或文件 ls >abc.txt 把结果写入到文件)
gunzip 压缩文件 /gzip -d 压缩文件 (压缩文件也会消失)
//压缩文件
[root@localhost dirtest]# gzip ff
//解压文件
[root@localhost dirtest]# gzip -d ff.gz
//压缩文件夹 自压缩文件夹下的文件 注意 这个需 -r
[root@localhost dirtest]# gunzip -r dir1
bzip2 源文件 (不会保留源文件 -k 保留源文件 且不能压缩目录)
bunzip2 压缩文件 /bzip2 -d 压缩文件 (-k 保留原文件)
//压缩文件
[root@localhost dirtest]# bzip2 --k ff
//解压文件
oot@localhost dirtest]# bunzip2 ff.bz2
通过tar可以使命令和zip格式一样 (压缩类型z与j参数要放在最前)
tar -zcvf 压缩文件 源文件
tar -zxvf 压缩文件
//压缩
[root@localhost dirtest]# tar -zcvf ff.tar.gz ff
//解压
[root@localhost dirtest]# tar -zxvf ff.tar.gz
//压缩
[root@localhost dirtest]# tar -jcvf ff.tar.bz2 ff
//解压
[root@localhost dirtest]# tar -jxvf ff.tar.bz2
7、关机与重启命令
shutdown [-rhc]
shutdown -h now //现在关机 不使用 远程没办法再次开机
shutdown -r now //现在重启
shutdown -r 10:00 //十点后重启
shutdown -r +20 //而是分钟后重启
shutdown -c //取消刚才执行的关机命令
重启 reboot
其他关机命令 init [0-6]
0:关机
1:单用户模式 root
2:不完全多用户,不包含nfs服务
3:完全多用户
4:未使用
5:启用图形界面
6:重启
init 0
8、挂载
mount [参数]设备符 挂载目录 //参数代表格式等
umount 设备符或挂载目录
9、查看用户登录信息
[root@localhost ~]# w //查看登陆的用户信息 **当前用户**
[root@localhost ~]# last //查看所有用户登录信息
[root@localhost ~]# lastlog //查看用户最后一次登录信息 查看是否有何黑客登录 即不是自己登录的记录