20155303狄惟佳预备作业三Linux学习笔记

初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对“人人为我,我为人人”软件世界的追求。Ubuntu产生于一个软件逐渐脱离硬件成为独立产业的时代,很多软件逐渐只提供二进制代码而不提供源代码。出于工作需要,Stallman决心创建一套完全自由的操作系统,从而创造自由的软件世界。经过全世界有志之士的共同努力,Linux应运而生,并不断被修改完善。开源,便是Ubuntu备受青睐的原因。

初识Ubuntu

Ubuntu系统通常会在每年4月和10月各发布一个新的版本。进入下载页面,选择16.04版本下载安装即可。安装好的界面如图:

  • 答疑解惑:Linux中的最高权限

之前听说过Linux的root用户,权力非常大,让我想起了Windows系统里的administrator,出于对两者区别的好奇,我上网学习了相关的知识。

  • administrator

administrator看似是Windows系统下权力最高者,实则不然。Windows系统本身会进行自我保护,即使是管理者administrator的权利也不会大过系统本身的权力。尝试将Windows系统C:\WINDOWS下的regedit.exe删除(我抱着半信半疑的态度尝试时真的心惊胆战!),但刷新几次之后又复原了。所以,Windows系统下的权力最高者是SYSTEM本身。

  • root

在Ubuntu下(或者其他Linux系统)权力最高者,毋庸置疑是root!root在系统中拥有真正至高无上的权力,甚至可以运行rm -rf删除系统中所有文件(危险动作,自觉放弃了尝试...)。而Windows下是不可能在系统运行时格式化系统盘的。

  • 两者为什么不同

administrator与root有这些不同,我认为归根到底是两个操作系统的理念不同。Linux作为一个面向广大程序设计者的操作系统,其优势在于每个人都可以获得这个系统全部的源代码,并根据自己的需求进行修改。这种开放的原则使得系统本身为人类所创造,并可以为人类所任意修改。我想这也是开源精神一种体现吧。

命令行的使用

使用Ctrl+Alt+t打开终端,看到如图所示的窗口

这种图形界面下的命令行窗口,叫做伪终端。操作系统和用户在这个窗口里使用命令进行交流。通过查阅资料了解到,之所以称为伪终端,是因为它只是负责提供一个输入命令的交互界面,真正处理命令的是Shell。

在Ubuntu系统中,默认的Shell是bash,比如第一行出现的“shiyanlou:~/ $”就是bash的语言。其中,“:”后面,“$"前面是当前所在目录,“~”代表用户的家目录,也就是“/home/”这个位置。“$”则是命令提示符,在“$"后面输入命令即可。如果使用root登录终端,提示符为"#",但Ubuntu系统默认禁用root用户,所以一般看不到#提示符。

Shell使用初探

一、目录结构

①当前目录与家目录

运行ls命令可查看当前目录下的所有文件。用户每次打开终端时,默认进入家目录里。命令行下可以使用~代表当前用户的家目录。

②进入指定目录

使用$ cd 命令进入任意一个目录中,只要有权限即可。

③绝对路径与相对路径

绝对路径从“/”这个最根本的位置开始叙述,直接但有时比较费时。cd同时相对路径,即从所在位置开始进行描述。使用时还要参考具体情况。如果不清楚所在目录,可以输入pwd命令查询。

二、重要的Tab命令补全功能

遇到字母多的命令时,Tab键就显得方便很多。比如要运行ifconfig命令,只要输入ifc后按下Tab键就能自动补全。

通过查询资料了解到,在按下Tab键的时候,bash遍历PATH变量所设置的所有目录,检查了其中所有的有执行权限的文件(“Linux中一切皆文件”,命令也是个可执行的文件),最终找到ifconfig文件。

当然,如果只写了if,按下Tab键,由于有四个命令均以if开头,所以需要按两次Tab键,列出所有以if开头的命令,根据需要输入即可。

三、通配符

DOS系统的通配符是“ * ”和“?”两个符号。而Linux下的Shell有所不同。以bash为例,星号(*,Asterisk)——代表任何长度的任何字符。
问号(?,Question mark)——代表任何单个字符。
方括号([],Square brackets)——定义一定范围的字符。
使用以上三种通配符可以在命令行的使用中提高效率。


以上大致了解了命令行的使用,而学习才刚刚开始。对于一名Linux新手来说,熟练掌握更多的命令才是最重要的。

通过近期在实验楼的学习,初步掌握了一些常用命令的使用,总结如下:

  • 常用快捷键
常用快捷键 功能说明
CTRL+ALT+T 打开终端
CTRL+SHIFT+T 新建标签页
ALT+数字N 终端中切换到第N个标签页
Tab 终端中命令补全
上下键盘 切换命令历史
CTRL+C 中断程序运行
  • 用户及文件权限管理
命 令 用 途
who am i 查看当前用户
su 切换到用户user(需要输入目标用户的密码)
su - 切换到用户user
sudo adduser 新建sudo组用户user
su -l 切换登录用户
exit 或快捷键 Ctrl+d 退出当前用户
groups 查看该用户所属用户组
cat 读取指定文件的内容并打印到终端输出
cat /etc/group l grep -E 过滤用户组信息
sudo usermod -G sudo 将其他用户添加到sudo组
sudo deluser --remove-home 删除用户
ls -l 列出并显示当前目录下的文件及详细信息
cat 读取某个文件的内容
ls -A 显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件
ls -dl 查看某一个目录的完整属性
ls -AsSh 显示所有文件大小
touch 新建文件
ll 查看文件所有者信息
cp 复制文件
echo "内容" > 文件名 在文件中添加内容
chmod 三位数字 文件名 修改权限(三位数字为拥有者,所属用户组,其他用户的rwx顺序,有该权限为1)

注意:Linux 下密码输入是不显示任何内容的。

  • Linux 目录结构及文件基本操作
命令 用途
tree / 查看文件间关系
sudo apt-get update;sudo apt-get install 软件名 下载安装软件
ls -a 查看隐藏文件
cd 切换目录
cd .. 进入上一级目录
cd ~ 进入用户“home”目录
pwd 获取当前路径
.. 相对路径中当前目录的上一级目录
mkdir 创建一个空目录
mkdir -p father/son/grandson 同时创建一个多级目录
cp 复制一个文件或目录到指定目录
cp -r或cp -R 复制目录(递归复制)
rm 删除文件
rm -f 忽略提示强制删除
rm -r或rm -R 删除目录
mv 源目录文件 目的目录 移动文件(剪切)
cat,tac和nl 查看文件(cat正序,tac倒序,nl添加行号并打印)
cat -n 查看文件并显示行号
more 分页查看文件(使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出)
tail 文件路径 只查看的头几行(默认为10行,不足10行则显示全部)和尾几行
tail -n 页数 文件路径 只查看该行
file 查看文件的类型
  • 环境变量与文件查找
命令 用途
declare 创建指定类型的变量
= 给左边的变量赋值
echo $ 读取变量的值($符号用于表示引用一个变量的值,不要忘记)
set 显示当前 Shell 所有环境变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量
env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行
export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量
sort 排序
echo $PATH 查看PATH环境变量的内容
vim hello_shell.sh 创建一个 Shell 脚本文件
./hello_shell.sh 执行脚本
vim hello_world.c 创建一个 C 语言"hello world"程序
gcc -o hello_world hello_world.c 使用 gcc 生成可执行文件
PATH=$PATH:/home/shiyanlou/或echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc 添加自定义路径到“PATH”环境变量(注意这里一定要使用绝对路径)
unset 删除一个环境变量
source 让环境变量立即生效
. 同上,注意第一个点后面有一个空格,而且后面的文件必须指定完整的绝对或相对路径名,source 则不需要。
whereis,which,find,locate 均与搜索相关。whereis只能搜索二进制文件(-b),man帮助文件(-m)和源代码文件(-s) ,which确定是否安装了某个指定的软件,只从PATH环境变量指定的路径中去搜索命令,find,locate指定目录下的不同文件类型

注意:关于变量名,并不是任何形式的变量名都是可用的,变量名只能是英文字母,数字或者下划线,且不能以数字作为开头。

  • 文件打包与压缩
header 1 header 2
zip 压缩打包文件夹
zip -r 递归打包包含子目录的全部内容
zip -q 安静模式打包,即不向屏幕输出信息
zip -o 输出文件,需在其后紧跟打包输出文件名
du 查看打包后文件的大小
zip -r -9 -q -o shiyanlou_ 9.zip /home/shiyanlou -x ~/.zip zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/.zip 设置压缩级别为9和1(9最大,1最小),重新打包(注意:这里只能使用绝对路径,否则不起作用。)
du -h -d 0 *.zip 查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小
zip -r -e -o 创建加密压缩包
unzip 解压到当前目录
unzip -q 使用安静模式,将文件解压到指定目录
unzip -l 不解压只查看压缩包的内容
unzip -O GBK 中文压缩文件.zip(英文字母,大写o) 指定编码类型
rar 创建rar 压缩包
unrar 解压 rar 压缩包
rar d 从指定压缩包文件中删除某个文件
rar l 查看不解压文件
unrar x 全路径解压
unrar e 去掉路径解压
tar -cf 创建一个 tar 包
tar -xf shiyanlou.tar -C tardir 解包一个文件(-x参数)到指定路径的已存在目录(-C参数)
tar -tf 只查看不解包文件(-t参数)
tar -cphf 保留文件的属性(-p参数)和备份链接指向的源文件而不是链接本身(-h参数)
tar -czf 使用gzip来压缩文件
tar -xzf 压缩*.tar.gz文件
tar -xJf 压缩*.tar.xz文件
tar -xjf 压缩*tar.bz2文件

注意:rar 的命令参数没有-,如果加上会报错。

  • 文件系统操作与磁盘管理
命令 用途
df 以blocks的大小显示磁盘的容量
df -h 以人类语言显示磁盘容量
du 以 blocks 的大小展示目录的容量
du -h 以人类语言展示目录的容量
du -h -d 指定查看目录的深度
dd of=test bs=10 count=1或dd if=/dev/stdin of=test bs=10 count=1 从标准输入读入用户输入到一个文件
dd if=/dev/stdin of=/dev/stdout bs=10 count=1 从标准输入读入用户输入到标准输出
bs 指定虚拟磁盘块大小
dd if=/dev/stdin of=test bs=10 count=1 conv=ucase 将输出的英文字符转换为大写再写入文件
dd if=/dev/zero of=virtual.img bs=1M count=256 设备创建一个容量为 256M 的空文件
sudo mkfs.ext4 virtual.img 将虚拟磁盘镜像格式化为ext4文件系统
sudo mount 查看主机已经挂载的文件系统
mount [options] [source] [directory] 挂载真正的磁盘到目录树
mount -o loop -t ext4 virtual.img /mnt 挂载我们创建的虚拟磁盘镜像到/mnt目录
sudo umount /mnt 卸载已挂载磁盘
sudo fdisk -l 查看硬盘分区表信息
sudo fdisk virtual.img 进入磁盘分区模式
sudo losetup /dev/loop0 virtual.img 建立镜像与回环设备的关联
sudo losetup -d /dev/loop0 解除设备关联
sudo kpart kpartx -av /dev/loop0 用kpartx工具建立虚拟设备的映射
sudo kpart kpartx -dv /dev/loop0 取消映射
sudo mkfs.ext4 -q /dev/mapper/loop0p1 建立映射后,将其全部格式化为ext4
mkdir -p /media/virtualdisk_{1 . . 3} 在/media目录下新建四个空白目录用于挂载虚拟磁盘
sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1(以此类推) 挂载磁盘分区
sudo umount /dev/mapper/loop0p1(以此类推) 卸载磁盘分区
  • Linux下的帮助命令
命令 用途
bash 进入 bash 中,在 bash 中内置有help命令
help ls 显示内建命令的帮助信息
ls --help 显示外部命令的帮助信息
man ls 显示系统手册页中的内容
info ls 更完整的显示出 GNU 信息

实验楼第3~8节的命令总结如上,但这些还远远不够。在之后的学习中我会继续补充完善,并多加练习。

学习过程中的一些疑惑以及解决

  • Linux的分区与挂载

在学习过程中频繁遇到分区与挂载这两个专业术语。鉴于Windows与Linux的区别,我想Linux的分区一定有特殊之处,于是查阅了相关资料进行学习。

与Windows的C盘D盘等等不同的是,Linux系统中有独特的目录结构。最基本的是一个根目录“/”,根目录下还有很多目录,比如“/etc”用来存放配置文件,“/bin”用来存放二进制程序,“/boot”用来存放启动文件,“/lib”用来存放库文件,“/home”用来存放用户的各种文件等等。这些便是Linux的分区。

用户可以任意一个目录里的东西存在某个分区里,如果不指定,则这个目录里的东西存在上一级目录所在分区里,以此类推,所以一定要指定“/”目录存放在哪个分区。给某一个制定分区的过程,即“挂载”。

  • Vim编辑器的使用

实验楼课程第四节提到Vim编辑器的使用。在学习Linux的同时,我进行了Vim文本编辑器的学习。

在几种常用文本编辑器中,功能最强大的要数Vim和Emacs了。学习Vim的使用,可以为今后写程序以及写脚本做充足准备。

Vim有3种工作模式,即:指令模式、输入模式、行末模式。

  • 指令模式:Vim运行默认进入指令模式。在这种模式下,可以通过各种快捷键、组合键进行操作,对文本进行编辑,比如复制、粘贴、删除、查找等操作。
  • 输入模式:即向文件里输入字符的模式。按i键或者Insert键进入输入模式。进入后,页面左下角有“插入”字样,即跟使用gedit之类的编辑器一样了。按Esc键可以回到指令模式。
  • 行末模式:在该模式下可以在界面最下面一行输入命令并执行,从而实现各种操作,例如打开文件、保存文件、查找替换、退出等操作。行末模式执行完最后一条指令后自动回到指令模式。

三种模式下均有常用快捷键或常用命令,目前正在进行学习。之后会对于快捷键以及命令的使用做系统的总结。

写在最后:对于寒假的一点点感触

转眼寒假过半,放假前我觉得难以完成的种种任务,正在被我一项一项finished,比如学习Linux,比如每天扇贝打卡,比如健身锻炼,比如读书。

刚开始学习Linux感觉很吃力,虽然大部分时候打开终端输入命令都能得到想要的结果,但搞不清楚Linux的本质,总是觉得学习只是浮在水面。于是我在学习实验楼课程的同时,在网上查阅各种资料,跟视频图书等等学习,终于摸清了Linux的一点点门道。熟练掌握各种命令的使用,成为了接下来学习Linux的重中之重。

在我看来,学习Linux的过程反过来促进了我英语的学习(真是奇妙),虽然安装Ubuntu选择的语言是中文,但动不动就出现一篇英文提示让我实在很头大,而且所有的命令都是英文单词或是英文单词的缩写,所以我想,具有一定的词汇量对于Linux的学习也会有很大帮助吧。

养成一个良好的习惯,或是掌握一门新技术,都不是轻而易举的事。最后我想说给自己,克服懒惰吧。万里长征才刚刚开始。

转载于:https://www.cnblogs.com/Vivian517/p/6352129.html

20155303狄惟佳预备作业三Linux学习笔记相关推荐

  1. 20165301 预备作业三:Linux安装及命令入门

    预备作业三:Linux安装及命令入门 VirtualBox虚拟机的安装 在进行安装之前,原本以为有了娄老师的安装教程会是一件很容易的事情.万万没想到,在自己实际动手操作中,还是遇到了许多困难.通过与同 ...

  2. 20165219 预备作业3 Linux安装及学习

    20165219 预备作业3 Linux安装及学习 安装虚拟机 在安装的过程中遇到了不少的问题,在同学的帮助下都得到了解决.比如在新建虚拟机的时候没有64位这个选项,后来知道需要开启虚拟化,然后是安装 ...

  3. 20165227朱越 预备作业3 Linux安装及学习

    预备作业3 Linux安装及学习 Linux的安装 虚拟机的安装远没有想象中的那样容易,下载还没有出现什么问题,当我安装的时候,第一个问题出现在创建虚拟机时选择安装的虚拟机版本和类型的时候的错误 当时 ...

  4. 20165328 预备作业3 Linux安装及命令

    Linux安装及学习 Linux安装遇到的问题: 问题:在我开始安装虚拟机的时候,在安装过程中总会出现初始界面,且无法跳过,陷入死循环. 解决方法:我在网上百度搜索该问题之后得到了答案,第一个界面是要 ...

  5. Cty的Linux学习笔记(三)

    Linux学习笔记--第三篇 (再次声明:该笔记只作为学习记录及参考) 概念: 相对路径:依赖于当前文件或目录的路径 绝对路径:依赖于根目录的路径 命令(command): cd:变更用户所在的目录, ...

  6. Linux学习笔记(三)(安装软件)

    Linux学习笔记(三) 概述 安装软件一般有三种方法: rpm RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出 ...

  7. Linux学习笔记---使用BusyBox创建根文件系统(三)

    目录 创建/etc/init.d/rcS 文件 创建/etc/fstab 文件 创建/etc/inittab 文件 创建/etc/init.d/rcS 文件 通过nfs加载根文件系统成功后,在串口终端 ...

  8. Linux学习笔记三:安装VMWare Tools共享文件夹

    这里写目录标题 概述 window下安装 Ubuntu下安装 提取安装包 解压安装 Ubuntu安装插件 适应窗口和拖拽文件 概述 本文主要是记录下我安装VMwareTools的过程,原本打算写在Li ...

  9. Linux 学习笔记(八):时间片轮转调度

    看这篇文章前可以先了解一下时间片:Linux 学习笔记(七):时间片_Amentos的博客-CSDN博客 一.基本概念 时间片轮转调度算法(Round-Robin,RR)主要用于分时操作系统中的进程调 ...

最新文章

  1. filter-mapping中的dispatcher使用
  2. 在R语言环境中无法载入rJava包的解决办法
  3. ACM-ICPC (10/19)
  4. python中import numpy_Python开发:NumPy学习(一)ndarray数组
  5. vins中imu融合_基于非线性优化算法—当视觉SLAM遇到VINS会碰撞出怎样的火花?
  6. android预加载布局,Android 懒加载优化
  7. JDK 是如何判断两个对象是否相同的?判断的流程是什么?
  8. 为什么学好计算机就必须学好汇编?
  9. 4.3.3版本之引擎bug
  10. [转载] Python中的numpy linalg模块
  11. vsftpd单用户多目录配置
  12. 来自联通302的问候
  13. android emoji unicode编码表,unicode编码
  14. 改进型MUSIC算法(python)
  15. 无法启动程序,.dll不是有效的Win32应用程序
  16. mvn找不到:log4j:log4j:1.2.17或者导入org.apache.log4j.Logger出现错误的原因和解决办法
  17. 记录一次vue项目引入GoogleMap API进行地图定位
  18. 线性代数方程组数值解法
  19. excel手机号码怎么加隐藏中间四位?
  20. IOS 项目问题总结

热门文章

  1. POJ 3159 Candies
  2. POJ3265 Problem Solving ——动态规划——Pku3265
  3. 让你的程序只能运行一个实例
  4. 一、Nginx常见问题
  5. ar路由器 pppoe下发ipv6 dns_移动宽带如何获取IPV6地址
  6. Dubbo 和 HSF 在阿里巴巴的实践:携手走向下一代云原生微服务
  7. 郑州商品交易所与阿里云达成合作,推进核心数据分析平台建设
  8. DataWorks搬站方案:Azkaban作业迁移至DataWorks
  9. Spring启动慢?提速利器SpringFu来了
  10. AI时代的全链路监控,阿里工程师怎么做?