目录
前言
本文将开启我的Linux之旅,主要讲述Linux中常用的指令,热键和权限管理。内容丰富,干货满满,适合新手学习!
1. Linux指令
(1) ls
作用:对于目录,列举出目录下的所有子目录与文件。对于文件,列举出文件名及其他信息。
用法:ls [目录或文件] [选项] (可以颠倒)
选项:
- -a 列举出目录下的所有文件,包括以.开头的隐含文件。
- -d 将目录像文件一样显示,而不是显示其下的文件。
- -l 列出文件的详细信息。
不加选项,显示当前目录下的文件与目录。
加上-l选项,显示详细信息,其中ll是该命令的缩写。
不同选项可以组合,下面显示了隐藏文件。
(2) pwd 和 cd
pwd
- 作用:可以显示用户当前所在目录。
- 无选项。
cd
作用:进入指定目录或文件。
用法:cd + [目录名]
- 路径分绝对路径和相对路径。其中.代表当前目录,..代表上级目录。一开始使用的是绝对路径,第二个使用的是相对路径。
- ~代表家目录,-会返回上次所在目录。一开始在doc目录下,cd+~到普通用户名目录,再cd+-返回doc目录。
(3)touch 和 mkdir
touch
作用:可以用来创建一个新文件。
用法:touch + [文件名]
mkdir
作用:可以在当前目录下创建一个新目录。
用法:mkdir + [目录名]
- 选项:-p 后面可以跟路径,递归创建多个目录。当前目录下,有一个file.txt文件和doc1目录。使用mkdir加上-p选项,递归创建目录。通过tree指令,查看当前目录树状展开图,可以发现递归创建多级目录成功。
(4) rmdir 和 rm
rmdir跟mkdir是相对的,是remove directory的缩写,意思是删除目录。
作用:删除空目录
用法:rmdir + [目录名]
rm是remove的缩写,删除的意思。
作用:删除文件或者目录
用法:rm +[选项] + [文件或目录] (选项也可以放在文件或目录后面)
- -r选项用来递归删除目录内部所有内容。当前目录下,有dir1/dir2/dir3这个路径,正常使用rm是无法删除一个目录的,需要加上-r选项,才能删除干净。
- -f选项是force的缩写,强制删除。在root账号下,删除时通常会询问,如果不想弹出询问,可带上-f选项。
(5)cp
cp是copy的缩写。
作用:复制文件或者目录
用法:cp + [源文件或目录] + [目标文件或目录]
- file.txt文件中有五行p字符。通过cp指令复制到hello.txt文件中,使用cat指令可以打印文件内容。
- -r选项可以递归赋值某个目录内的所有内容,操作如下。
(6)mv
mv是move的缩写,可以移动文件和重命名文件。
用法:mv + [源文件或目录] + [目标文件或目录]
作用:
- 当第二个参数不是路径,是一个名称时,可以给源文件或目录进行重命名。
- 当第二个参数是已存在的路径(相对路径和绝对路径都可以),源文件或者目录可以有多个,mv指令会将指定的文件或目录全部移动到指定路径下。
我们通过mv指令,将dir1目录和big.txt文件移动到doc目录下。
(7)man
Linux的命令有许多选项,我们不可能全部记住,man指令就是用来查找内容。
用法:man + [选项] +[指令]
通过man指令,查询ls指令的详细说明。
在man指令后加上数字,指定去那一部分查找信息。
- 第1节:用户命令(User Commands)
- 第2节:系统调用(System Calls)
- 第3节:库函数(Library Calls)
- 第4节:特殊文件(Special Files)
- 第5节:文件格式和约定(File Formats and Conventions)
- 第6节:游戏和娱乐(Games et. Al.)
- 第7节:宏命令和约定(Miscellaneous)
- 第8节:系统管理员命令(System Administration)
(8)cat,more和less
cat用来查看指定文件内容
用法:cat + [选项] + [文件名]
- -n选项表示显示行号。
- -b选项,对于非空行输出行号。
- -s选型不输出多行空行。本来有两行空行,现在只输出一行。
more也是查看指定文件内容。
用法:more + [选项] + [文件名]
less指令十分强大,是more命令的改进版。
- 分页显示:
less
允许您一次查看文本文件的一部分,而不是一次性加载整个文件到内存,这对于查看大文件非常有用。 - 随机访问:您可以向前或向后滚动文件,并且可以跳转到文件的特定位置。
- 搜索功能:可以在文件中搜索特定的文本字符串。
输入指令时
- -i 忽略搜索时的大小写
- -N 显示每行的行号
进入less内部后
- /:进入搜索模式,输入要搜索的字符串后按回车键。
- n:跳转到下一个搜索结果。
- N:跳转到上一个搜索结果。
- q:退出less。
(9)head 和 tail
head用来实现文件开头内容到标准输出上,默认head打印指定文件前十行
用法:head + [选项] + [文件]
- -n后面紧跟行号,表示需要显示的行数。
tail顾名思义是显示文件的尾部内容到标准输出,并且不断刷新,是你看到最新文件的内容。
用法:tail + [选项] + [文件]
- -f 循环读取
- -n后紧跟行号,表示读取的行数。
读取指定文件后10行的内容。
在big.txt中有1000行内容,怎么读取到到第100行的内容?
- 方法一:先使用head读取前100行内容到一个临时文件中,使用‘’>‘’符号,这个操作叫做重定向。再从临时文件中,使用tail指令读取最后一行。
- 方法二:使用"|"符号,叫做管道。把head和tail指令直接连接在一起,管道会把head指定内容存储起来,方便后面指令的使用。
(10)grep
grep可以在文件中搜索字符串,并打印出字符串所在行。
用法:grep + [选项] + [搜索字符串] + [文件]
- -i选项,可以忽略字母大小写。file文件中有6行内容,查找“a”时,不管是大写还是小写都会显示。
- -n选项,会显示匹配内容所在的行号。
- -v选项会显示不匹配的内容。
- -c选项会计算匹配内容的行数,并显示出来。
(11)zip和unzip
zip指令时将目录或者文件压缩zip格式,unzip就是解压zip格式的文件。
用法:zip + [选项] + [压缩后的文件名] + [目标文件或目录]
- -r选项,递归处理,将指定目录下的所有文件和子目录一并处理。在当前目录下,doc目录中有许多文件和子目录,我们对他进行压缩。
- -d选项是解压到指定目录,一般会解压到当前工作目录。
(12)tar
tar也是用来打包和解包的。
用法:tar + [-cvxzf] + [压缩的文件名]
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -v :压缩的过程中显示文件,这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔,不要再加参数!
- -C : 解压到指定目录
一般来说,接cvzf即可。选项后面跟的是压缩后的文件名,.tgz是.tar.gz的缩略形式。
解压的话,将选项中的c换成x,去掉z即可。-C指定解压目录。
1.2 热键
[Tab]按键——具有命令补齐和文件或目录名补齐的功能。
[Ctrl]-c按键——可以终止当前的程序,直接退出。
[Ctrl]-d按键——代表着键盘输入结束(End Of File)的意思,在某些情况下,可以直接退出回话。
2. 权限管理
2.1 文件访问者
- 文件和文件目录的所有者:u--->User
- 文件和文件目录的所有者所在的组的用户:g--->Group
- 其他用户:o--->Others(外国人)
2.1 文件属性,文件类型和访问权限
文件的属性:
文件类型:
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
基本权限:
- 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件权限。
- 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “-”表示不具有该项权限。
2.3 权限值的表示方法
rwx分别表示读写执行的权限,当没有权限时,用“-”表示。这只有两种形态,可以用二进制数0和1表示。所以这三个位置中有权限用1表示,无权限用0表示。
- rwx代表111,相当于八进制7
- rw- 代表110,相当于八进制6
- r-x 代表101,相当于八进制5
- r-- 代表100,相当于八进制4
- -wx 代表011,相当于八进制3
- -w- 代表010,相当于八进制2
- --x 代表001,相当于八进制1
- --- 代表000,相当于八进制0
2.4 设置文件访问权限
chmod可以设置文件访问权限
用法:chmod + [选项] + [权限] + [文件或目录]
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
chmod可以跟+-=结合改变不同对象的权限。
chmod指令与a结合可以改变三个对象的所有权限。
根据权限值的表示方法,可以直接写三位数字,每个数字都是八进制来设置权限。
umask是用来查看或修改文件掩码。
新建文件默认权限=0666,新建目录默认权限=0777。但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。因为会受到umask的影响,假设默认权限是tmp,那么实际创建出来的文件权限是tmp&(~umask)。
用法:umask + [权限值]
2.5 粘滞位
目录的权限:
可执行权限(Execute permission): 如果目录没有可执行权限,则用户无法通过
cd
命令进入该目录。可读权限(Read permission): 如果目录没有可读权限,则用户无法使用
ls
命令列出目录中的文件和子目录。可写权限(Write permission): 如果目录没有可写权限,则用户无法在目录中创建新文件或子目录,也无法删除目录中的文件或子目录。
也就是说,在同一个目录下,只要有该目录的写权限,不管我是不是拥有这个文件的写权限,都可以删除文件或子目录。这不是一个BUG吗?
为了解决这样的事情,Linux中有粘滞位的概念。
目录使用chmod +t指令来设置粘滞位。设置完后,该目录下的文件只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除
总结
通过本文,可以学习到一些Linux的皮毛知识。前路漫漫,任重道远!
创作不易,希望这篇文章能给你带来启发和帮助,如果喜欢这篇文章,请留下你的三连,你的支持的我最大的动力!!!