Linux基本操作
一、操作系统
1.作用
主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用,作为中间人,链接软件和硬件
2.不领域的主流操作系统
桌面操作系统:
- Windows
- Linux
- macOS
服务器操作系统:
- Windows Server
- Linux
嵌入式操作系统:Linux
移动设备操作系统:iOS、Andriod
3.虚拟机
二、操作系统发展史
1.Unix
2.Minix
3.Linux
三、Linux内核及发行版本
1.内核版本
内核(kernel)是系统的心脏,是运行程序和管理硬件设备的核心程序,它提供了一个早裸设备与应用程序间的抽象层
Linux内核版本又分为稳定版和了开发版,相中版本相互关联、相互循环
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于旧的稳定版只是修正一些bug或加入一些新的驱动程序
- 开发版:由于要试验各种解决方案,所以变化很快。
2.发行版本
Linux发行版(也被叫做GNU、Linux发行版)通常包含了包括桌面环境、办公套件、媒体播放提、数据库等应用软件。常见的发行版本:
- Ubantu
- Redhat
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
四、Linux应用领域
1.服务器
2.嵌入式等
五、Centos图形界面
六、文件和目录
1.Window和Linux文件系统的区别
在Windows下,打开计算机,我们看到的是一个个的驱动器盘符。每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形。
在Linux下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录);
2.系统目录结构
树状目录结构:
以下是对这些目录的解释:
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:这个目录是用来存放一些临时文件的。
/usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
七、常用Linux命令的基本使用
命令行程序(终端terminal)
| 序号 | 命令 | 对应英文 | 作用 | 使用 | |
| 1 | ls | list | 查看当前文件夹下的内容 |
ls -a 显示当前文件夹下的所有文件(包括隐藏文件)
ls -l显示文件详细列表(默认文件大小为字节)
ls -d仅列出目录本身,而不是列出目录内的文件数据(常用)
ls -lh把文件大小以人性化的方式显示
ls -la
ls -lah
ll等于 ls -l
|
|
| 2 | cd [目录名] | change directory | 切换文件夹 |
cd /home 绝对路径,以根目录开头
cd admin 相对路径,不以根目录开头
cd ..返回上一级目录
cd -切换最后两个命令,相当于电视回看功能
cd ~回到自己的家目录 /home/admin
|
|
| 3 | pwd | Print work directory | 查看当前所在文件夹 | ||
| 4 | touch [文件名] | touch | 如果文件不存在,新建文件 | touch [文件名] [文件名] 创建多个文件 | |
| 5 | mkdir [目录名] | make directory | 创建目录 |
mkdir [目录名]
mkdir [目录名] -m配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
mkdir [目录名] -p,如果上级目录不存在,先创建上级目录
mkdir [目录名] [目录名]创建多个文件夹
mkdir [目录名]/{[文件夹名],[文件夹名]}在指定文件夹下创建多个文件夹
|
|
| 6 | rm [文件名] | remove | 删除指定的文件名 |
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
|
|
| 7 | clear | clear | 清屏(相当于翻页,上滑时历史记录还在) | ||
| 8 | gedit [文件名] | 如果没有文件,创建文件,然后打开文件 | |||
| 9 | history | 查看历史命令 |
小技巧:
ctrl+shift+= 放大终端窗口的字体显示
ctrl+- 缩小终端窗口的字体显示
tab键可以补全命令
按↑/↓光标键可以在曾经使用过的命令之间来回切换
如果想要退出选择,并不想执行当前选中的命令,可以按ctrl+c
1、终端命令格式
(1)command [-options] [parameter]
command:命令名,相应功能的英文单词或英文单词的缩写
[-options]:选项,可用来对命令进行控制,也可以省略
parameter:传给命令的参数,可以是零个、一个或者多个
(2)command —help
查阅命令帮助信息, 如 ls —help
(3)man command
查阅command命令的使用手册,man是manual的缩写,是Linux提供的一个手册,包含了绝大部分的命令、函数的详细使用说明。
使用man时的操作键:
| 操作键 | 功能 |
| 空格键 | 显示手册页的下一屏 |
| Enter键 | 一次滚动手册页的一行 |
| b | 回滚一屏 |
| f | 前滚一屏 |
| /word | 搜索word字符串 |
2.ls权限介绍
| 通配符 | 含义 | 使用 |
| * | 文件代表文件名中所有字符 |
ls te* 查看以te开头的文件
ls *html 查看以html结尾的文件
|
| ? | 代表文件名中任意一个字符 |
ls ?.c 只找第一个字符任意,后缀为.c的文件
ls a.? 只找只有单个字符,前两个字符为a.,最后一个字符任意的文件
|
| [] | “[“和”]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。 |
[abc]匹配a、b、c中任意一个
[a-f]匹配从a到f范围内的任意一个字符
ls [a-f]* 找到从a到f范围内的任意一个字符开头的文件
ls a-f 查找文件名为a-f的文件
|
| \ | 如果要使用通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用 | ls \*a 查找文件名为*a的文件 |
drwxrwxr-x d代表文件夹 -代表文件
rwx rwx r-x r可读 w可写 x执行
第一组指文件拥有者的权限,第二组代表文件拥有的组的权限,第三组代表其他用户权限
3.cp命令介绍(参考 Linux文件与目录管理|菜鸟教程)
cp即拷贝文件和目录
语法:
cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 .... directory
选项与参数:
| 参数 | 含义 |
| -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
cp ~/.bashrc /tmp/bashrc
cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
4、mv(移动文件与目录,或修改名称)
(1)语法:
mv [-fiu] source destination
mv [options] source1 source2 source3 .... directory
(2)选项与参数:
| 参数 | 含义 |
| -f | force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; |
| -i | 若目标文件 (destination) 已经存在时,就会询问是否覆盖! |
| -u | 若目标文件已经存在,且 source 比较新,才会升级 (update) |
(3)使用
复制一文件,创建一目录,将文件移动到目录中
cd /tmp
cp ~/.bashrc bashrc
mkdir mvtest
mv bashrc mvtest
将刚刚的目录名称更名为 mvtest2
mv mvtest mvtest2
5.重定向
使用重定向将命令结果显示到文件中,默认命令返回结果显示在屏幕中
ls > 1.txt 覆盖文件中的内容
ls >> 1.txt 不覆盖文件中的内容
6.Linux 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
| 参数 | 含义 |
| cat | 由第一行开始显示文件内容 |
| tac | 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! |
| nl | 显示的时候,顺道输出行号! |
| more | 一页一页的显示文件内容 |
| less | 与 more 类似,但是比 more 更好的是,他可以往前翻页! |
| head | 只看头几行 |
| tail | 只看尾巴几行 |
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
(1)cat
语法: cat [文件名]
选项与参数:
| 参数 | 含义 |
| -A | 相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已; |
| -b | 列出行号,仅针对非空白行做行号显示,空白行不标行号! |
| -E | 将结尾的断行字节 $ 显示出来; |
| -n | 列印出行号,连同空白行也会有行号,与 -b 的选项不同; |
| -T | 将 [tab] 按键以 ^I 显示出来; |
| -v | 列出一些看不出来的特殊字符 |
检看 /etc/issue 这个文件的内容:cat /etc/issue
查看多个文件内容: cat 1.txt 2.txt
将文件内容展示在3.txt中: cat 1.txt 2.txt > 3.txt
(2)more
语法:more [文件名]
在 more 这个程序的运行过程中,你有几个按键可以按的:
| 参数 | 含义 |
| 空白键 (space) | 代表向下翻一页 |
| Enter | 代表向下翻『一行』 |
| /字串 | 代表在这个显示的内容当中,向下搜寻『字串』这个关键字; |
| :f | 立刻显示出档名以及目前显示的行数; |
| q | 代表立刻离开 more ,不再显示该文件内容。 |
| b 或 [ctrl]-b | 代表往回翻页,不过这动作只对文件有用,对管线无用。 |
7.管道(|)
ls -l / | more 把左边的命令返回结果交给右边命令进行处理
8.建立链接文件
Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接。
软链接:软链接不占用磁盘空间,源文件删除则软链接失效。
硬链接:硬链接只能链接普通文件,不能链接目录。
使用格式:
硬链接:ln 源文件 链接文件
软链接:ln -s 源文件 链接文件
如果没有-s选项代表建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。
注意:如果软链接文件和硬链接文件不再同一个目录,源文件要使用绝对路径,不能使用相对路径。
9.文本搜索:grep
grep指令用于查找文件里符合条件的字符串。
prep 指令用于查找内容包含指定范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或者所给予的文件名为-,则grep指令会从标准输入设备读取数据。
(1)语法
一般格式为:grep [-选项] '搜索内容字符串’ 文件名
在grep命令中输入字符串参数时,最好用单引号括起来。例如: grep 'a' 1.txt
(2)常用选项说明
| 选项 | 含义 |
| -v | 显示不包含匹配文本的所有行 |
| -n | 显示匹配行及行号 |
| -i | 忽略大小写 |
grep搜索字符串可以是正则表达式,grep常用正则表达式:
| 参数 | 含义 |
| ^a | 行首。搜索以a开头的行:grep -n ‘^a’ 1.txt |
| ke$ | 行尾。搜索以ke结尾的行:grep -n ‘ke$’ 1.txt |
| [Ss]igna[Ll] |
匹配[]里一系列字符串中的一个;搜索匹配单词signal,signaL,Signal,SignaL的行,
grep -n ‘[Ss]igna[Ll]’ 1.txt
|
| . | (点)匹配一个非换行符的字符,匹配a和e之间有任意一个字符,可以匹配eee,eae, eve但是不匹配ee,eaae:grep -n ‘e.e’ 1.txt |
(3)其他参数
| 参数 | 含义 |
| -a或--text | 不要忽略二进制的数据 |
| -A<显示行数>或--after-context=<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 |
| -b或--byte-offset | 在显示符合样式的那一行之前,标示出该行第一个字符的编号 |
| -B<显示行数>或--before-context=<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前的内容。 |
| -c或--count | 计算符合样式的列数 |
| -C<显示行数>或--context=<显示行数>或-<显示行数> | 除了显示符合样式的那一行之外,并显示该行之前后的内容 |
| -d<动作>或--directions=<动作> | 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作 |
| -e<范本样式>或—repgexp=<范本样式> | 指定字符串作为查找文件内容的样式 |
| -E或--extented-regexp | 将样式为延伸的正则表达式来使用 |
| -f<规则文件>或--file=<规则文件> | 指定规则文件。其内容含有一个或多个规则样式,让prep查找符合规则条件的文件内容,格式为每行一个规则样式 |
| -F或--fixed-regexp | 将样式视为固定字符串列表 |
| -G或--basic-regexp | 将样式视为普通的表示法来使用 |
| -h或--no-filename | 在显示符合样式的哪一行之前,不标示该行所属的文件名称 |
| -H或--with-filename | 在显示符合样式的那一行之前,标示该行所属的文件名称 |
| -i或--ignore-case | 忽略字符大小写的差别 |
| -l或--file-with-matches | 列出文件内容符合指定的样式的文件名称 |
| -L或--files-without-match | 列出文件内容不符合指定样式的文件名称 |
| -n或--line-number | 在显示符合样式的那一行之前,标示出该行的列数编号 |
| -o或--only-matching | 只显示匹配matching部分 |
| -q或--quite或--silent | 不显示任何信息 |
| -r或--recursive | 此参数的效果和指定“-d recurse”效果相同 |
| -s或--no-messages | 不显示错误信息 |
| -v或--revent-match | 不显示不包含匹配文本的所有行 |
| -V或--version | 显示版本信息 |
| -w或--word-regexp | 只显示全字符合的列 |
| -x或--line-regexp | 只显示全列符合的列 |
| -y | 此参数的效果和指定“-i”参数相同 |
(4)实例
①.在当前目录中,查找前缀有test字样的文件中包含test字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test test*
输出结果如下所示:
testfile1.rtf:This is a Linux testfile!
testfile2.rtf:This is a linux testfile2!
testfile2.rtf:test
②以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
③反向查找。通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
10.查找文件:find
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令静载当前目录下查找目录与文件。并且将查到的子目录和文件全部进行显示。
(1)语法
find path -option [ -print ] [ -exec -ok command] {} \;
(2)参数说明:
find根据下列规则判断path和expression,在命令列上第一个-(),!之前的部分为path,之后是expression。如果path是空字符串则使用目前路径,如果expression是空字符串则使用-print为预设expression.
| 参数 | 含义 |
|
-mount
-xdev
|
只检查和指定目录在同一个文件系统下的文件,避免列出其他文件系统中的文件 |
| -amin n | 在过去n分钟内被读取过 |
| -anewer file | 比文件file更晚被读取过的文件 |
| -cmin n | 在过去n分钟内被修改过 |
| -cnewer file | 比文件更新的文件 |
| -ctime n | 在过去n天内被修改过的文件 |
| -empty |
空的文件-gid n or -group name : gid 是或是group名称是name
|
|
-ipath p
-path p
|
路径名称符合p的文件,ipath会忽略大小写 |
|
-name name
-iname name
|
文件名称符合name的文件。iname会忽略大小写 |
| -size n | 文件大小是n单位,b代表512位元组的区块,c表示字元数,k表示kilo bytes,w是二个位元组。 |
| -type c | 文件类型是c的文件。 |
| d | 目录 |
| c | 字型装置文件 |
| b | 区块装置文件 |
| p | 具名贮列 |
| f | 一般文件 |
| l | 符号连结 |
| s | socket |
| -pid n | process id 是 n 的文件 |
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
(3)实例
①将目前目录及其子目录下所有名是c的文件列出来
find . -name "*.c”
②将目前目录及其子目录中所有一般文件列出
find . -type f
③将目前目录及其子目录下所有最近20天内更新过的文件列出
find . -ctime -20
④查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime +7 -ok rm {} \;
⑤查找目前目录中文件属性具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find . -type f -perm 644 -exec ls -l {} \;
⑥查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls l {} \;
11.which命令
查看命令位置
which zip:查看zip命令在哪里
12.修改文件权限:chmod命令
chmod修改文件权限有两种使用格式:字母发与数字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
| 【u/g/o/a】 | 含义 |
| u | user表示该文件的所有者 |
| g | group表示与该文件的所有者属于同一组(group)者,即用户组 |
| o | other表示其他以外的人 |
| a | all表示这三者皆是 |
| 【+-=】 | 含义 |
| + | 增加权限:chmod u+r text.text(给文件拥有者添加r权限) |
| - | 撤销权限 |
| = | 设定权限 |
| rwx | 含义 |
| r | read表示可读取,对于一个目录,如果没有权限,那么就意味着不能通过ls查看这个目录的内容 |
| w | write表示可写入,对于一个目录,如果没有w权限,那么久意味着不能在目录下创建新的文件 |
| x | excute表示可执行,对于一个目录,如果没有x权限,那么久以为着不能通过cd进入这个目录 |
| - | 没有任何权限 |
如果需要同时进行设定拥有者、同组者以及其他人的权限,参考如下:
rwx这些权限也可以用数字来代替
| 字母 | 说明 |
| r | 读取权限,数字代号为“4” |
| w | 写入权限,数字代号为“2” |
| x | 执行权限,数字代号为“1” |
| - | 不具任何权限,数字代号为“0” |
如执行 chmod u=rwx,g=rx,o=r filename 就等同于 chmod u=7,g=5,o=4 filename
chmod 751 file:
- 文件所有者:读、写、执行权限
- 同组用户:读、执行权限
- 其他用户:执行权限
注:如果想递归所有目录加上相同权限,需要加是哪个参数”-R“。如:
chmod 777 text/ -R 递归text目录下所有文件加777权限
13.文件压缩与解压
(1)gzip
打包 tar cvf a.tar *.txt (f必须放在最后,f后面的第一个参数代表要生成的文件名,后面所有的参数是要打包的文件)
解包 tar xvf a.atr -C atar
列出包里面的文件 tar tf a.atar
tar命令很特殊,其参数前面可以使用“-”,也可以不使用
| 参数 | 含义 |
| -c | 生成档案文件,创建打包文件 |
| -v | 列出解档归档的详细过程,显示进度 |
| -f | 指定档案文件名称 |
| -t | 列出档案中包含的文件 |
| -x | 解开档案文件 |
打包 tar cf a.tar * 生成a.tar文件
压缩 gzip -r a.tar 生成a.tar.gz文件
解压 gip -d a.tar.gz 生成a.tar文件
解包 tar xf a.tar ~/atar 解包到指定文件夹
打包并压缩 tar czf b.tar.gz *txt 以gzip的形式打包并压缩
解压并解包 tar zxf b.tar.gz -C btar 以gzip的方式解压并解包
(2)bzip2
tar jcf j.tar.bz2 *txt
tar xjf j.tar.bz2 -C tar
(3)zip
zip -r zz *txt zz代表要生成的压缩文件,不需要写扩展名,会自动生成zip扩展名
unzip -d zz zz.zip 解压时会自动创建目录
压缩率:zip<gzip<bzip2
通用性:zip>gzip>bzip2
14.切换管理员账号
contos下切换到root的简单命令:su
从root命令切换到其他用户: su admin
15.设置用户密码:passwd
超级用户可以使用passwd命令为普通用户设置或修改用户密码。
用户可以使用passwd来修改自己的密码,而无需在命令后使用用户名。
16.退出登录账户:exit
如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登录账户;
如果是切换后的登录用户,退出则返回上一个登录账号。
17.查看登录用户:who
who命令用于查看当前所有登录系统的用户信息。
常用选项:
| 选项 | 含义 |
| -q或-count | 只显示用户的登录账号和登录用户的数量 |
| -u或-heading | 显示列标题 |
admin pts/0
admin tty1
18.关机重启:reboot、shutdown
| 命令 | 含义 |
| reboot | 重新启动操作系统 |
| shutdown -r now | 重新启动操作系统,shutdown会给别的用户提示 |
| shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
| shutdown -h 20:25 | 系统在今天的20:25会关机 |
| shutdown h +10 | 系统再过十分钟后自动关机 |
八.vim编辑器
1.vim介绍
所有的Unix Like系统都会内建vi文本编辑器,其他的文本编辑器则不一定会存在。
vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便变成的功能特别丰富。
vim键盘图:
2.vi/vim的使用
基本上vi/vim共分为三种模式,分别是命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。
(1)命令模式:
用户刚刚启动vi/vim,便进入了命令模式。此状态下敲击键盘动作会被vim识别为命令,而非输入字符。
常用命令:
| 命令 | 含义 |
| i | 切换到输入模式,以输入字符。 |
| x | 删除当前光标所在处的字符 |
| : | 切换到底线命令模式,以在最底一行输入命令。 |
(2)输入模式
在命令模式按下i进入输入模式。常用选项:
| 选项 | 含义 |
| 字符+shift | 输入字符 |
| enter | 回车键,换行 |
| back space | 退格键,删除光标前一个字符 |
| Del | 删除键,删除光标后一个字符 |
| 方向键 | 在文本中移动光标 |
| Home/End | 光标移动到行首/行尾 |
| Page Up/Page Down | 上/下翻页 |
| Insert | 切换光标为输入/替换模式,光标将变成竖线/下划线 |
| ESC | 退出输入模式,切换到命令模式 |
(3)底线命令模式
在命令模式下按下:(英文)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令。基本命令有:
| 命令 | 含义 |
| q | 退出程序 |
| w | 保存文件 |
按ESC可随时退出底线命令模式。
(4)vi/vim使用实例
使用vi/vim进入命令模式
建立一个名为runoob的文件(vim runoob.txt):
按下ESC按钮回到命令模式
在命令模式中按下:wq储存后离开vi
(5)其他按键说明
命令模式可用的光标移动、复制粘贴、搜索替换等
|
移动光标的方法
|
|
|
h或←
|
光标向左移动一个字符
|
|
j或↓
|
光标向右移动一个字符
|
|
k或↑
|
光标向上移动一个字符
|
|
l或→
|
光标向右移动一个字符
|
|
如果想要进行多次移动的话,例如向下移动30行,可以使用”30j”或”30↓”的组合按键
|
|
|
Ctrl+f
|
屏幕向下移动一页,相当于Page Down
|
|
Ctrl+b
|
屏幕向上移动一页,相当于Page Up
|
|
Ctrl+d
|
屏幕向下移动半页
|
|
Ctrl+u
|
屏幕向上移动半页
|
|
+
|
光标移动到非空格符的下一行
|
|
-
|
光标移动到非空格符的上一行
|
|
n<space>
|
按下数字键再按空格键,光标会向右移动这一行的n个字符
|
|
0或Home
|
数字0,移动到这一行的最前面字符处
|
|
$或End
|
移动到这一行的最后面字符处
|
|
H
|
光标移动到这个品目最上方那一行字符的第一个字符
|
|
M
|
光标移动到这个屏幕的中央那一行的第一个字符
|
|
L
|
光标移动到这个屏幕的最下方那一行的第一个字符
|
|
G
|
移动到这个档案的最后一行
|
|
nG
|
n为数字。移动到这个档案的第n行。
|
|
gg
|
移动到这个档案的第一行,相当于1G
|
|
n<Enter>
|
n为数字。光标向下移动n行。
|
|
搜索替换
|
|
|
/word
|
向光标之下搜索一个名为word的字符串
|
|
?word
|
向光标之上搜索一个名为word的字符串
|
|
n
|
重复前一个搜寻动作
|
|
N
|
反向进行前一个搜寻动作。如执行/hello,按下N之后表示向上搜索hello
|
|
:n1,n2s/word1/word2/g
|
在第n1与n2之间寻找word1,并将word1取代为word2
|
|
:1,$s/word1/word2/g
|
从第一行到最后一行寻找word1,并将word1替换为word2
|
|
:%s/word1/word2/g
|
|
|
:1,$s/word1/word2/gc
|
从第一行到最后一行寻找word1,并将word1替换为word2,且在取代前显示提示字符给用户确认是否需要取代
|
|
:%s/word1/word2/gc
|
|
|
删除、复制、粘贴
|
|
|
x,X
|
在一行字当中,x向后删除一个字符,X向前删除一个字符
|
|
nx
|
连续向后删除n个字符
|
|
dd
|
删除游标所在的那一整行
|
|
d1G
|
删除光标所在到第一行的所有数据
|
|
dG
|
删除光标所在到最后一行的所有数据
|
|
d$
|
删除游标所在处,到该行的最后一个数据
|
|
d0
|
删除游标所在处,到该行的第一个字符
|
|
yy
|
复制游标所在处的那一行
|
|
nyy
|
复制光标所在的向下n行
|
|
y1G
|
复制光标所在处到第一行的所有数据
|
|
yG
|
复制光标所在处到最后一行的所有数据
|
|
y$
|
复制光标所在那个字符到该行行尾的所有数据
|
|
y0
|
复制光标所在那个字符到该行行首的所有数据
|
|
p,P
|
p将已复制的数据粘贴在光标的下一行,P将已复制的数据粘贴在光标的上一行
|
|
J
|
将光标所在行与下一行结合成一行
|
|
c
|
重复删除多个数据,例如向下删除10行(10cj)
|
|
u
|
复原前一个动作
|
|
Ctrl+r
|
重做上一个动作
|
|
.
|
重做前一个动作
|
编辑模式可用的按键说明:
|
进入输入或取代的编辑模式
|
|
|
i,I
|
进入输入模式:i从光标所在处进入,I在目前所在行的第一个非空格符处开始输入
|
|
a,A
|
进入输入模式:a从目前光标所在的下一个字符处楷书输入,A为从光标所在行的最后一个字符开始输入
|
|
o,O
|
进入输入模式:o在光标所在行的下一行输入新的一行,O在光标所在行的上一行输入新的一行
|
|
r,R
|
进入取代模式:r只会取代光标所在的那个字符一次;R会一直取代光标所在的文字,知道按下ESC为止
|
|
ESC
|
退出编辑模式,回到命令模式
|
|
指令行的储存、离开等指令
|
|
|
:w
|
将编辑的数据写入硬盘档案中
|
|
:w!
|
若文件属性为只读时
|
|
:q
|
离开vi
|
|
:q!
|
若曾修改过档案,又不想存储,使用!为强制离开不存储档案
|
|
:wq
|
存储后离开,若为:wq!则为强制储存后离开
|
|
ZZ
|
若档案没有更改,则存储后离开。若档案已经更改过,则储存后离开
|
|
:w [filname]
|
将编辑的数据储存成另一个档案
|
|
:r [filename]
|
在编辑的数据中,读入另一个档案的数据。亦即将filename这个档案内容加到游标所在行后面
|
|
:n1,n2 w [filename]
|
将n1到n2的内容储存成filename这个档案
|
|
:! command
|
暂时离开vi到指令模式下执行command的显示结果。如「:! ls /home」即可在vi当中查看/home底下ls输出的档案信息。
|
|
vim环境的变更
|
|
|
:set nu
|
显示行号,设定之后,会在每一行的行号
|
|
:set nonu
|
取消行号
|
3.添加注释
(1)块选择模式
批量注释:
-
Ctrl+v进入块选择模式
-
移动光标选中你要注释的行
-
按大写的I进入行首插入模式
-
输入注释符号//或#
-
按两下ESC,vim会自动将选中的所有行首加上注释
-
保存退出
取消注释:
-
Ctrl+v进入块选择模式
-
选中要删除的行首的注释符号
-
按d删除注释
-
ESC保存退出
(2)替换命令
批量注释::起始行号,结束行号s/^/注释符/g
取消注释::起始行号,结束行号s/^注释符//g
(3)实例
在10-20行添加//注释::10,20s#^#//#g
在10-20行删除//注释::10,20s#^//##g
在10-20行添加#注释::10,20s/^/#/g
在10-20行删除#注释::10,20s/#//g
浙公网安备 33010602011771号