20165233 预备作业3 Linux安装及学习
2018-02-22 15:47
253 查看
Linux学习记录
别出心裁的Linux命令学习法学习总结
(由于我的电脑是Mac,Linux安装省略)操作系统的功能:
管家婆和服务生
博客中对于这两个词含义的解释为
管家婆:通过进程、虚拟内存和文件三个重要抽象管理计算机的CPU、内存、I/O设备。
服务生:为用户提供shell,为程序员提供系统调用。
命令行的好处
主要是可以批处理并自动化,还有些功能GUI无法完成
由于我的电脑操作系统为MacOS,所以我自己总结出了快捷键的使用:
Alt+Ctrl+T:打开终端(由于Mac没有打开终端的快捷键,所以我自己设置为与Ubuntu统一的快捷键。Mac如何设置打开终端的快捷键 )
Command+T:新建标签页
Command + { 或 Command + Shift + [:切换标签页
Tab:命令、文件名等自动补全功能。
Ctrl+R:快速检索使用过的历史命令
Ctrl+C:中断终端中正在执行的任务。
Linux基础入门
实验1 Linux 系统简介
Linux是什么?Linux 就是一个操作系统。Linux 主要是系统调用和内核那两层。当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。
Shell是什么?
命令行解释器。
实验2 基本概念及操作
Terminal是什么?终端模拟器的程序。
Shell的详细解释
可以接受用户输入命令的程序。
输入和输出
输入:
touch file创建一个名为file的文件
cd /etc/进入一个目录
pwd查看当前所在目录
输出:
输出会返回你想要的结果,比如你要看什么文件,就会返回文件的内容。如果只是执行,执行失败会告诉你哪里错了,如果施行成功那么会没有输出,因为linux的哲学就是:没有结果就是最好的结果
问题1:实验过程中,输入
$ tail,为什么接下来输入什么都没有任何反应?
问题2:输入
$ find /,为什么会不停地跳出很多乱七八糟的东西?
快捷键总结
按键 | 作用 |
Ctrl+d | 键盘输入结束或退出终端 |
Ctrl+s | 暂停当前程序,暂停后按下任意键恢复运行 |
Ctrl+z | 将当前程序放到后台运行,恢复到前台为命令fg |
Ctrl+a | 将光标移至输入行头,相当于Home键 |
Ctrl+e | 将光标移至输入行末,相当于End键 |
Ctrl+k | 删除从光标所在位置到行末 |
Alt+Backspace | 向前删除一个单词 |
Shift+PgUp | 将终端显示向上滚动 |
Shift+PgDn | 将终端显示向下滚动 |
当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正字符。
Shell常用通配符
字符 | 含义 |
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[!list] | 匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} | 匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} | 匹配 c1-c2 中全部字符 如{1..10} |
ls的具体用法是什么?
(在教材中有时写在一个命令词以前,有时写在之后,有些混淆)
解答:通过实验3的学习,了解了
ls的用法:
1、用它列出并显示当前目录下的文件
2、查看文件权限。
ls -l:使用较长格式列出文件。
ls -A:显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
ls -dl<目录名>:查看某一个目录的完整属性,而不是显示目录里面的文件属性.
ls -AsSh:显示所有文件大小,并以普通人类能看懂的方式呈现。其中小 s 为显示文件大小,大 S 为按文件大小排序。
-w参数指定打印宽度,因为我们的环境在屏幕中显示比较小,必须要加上宽度限制。例:
$ printerbanner -w 50 A,"50"是上限宽度限制。
实验3 用户及文件权限管理
问题4:为什么输入命令行$ who -r之后,没有输出任何内容,并没有输出运行等级?运行等级又是什么?
问题5:给新用户设置密码时,为何不能输入一串数字密码?
| sort表示将读取的文本进行一个字典排序再输出
关于文件类型,这里有一句话必须牢记:
Linux里面一切皆文件
文件中的软链接文件相当于Windows中的快捷方式。
一个目录同时具有读权限和执行权限才可以打开并查看内部文件而一个目录要有写权限才允许在其中创建其他文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
修改文件权限,每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)
方法一:二进制数字表示
chomd 700 iphone6中
7指拥有者,即我自己可以、写、执行权限,
0和
0指所属用户组和其他用户无任何权限。
方法二:加减赋值操作
g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。
chmod go-rw iphone6指所属用户组和其他用户去掉读、写权限。
adduser 和 useradd 的区别是什么?
答:useradd 只创建用户,创建完了用 passwd lilei 去设置新用户的密码。adduser 会创建用户,创建目录,创建密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
实验4 Linux 目录结构及文件基本操作
FHS标准目录的四种交互作用的形态
路径
绝对路径:
以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如:
/usr/local/bin,表示根目录下的
usr目录中的
local目录中的
bin目录。
相对路径:以当前目录
.为起点,以你所要到的目录为终点
usr/local/bin(这里假设你当前目录为根目录)。你可能注意到,我们表示相对路径实际并没有加上表示当前目录的那个 . ,而是直接以目录名开头,因为这个
usr目录为
/目录下的子目录,是可以省略这个 . 的(以后会讲到一个类似不能省略的情况);如果是当前目录的上一级目录,则需要使用
..,比如你当前目录为
home目录,根目录就应该表示为
../../,表示上一级目录(
home目录)的上一级目录( / 目录)。
新建空白文件使用
touch
新建目录使用
mkdir,若要新建多级目录则须在
mkdir之后添加
-p
复制文件到目录,使用
cp
复制目录,则须在
cp后加
-r
删除文件使用
rm,但如果删除一些只读权限的文件时,会有删除提示,若想强制删除,则在
rm之后添加
-f
删除目录在
rm之后添加
-r
-移动文件使用
mv 源文件目录 目的目录
重命名文件使用
mv 旧文件名 新文件名
批量重命名使用
rename
查看文件
1、使用
cat快速查看文件
2、使用
nl命令查看文件
-b : 指定添加行号的方式,主要有两种:
-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式) -b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
-n ln:在行号字段最左端显示 -n rn:在行号字段最右边显示,且不加 0 -n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
3、使用
more命令分页查看文件
可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏。
4、使用
tail命令查看文件
- 因为系统新增加一个用户,会将用户的信息添加到 `passwd`文件的最后,那么这时候我们就可以使用 `tail` 命令了。 - 若想只看一行,在`tail`之后加上`-n`再加上数字`1`就是查看一行文件。 - `-f`可以不停的读取某个文件的内容,实现动态查看,达到监视的目的。
查看文件类型
与Windows不同的是,Linux中的文件不是通过看后缀来查看文件类型的,而是利用
file命令。
实验5 环境变量与文件查找
变量创建变量
tmp:$ declare tmp
赋值:$ tmp=shiyanlou
读取:$ echo $tmp
环境变量
环境变量的作用域比自定义变量的要大。如 Shell 的环境变量作用于自身和它的子进程。
关于哪些变量是环境变量,可以简单地理解成在当前进程的子进程有效则为环境变量,否则不是。
用
export命令来体会一下,先在
Shell中设置一个变量
temp=shiyanlou,然后再新创建一个子
Shell查看
temp变量的值:
添加自定义路径到
PATH环境变量
以
:作为分割符;通过"$ PATH=$path:/自定义路径"
注意:这里的路径必须为绝对路径
>>表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的
>是以覆盖的方式重定向到一个文件中
-变量修改
变量设置方式 | 说明 |
${变量名#匹配字串} | 从头向后开始匹配,删除符合匹配字串的最短数据 |
${变量名##匹配字串} | 从头向后开始匹配,删除符合匹配字串的最长数据 |
${变量名%匹配字串} | 从尾向前开始匹配,删除符合匹配字串的最短数据 |
${变量名%%匹配字串} | 从尾向前开始匹配,删除符合匹配字串的最长数据 |
${变量名/旧的字串/新的字串} | 将符合旧字串的第一个字串替换为新的字串 |
${变量名//旧的字串/新的字串} | 将符合旧字串的全部字串替换为新的字串 |
$ unset
如何让环境变量立即生效?
$ source .zshrc(zsh的配置文件home目录下的.zshrc)
搜索文件
whereis简单快速
直接从数据库中查询
只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)
locate快而全
它可以用来查找指定目录下的不同文件类型
查找 /etc 下所有以 sh 开头的文件:
$ locate /etc/sh
查找 /usr/share/ 下所有 jpg 文件:
$ locate /usr/share/\*.jpg.注意要添加
*号前面的反斜杠转义,否则会无法找到.
如果想只统计数目可以加上
-c参数,
-i参数可以忽略大小写进行查找,
whereis的
-b、
-m、
-s同样可以使用。
which小而精
通常使用
which来确定是否安装了某个指定的软件,因为它只从
PATH环境变量指定的路径中去搜索命令
find 精而细
$ sudo find /etc/ -name interfaces: 这条命令表示去
/etc/目录下面 ,搜索名字叫做
interfaces的文件或者目录。这是
find命令最常见的格式,千万记住
find的第一个参数是要搜索的地方.
格式
基本命令格式为 find [path] [option] [action]
实验6 文件打包与解压缩
zip压缩打包与解压使用 zip 打包文件夹:
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
-r参数表示递归打包包含子目录的全部内容,
-q参数表示为安静模式,即不向屏幕输出信息,
-o,表示输出文件,需在其后紧跟打包输出文件名。
设置压缩级别为 9 和 1(9 最大,1 最小),重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
这里添加了一个参数用于设置压缩级别 -[1-9],1 表示最快压缩但体积大,9 表示体积最小但耗时最久。最后那个
-x是为了排除我们上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中,注意:这里只能使用绝对路径,否则不起作用。
在
-r之后加
-e,便达到给zip文件加密的目的。
$ du -h shiyanlou.zip
du命令查看打包后文件的大小
$ du -h -d 0 *.zip ~ | sort
-h表示将信息变为可读的,
-d表示查看文件深度
$ file shiyanlou.zip
使用 unzip 命令解压缩 zip 文件
$ unzip shiyanlou.zip
将 shiyanlou.zip 解压到当前目录
$ unzip -q shiyanlou.zip -d ziptest
使用安静模式,将文件解压到指定目录
$ unzip -l shiyanlou.zip
不解压只查看压缩包的内容可以使用
-l参数
unzip -O GBK 中文压缩文件.zip
使用 -O(英文字母,大写 o)参数指定编码类型。通过此命令行来解决不兼容可能出现的中文变为乱码的情况。
rar 打包压缩命令(使用较少)
tar打包工具
创建一个 tar 包:
$ tar -cf shiyanlou.tar ~
-c表示创建一个 tar 包文件,
-f用于指定创建的文件名,注意文件名必须紧跟在
-f参数之后,比如不能写成
tar -fc shiyanlou.tar,可以写成
tar -f shiyanlou.tar -c ~。你还可以加上
-v参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的
/,你也可以使用
-P保留绝对路径符。
解包一个文件(
-x参数)到指定路径的已存在目录(
-C参数):
$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir
一个总结:
zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -zcvf something.tar something
解包:tar -zxvf something.tar
指定路径:-C 参数
问题6:
zip打包的时候,文件后跟的目录一定需要有么?如果打包跟解包的目录位置重复了怎么办?
解:可以写文件的名字也可以写目录的名字;位置重复时,会跳出提示:是否替换之前同名的文件,可以选择是或否或重命名。
实验7 文件系统操作与磁盘管理
查看磁盘容量$ df -h
(
-h增加可读性,以K,M,G为单位)
查看目录容量
$ du -h
只查看一级目录
$ du -d -h 0 ~
(
-d表示查看目录深度)
其他常用参数:
$ du -a
(显示目录中所有文件的大小)
$ du -s
(显示最后加总的值)
简单的磁盘管理
创建虚拟磁盘
dd命令从标准输入读入用户输入到标准输出或者一个文件:
$ dd of=test bs=10 count=1
或 $ dd if=/dev/stdin of=test bs=10 count=1
(
bs是指定块的大小;
count是指定块的数量)
使用
dd命令创建虚拟镜像文件
从
/dev/zero设备创建一个容量为 256M 的空文件:
$ dd if=/dev/zero of=virtual.img bs=1M count=256
使用 mkfs 命令格式化磁盘
$ sudo mkfs.ext4 virtual.img
使用 mount 命令挂载磁盘到目录树
知识回顾:挂载是指将一个设备挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
mount命令的一般格式
mount [options] [source] [directory]
常用操作
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
使用 fdisk 为磁盘分区
查看硬盘分区表信息
$ sudo fdisk -l
进入磁盘分区模式
$ sudo fdisk virtual.img
使用 losetup 命令建立镜像与回环设备的关联
$ sudo losetup /dev/loop0 virtual.img
(如果提示设备忙你也可以使用其它的回环设备,"ls /dev/loop*"参看所有回环设备)
(解除设备关联)
$ sudo losetup -d /dev/loop0
问题7:找出当前目录下面占用最大的前十个文件
$ du -h -a | sort -n -r | head -n 10
sort下的
-n指按照字符串表示的数字值来排序;
-r指按照反序排序;head下的
-n指取出前多少行。
实验8 Linux下的帮助命令
利用type来判断命令类型,是内建命令还是外建命令。
先利用
bash进入bash中(由于zsh中内置并没有
help命令),而
help只能查询内建命令。
-但也有方法利用
help来查询外部命令:
ls --help
man可以查询到比
help所查询出的更详细的解释信息,而且
man无论内建命令还是外部命令都可以查询。
info可以查询到比
man还要详细的信息,一般在bash里面会自带有。
实验9 Linux任务计划crontab
crontab的格式Example of job definition:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | | * * * * * user-name command to be executed
问题8:
在添加一个计划任务时,
crontab -e之后,在文档后添加
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)命令,该任务是每分钟我们会在/home/shiyanlou目录下创建一个以当前的年月日时分秒为名字的空白文件,但在实验楼环境中第一个
*加不了是为什么?
解答:
添加新任务时,应先按
A进入编辑模式,才能正常添加任务的命令行。结束编辑按
Command+C(我的电脑是Mac,快捷键用法有别于别的系统)再按
Shift和
:,输入wq,退出。
crontab的准备
启动rsyslog(在自己本地中 Ubuntu 会默认自行启动不需要手动启动)
sudo service rsyslog start
启动crontab(同样在本实验环境中需要手动启动,自己的本地 Ubuntu 的环境中也不需要手动启动)
sudo cron -f &
crontab的使用
添加计划任务
crontab -e
一个计划任务举例:该任务是每分钟我们会在/home/shiyanlou目录下创建一个以当前的年月日时分秒为名字的空白文件:
/1 * * * touch /home/shiyanlou/$(date +%Y%m%d%H%M%S)
查看我们添加了哪些任务
crontab -l
删除任务
crontab -r
通过以下2种方式来确定我们的 cron 是否成功的在后台启动:
ps aux | grep cron
or
pgrep cron
查看到执行任务命令之后在日志中的信息反馈
sudo tail -f /var/log/syslog
实验10 命令执行顺序控制与管道
想一次执行多条程序,利用;进行连接。
有选择的执行命令
使用which来查找是否安装某个命令,如果找到就执行该命令,否则什么也不做
$ which cowsay>/dev/null && cowsay -f head-in ohch~
&&实现选择性执行,如果前面命令执行的结果返回0,则执行下一条命令,否则不执行。
||实现与
&&完全相反的控制效果。
使用
$?环境变量获取上一次命令返回结果。
管道
试用
$ ls -al /etc | less
通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入,然后就可以一行一行地看。
cut 命令,打印每一行的某一字段
打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录:
$ cut /etc/passwd -d ':' -f 1,6
打印/etc/passwd文件中每一行的前N个字符:
前五个(包含第五个)
$ cut /etc/passwd -c -5
前五个之后的(包含第五个)
$ cut /etc/passwd -c 5-
第五个
$ cut /etc/passwd -c 5
2到5之间的(包含第五个)
$ cut /etc/passwd -c 2-5
grep 命令,在文本中或 stdin 中查找匹配字符串
grep命令的一般形式为:
grep [命令选项]... 用于匹配的表达式 [文件]...
wc 命令,用于统计并输出一个文件中行、单词和字节的数目
行数
$ wc -l /etc/passwd
单词数
$ wc -w /etc/passwd
字节数
$ wc -c /etc/passwd
字符数
$ wc -m /etc/passwd
最长行字节数
$ wc -L /etc/passwd
sort 排序命令
uniq 去重命令
实验11 简单的文本处理
文本处理命令tr 命令:可以用来删除一段文本信息中的某些文字。或者将其进行转换。
使用方式:
tr [option]...SET1 [SET2]
常用选项:
删除 "hello shiyanlou" 中所有的'o','l','h'
$ echo 'hello shiyanlou' | tr -d 'olh'
将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
将输入文本,全部转换为大写或小写输出
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
(上面的'[:lower:]' '[:upper:]'你也可以简单的写作'[a-z]' '[A-Z]',当然反过来将大写变小写也是可以的)
col 命令: 可以将Tab换成对等数量的空格键,或反转这个操作。
使用方式:
col [option]
常规选项:
-x:将Tab转换为空格
-h:将空格转换为Tab(默认选项)
join 命令:这个命令就是用于将两个文件中包含相同内容的那一行合并在一起。
使用方式:
join [option]... file1 file2
问题9: 在使用
join命令时,当合并两个比较小的文件时,直接利用基本使用方式就行,而合并例如
/etc/passwd和
/etc/group这种文件时,
join之前为什么要加
sudo?
paste 命令: 与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
使用方式:
paste [option] file...
常规选项:
-d:指定合并的分隔符,默认为Tab
-s:不合并到一行,每个文件为一行
相关文章推荐
- 20165310 预备作业3 Linux安装及学习
- 20165322 预备作业3 Linux安装及学习
- 20165101 预备作业3 Linux安装及学习
- 20165209 预备作业3 Linux安装及学习
- 20165312 预备作业3 Linux安装及学习
- 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习
- 20165311 预备作业3 Linux安装及学习
- 20165234 预备作业3 Linux安装及学习
- 20165211 预备作业3 Linux安装与学习
- 20155304田宜楠-第三次作业:虚拟机的安装与Linux学习
- 20165231 预习作业3 linux安装及学习
- 预备作业03:虚拟机安装及Linux操作系统练习
- SmartFoxServer学习笔记1——Linux下安装
- linux_学习笔记_如何找到和安装软件
- [Linux学习日记]Ubuntu 9.10的安装和初步配置
- linux 学习日记:安装命令linux text 关机命令shutdown -h now init 0 shutdown -h 10 init 0
- 我的linux学习环境的安装过程
- LAMP学习之linux下mysql的安装过程
- ORACLE学习之路--oracle在linux下的安装
- linux系统管理学习笔记之三----软件的安装