Linux系统操作入门
记录学习Linux的一些总结,包括学习鸟哥的Linux私房菜的笔记
其他
图形模式与文字模式的切换方式
Linux预设提供了六个命令窗口终端机让我们来登录。
默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。
如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。
当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。
Linux 关机
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。
例如你可以运行如下命令关机:
1 |
|
最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。
关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。
处理目录的常用命令
接下来我们就来看几个常见的处理目录的命令吧:
- ls(英文全拼:list files): 列出目录及文件名
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work directory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 删除文件或目录
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
ls (列出目录)
在Linux系统当中, ls 命令可能是最常被运行的。
语法:
1 |
|
选项与参数:
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将家目录下的所有文件列出来(含属性与隐藏档)
1 |
|
cd (切换目录)
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
1 |
|
pwd (显示目前所在的目录)
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
1 |
|
选项与参数:
- -P :显示出确实的路径,而非使用连结 (link) 路径。
实例:单纯显示出目前的工作目录:
1 |
|
实例显示出实际的工作目录,而非连结档本身的目录名而已。
1 |
|
mkdir (创建新目录)
如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
语法:
1 |
|
选项与参数:
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
实例:请到/tmp底下尝试创建数个新目录看看:
1 |
|
加了这个 -p 的选项,可以自行帮你创建多层目录!
实例:创建权限为 rwx–x–x 的目录。
1 |
|
上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx–x–x 的权限。
rmdir (删除空的目录)
语法:
1 |
|
选项与参数:
- -p :连同上一级『空的』目录也一起删除
删除 runoob 目录
1 |
|
将 mkdir 实例中创建的目录(/tmp 底下)删除掉!
1 |
|
利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。
不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。
cp (复制文件或目录)
cp 即拷贝文件和目录。
语法:
1 |
|
选项与参数:
- -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用於目录的复制行为;(常用)
- -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
- -u:若 destination 比 source 旧才升级 destination !
用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
1 |
|
鸟哥的Linux私房菜
第四章
Ctrl + Shift + F1 ~ F6
切换6个终端
date
显示当前时间
locale
显示当前支持的语系
cal
显示日历
cal + 年份 显示该年份的日历
bc
简单的计算器小程序
bc仅支持+ - * / ^ %
运算
nano
一个很简单的文本编辑程序,后面加上文件名即可进行编辑。
Ctrl + C
强制退出
Ctrl + D
表示EOF或者exit
Tab
按两下自动补全
sync
将内存中的内容转存在硬盘中
在关机之前记得多使用几次这个命令,防止内容的丢失
shutdown
为关机指令
reboot
为重启指令
第五章
用户分为自己,自己所在群组,其他人三种。
su -
切换为root账户,密码为安装系统时创建的账户的密码
ls -al
显示当前文件夹下的所有文件
第一个字符可能为d,-,l,b,c。分别表示文件夹,文件,连接档(类似windows里面的快捷方式),周边设备(随机存储设备),键盘鼠标(一次性存储设备)
后面三个字母一组表示每类用户的权限,r表示可读,w表示可写,x表示可执行。三组分别为:拥有者,群组内成员,非本人且没有加入本群组之外的账户。
一串字母之后的一个数字是连接数,后面的两个分别是拥有者和拥有者所加入的群组。最后名字前面的是最后修改的时间,在前面一个数字是该文件的大小bytes。
如果一个目录d的权限没有x的话就不能进入该目录。
root无视所有的规则。
ls - l
查看最近修改的记录
chgrp
更改指定文件的群组。e.g. chgrp users test.txt
chown
更改指定文件的拥有者,e.g. chown bin test.txt
e.g. chown root:root test.txt
cp
对指定文件进行拷贝。e.g. cp test.txt test2.txt
chmod
更改文件的权限,r的权限对应的值是4,w是2,x是1,对于每个类型的用户的权限就是这些权值相加。e.g. chmod 777 test.txt
很巧妙的是,这个值唯一对应一种权限的组合。
chmod
的另一种方法e.g. chmod u=rwx,go=rx test.txt
u表示拥有者,g表示群组,o表示其他人,a表示所有类型。
文件是否能执行和后缀名无关,和是否有x的权限有关。文件的w权限是指可以修改文件的内容,但是不包括删除该文件。
在有w权限的文件夹下是可以删除没有w权限的文件。
常见的后缀名有:*.sh
表示为脚本或者批处理文件,*Z *.tar *.tar.gz *.zip *.tgz
表示压缩包文件 *.html *.php
表示网络相关的文件。文件是否可以执行和后缀名没有关系,只和这个文件的x权限有关。
Linux的文件系统依据:FHS
网页中有一些关于Linux根目录下目录的主要含义的解释。
目录树的简单示意图。
绝对路径和相对路径:以根目录/开头的路径都是绝对路径,反之则为相对路径,相对路径是指当前所在路径的相对位置来定义的。
. ./
都表示当前目录 .. ../
都表示上一级目录
使用 uname -r
查看核心版本
使用 uname -a
查看操作系统的版本
第六章
Linux中根目录中也有./和../目录,并且 ./ 目录和 ../目录是同一个目录。
cd
表示切换目录。几个比较特殊的目录在上面的图片上都可以看出。
pwd
表示显示当前的目录。pwd -P
表示显示文档的实际地址,对于一些快捷方式的地址会发生区别。
mkdir
表示建立一个新目录。e.g. mkdir -p test1/test2/test3/test4
会依次建立目录 e.g. mkdir -m711 test2
会建立一个test2目录并且权限为711。
一般情况下建立目录需要一层一层建立,加上-p选项可以将所有的目录都按照顺序依次建立起来,而且如果本来目录存在的情况下,系统不会提示错误信息。(不建议,如果出错很麻烦)。
rmdir
删除空目录。e.g. rmdir -p test1/test2/test3/test4
该命令只能一层一层删除目录,加上-p可以一次性全部删除,该命令删除的目录中必须不能有别的文档或者目录,如果想要带里面的文件一起删除的话可以使用rm -r test
命令来删除,(不过比较危险)。
输入exit
或者按Ctrl + D
可以退出已经登录的root账户
echo $PATH
可以显示当前用户的PATH路径都有哪些。在使用指令的时候会优先在PATH的路径下寻找可执行文件,如果有多个重名文件的话会优先使用先搜索到的文件。
PATH="${PATH}:/root"
可以将/root加入到PATH路径中。
为了安全起见不要将 .
加入PATH中。
在Bash Shell中ls -l
可以简写为ll
cp
表示copy,即对文件进行复制和粘贴。
其中-i
选项表示如果出现覆盖先进行询问。-a
表示复制的文件的群组和时间都和原文件一样。-l
表示创建一个实体链接。-s
表示创建一个符号链接,即产生了源文件的一个捷径。-d
表示如果复制的文件为一个捷径文件的话复制该捷径,因为cp直接复制一个捷径的话会复制源文件。cp指令可以将多个资料一次复制到一个目录中去,但是最前面一定是目录。
rm
表示remove,即移除目录或者文档。
其中大部分的发行版Linux都默认rm带上了-i
参数,-r
很危险,同时不要将文件起名为-aaa-
这种类型,因为如果这时想要删除这个文件的时候,就会报错,因为会优先检测出-a这个选项,所以文件起名一般不要用-开头。
mv
表示move,即移动文件或者目录。
可以使用mv来对一个文件进行更名的操作。
cat
用来显示文档内的内容。-n
选项用来带行号输出,-A
用来显示所有的特殊字符和正常字符。
tac
是cat
命令的反着输出的版本,从最后一行到第一行输出。
nl
命令用来带行号输出文件的内容。-b a
选项用来将空白行也带上行号。-b a -n rz
用来将空白行带上行号之后再前面补零。-b a -n rz -w 3
用来将空白行带上行号之后再前面补零,并且规定零加上数字一共宽度为三。
more
命令用来可以翻页的查看一个文档。
进入more一个文档之后的一些操作如上图。对文档内的字符串进行/查找之后按n查看下一个查找到的字符串。
less
命令也是可以翻页查看一个文档,功能比more
更加的强大。
head
命令用来取出前面的几行。
在不加上-n
选项的时候默认输出一个文件的前10行,加上-n
选项可以自定义输出文件的前几行,值得注意的是,如果-n
后面跟的是一个负数,表示的是这些行不输出,比如-n -100
表示前100行不输出,从100行之后的所有行全部输出。
tail
命令用来取出文件的后面几行。
-n
的使用和head大致相同,一个比较好玩的是 -n +100
表示100行之后的所有行都输出。-f
选项用来持续检测这个文件,如果一个文件一直在进行写入操作,那么会持续的输出这个文件新加入的行,直到按下Ctrl + C
后结束检测。
head
和tail
的组合使用可以输出11 ~ 20 行:head -n 20 /etc/man_db.conf | tail -n 10
|表示将前面执行的结果交给后面接着执行。
在上面的基础上再加上cat
可以输出正确的11~20行的行号:cat -n /etc/man_db.conf | head -n 20 | tail -n 10
od
命令是针对那些非文字文档的一个命令。
对于一些 data file 或者 binary file 可以使用od命令使这些文件以ASCII码的形式输出出来。
我们可以利用这个命令来对已有的字符串输出对应的八进制ASCII码:echo password | od -t oCc
使用ls
的--time
选项来查看每个文件的不同类型的时间。
使用touch
命令可以:1.建立一个空白的文档。2.将一个文档的时间修改为某一个特定的时间。
umask
命令可以查看当前用户创建的文档或者目录的预设权限。
输入umask
输出的一串数字从第二个到第四个分别表示user,group,other三种用户被拿掉的权限的权值的和。比如4表示读,2表示写,5表示读和执行。
命令umask 002
表示将该用户创建文件的预设权限设置为仅为other的用户不能写。
一般root用户将umask设置为022,因为是出于安全的考虑。
chattr
命令表示设置文件或者目录的隐藏属性
chattr +i attrtest
表示给attrtest文件加上锁定的隐藏属性,用chattr -i attrtest
来取消该隐藏属性。
lsattr
命令用来查看一个文件或者目录的隐藏属性。
SUID
(Set UID)是一个特殊的权限,可以让非root用户暂时使用root命令。
SUID是在原本user的x权限的位置上标为s,此时权限表示为SUID。
下图为SUID的限制于功能:
而且需要注意的是SUID只可以用在binary program上,并不能用于shell script。
SGID
(Set GID)是指在群组的x权限的位置上标为s的一个权限。
SGID对于可执行文件的限制于功能为下图:
SGID对于目录的限制于功能为下图:
SBIT
只能对目录有作用。
4,2, 1分别表示这三个隐藏权限的权值。在chmod的第一个值中表示该文件的隐藏权限属性值。使用:chmod 4755 test
可以设置test的隐藏权限。
上图是使用文字的方式添加文件的隐藏属性。
fail
命令来查看改文件的基本资料,是ASCII文件还是date文件或者可执行文件的一些细节。
which
命令用来寻找命令的完整路径。
which会根据PATH的路径来依次寻找命令所在的地址。
whereis
命令是用于在一些特定目录中寻找档案名。
locate
命令用来通过关键字在自建的数据库中搜索带有该关键字的文件。
locate使用的是由已建立的資料庫 /var/lib/mlocate/
里面的资料所搜到的,该数据库默认每天更新一次,所以如果没有更新的话就可能搜索不到,这时就可以进行手动更新。
updatedb
命令会搜索硬盘中的文档的名称并且更新资料库中的档案。
find
命令用来查找文件。
Linux系统操作入门