Linux基本指令和权限理解
Posted SuchABigBug
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基本指令和权限理解相关的知识,希望对你有一定的参考价值。
指令目录
一、基本指令
1.1 背景介绍
Windows vs Linux:
为了讨好用户,微软的User Interface做的很好不对外开放,但是Linux是开源的,在当今互联网时代服务器上跑的基本上都是Linux,连咱们家微波炉,冰箱都是。由于开源的特性使得这套系统安全,稳定可靠。作为程序员的我们掌握这些是很有必要的
1.2 基本指令
1.2.1 ls
对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
1.2.1.1 which ls
ls通过which命令可以查看当前可执行程序ls的路径
1.2.1.2 ll
ls 和 ll有什么区别?
我们用which ll和which ls分别看一下有什么区别
然后可以自定义一个 alias lll=‘ls -l -a -I —color=auto’
alias给命令起别名
我们可以通过alias ls='ls --color=auto'
显示颜色来区分文件的属性蓝色的为directory目录,白色为普通文件,而绿色的是可执行文件
1.2.1.3 man is
俗话说有不懂的就找男人,man一下此命令
我们可以通过man ls
来查看带的相应参数的意义
1.2.2 pwd
显示用户当前所在的目录
1.2.3 tree
显示当前目录以及目录下的子树
1.2.4 cd
相信大家对这个命令都不陌生,用于改变工作目录,将当前工作目录改到指定目录下
cd … : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录
cd /home/henry/linux/ : 绝对路径
cd …/day2/ : 相对路径
1.2.5 touch和mkdir
touch新建一个不存在的文件,可更改文档或目录日期
-d 制定日期时间,而非现在时间
mkdir新建一个空目录, -p, --parents 建立多个目录
1.2.6 cp
用于拷贝源文件或目录 到 另外一个地方
如:cp fileName destinationFile -r
1.2.7 mv
用来移动文件或将文件改名,经常用来备份文件或目录
我们可以将rm改造成mv
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile()
mv -i ~/.trash/\\$@ ./
trash()
mv $@ ~/.trash/
1.2.8 cat, more和less
这三个命令都是用于查看目标文件的内容,但是有略微差异
cat指令
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
more指令
-n 对输出的所有行编号
q 退出more
less指令可以对文件或其他输出进行分页显示,比其他两个更有弹性,支持用PageUp和PageDown前后翻页,支持搜索功能
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q: quit
1.2.9 head和tail
顾名思义用来显示开头或结尾某个数量的文字区块
有一个文件共有100行内容,请取出第50行内容
seq 1 100 > test # 生成1到100的序列装入test
方法1 head -n50 test > tmp #将前50行装入临时文件tmp
tail -n1 tmp #得到中间行
方法2 head -n50 test | tail -n1
1.2.10 date
date -s 设置当前时间
时间->时间戳:date +%s
为什么要有时间戳?
因为是累积的秒数,递归且不重复的,比较适合进行查找,尤其是范围查找,在日志当中可能会使用时间戳,得出时间戳在百度上转换
1.2.11 cal
用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
1.2.12 stat
stat filename (查看文件信息详细修改时间)
-:一个杠开头的为普通文件(文本文件,可执行,各种库文件)
d:目录文件
l: 链接文件
p:管道文件
c:字符文件(字符设备,键盘,显示器)
b:块设备(磁盘),以一个块512字节为一个单位
1.2.13 find
语法: find pathname -options
用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
which ls ,专门查找命令所在路径,在自己所在相关配置文件下找
如which gcc
Where commandName ,在系统中特定路径下,进行文档,命令等相关文件查找
find / -name temp.txt ,找的特别慢,真正根据所需要的名字去查找
1.2.14 grep
在文件中搜索字符串,将找到的行打印出来
-E ,让他支持正则表达 grep -E ‘999|888’ log.txt 搜索999或者888
-I , ignore忽略大小写
-n,带行好
-v,反向
1.2.15 zip/unzip
-r 递归处理,将制定目录下的所有文件和子目录一并处理
将test2目录压缩:zip test2.zip test2/*
解压到tmp目录:unzip test2.zip -d /tmp
1.2.16 tar
tar czf filename.tgz filename, 这里的czf为create zip file
tar xzf filename.tgz ,这里为解压
tar xzf lesson3.tgz -C /tmp , -C指明想要解压到哪个路径, -V 打印出执行过程
为什么要压缩包?
因为有大量文件,那么变成一个文件可以减少为网络或其他原因导致丢失的情况,减少存储或者传送成本
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
1.2.17 bc
可以很方便的进行浮点运算,类似计算器
1.2.18 uname
uname用来获取电脑和操作系统的相关信息
uname -r 查看内核版本
应用程的发布版本
1.2.19 扩展命令
安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;
◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
二、权限理解
2.1 超级用户与普通用户
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
su - 切换成超级用户
sudo + 普通用户 可短期提升权限,以roots身份运行
logout进行退出或者su userName切换用户
当用户登陆Linux系统的时候,系统会给用户创建一个进程,一般叫做bash(命令行解释器)
用户与shell打交到,而不是一直访问操作系统
因为用户不擅长直接与操作系统打交到,而是用外壳帮忙传递
用户如果有非法操作,shell会直接拒绝,从而保护了操作系统
很多人认为shell和bash是一个东西?大错特错
shell是所有 外壳的统称,命令行解释器
而bash 只是其中的一种,在centos7 用的是bash
2.2 文件类型和访问权限
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
文件权限属性:
r (读)
w (写)
x (执行权限)
2.3 chmod修改权限
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
chmod g-rw filename ,让group组不具备读和写权限
chmod o+rwx filename, 让other具备读写和执行权限
对多个人的多个条件进行修改
如果是按照八进制呢? 比如6 6 6, 那么转换成二进制就是1 1 0,对应的权限就是r w -
chmod 666 file.txt
chown 用于修改文件拥有者
chgrp 修改文件或目录的所属组
2.4 umask
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到
umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
umask决定,是权限掩码,凡是在umask出现的权限都不应该在最终权限中出现,因为是取反 default &~umask
第一个0不管, 这里转换成二进制 就是000 000 010
下面为umask修改创建文件或目录时默认权限的转换:
举个例子
umask 777
然后touch newfile
2.5 chmod +t
如何防止误删呢?
chmod +t dirctoryName
这个就是设置粘滞位,解决同一个目录下,不同人创建的文件,可能会被其他人删掉,为了防止误删,接下来
创作不易,如果文章对你帮助的话,点赞三连哦:)
以上是关于Linux基本指令和权限理解的主要内容,如果未能解决你的问题,请参考以下文章
Linux编程一Linux常见指令和权限理解(思维导图总结)
Linux编程一Linux常见指令和权限理解(思维导图总结)
Linux编程一Linux常见指令和权限理解(思维导图总结)