Linux 学习笔记(新手入门)
2014年11月29日 星期六 20时44分
本科实习了十天的linux基础知识,现在只剩些许的记忆了。短暂的学习时间,只学到了linux的一些最基本的命令。现在抱着一本《linux命令行和shell脚本编程》重新开始linux的学习咯。此文记录一下自己的学习笔记,让新手可以快速入门linux系统。
1. Linux基础知识:
Linux是由四部分组成,缺一不可:
一、Linux内核;
二、GNU工具组件
三、图形化桌面环境(类似于windows桌面)
四、应用软件
将linux内核和GNU工具组件整合起来,就可以创造一个完整的操作系统。不同的linux发行版通常可以归为三种:
1. 完整的核心Linux发行版;
2. 专业发行版
3. LiveCD测试发行版
Shell(文本命令行界面CLI(终端控制台)):
在图形界面出现之前,和unix系统交互的唯一方式是通过shell提供的文本命令行界面command line interface。 有了图形界面后,可以通过终端进入shell CLI。
虚拟控制台和图形界面的切换
虚拟控制台(文本模式)和图形模式,文本到图形 Ctrl-Alt-F7,
图形界面到文本命令 Ctrl-Alt-F[1-6]
Shell提示符
默认的bash shell提示符是美元符号,所有提示符特殊字符都从反斜线(\)开始。可以通过输入PS1=“[提示符字符][提示符字符]\$”进行设置,
Bash 手册(命令帮助命令)
大多数linux发行版有用以查找shell命令以及其他GNU工具信息的在线手册,可以通过man命令访问,只需要在你想要查找的工具的名称前面输入man命令,如man passwd.里面会有关于passwd命令的详细介绍。看完手册页面,按q键退出返回。
正斜线(/)反(\)linux文件系统
反斜线是用来标识转移字符,如\n,正斜线是用来划分目录路径。
Linux虚拟目录结构之有一个称为根(root)目录的基础目录,其他文件目录都是在此目录下。在根目录下有一些特别的目录,称为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。
用户文件是存储在硬盘中的,挂载在虚拟目录上,根目录和挂载点是在虚拟目录中。
切换目录命令cd destination
切换目录命令cd可以将shell会话切换到另一个目录。
绝对文件路径:是把完整的路径写出来,以代表根目录的正斜线 / 开头。
相对文件路径:允许用户指定一个基于当前位置的目标文件路径,而无需从根目录开始。有两个特殊字符:
1. 单点符(.),表示当前目录;
2. 双点符(..),表示当前目录的父目录。
如,a/b/c$ cd .. 返回到b目录, cd ../.. 返回到a目录,cd ../../e 返回到a目录下的e目录。
文件和目录列表
ls命令显示当前目录下的文件和目录,更多带参数的用法可以用man ls进行了解。
dir也可以显示当前目录下的文件和目录,跟ls有着相同的用法。
区别:一个是linux一个是window,linux可以重命名指令,要是可以用dir肯定是命令转义的指令。
参数用法说明
单字母参数通常由英文破折号(-)开始,如 -a.
全字参数以双英文破折号开始(--)。如--help, --all等。
两种版本表示的含义一样。
使用多个参数时,多个双破折线参数必须分开输入,而多个单破折线可以组合成一个字符串跟在一个单破折线后面。
问号代表一个字符,星号*通配符代表零个或多个字符。
文件处理命令
创建文件命令: touch,touch命令可以创建任意类型的空文件,但是不能创建文件夹。
vim test.txt 创建一个test文本文件并对其进行编辑。
Vim编辑器编辑文件退出时,按ESC,然后按 :wq进行文件保存并退出,:q表示不保存文件直接退出编辑。:q!表示强制退出编辑。编辑文件时 按i开始插入,编辑文件。
创建文件夹用mkdir命令。
复制文件命令:cp命令,cp source destination。
使用通配符*可以将符号该条件的文件都复制到目标目录中,
重命名文件称为移动(mv命令)。
删除文件叫做移除(removing),rm命令删除文件。
rmdir命令只能删除空目录,
stat命令查看文件状态信息,file 命令查看文件类型。
查看文件内容的命令:
cat命令可以查看文件的内容。所有内容一次性完整的显示在屏幕上。无法按照自己想查看的顺序查看内容。
more 命令可以查看文件的内容,在显示每页数据之后会停下来,可以看到屏幕中显示此时在文件中的位置。
less 命令和more命令功能差不多,每次显示一屏文件内容,它不用读取整个文件,可以上下翻滚查看内容。
tail 命令会显示文件末尾部分的内容, 可以指定末尾的行数。
head 命令查看头部。
快捷键
Ctrl +L(l) : 大小写都可以,清除屏幕或输入(clear)。
exit: 退出当前终端。
who am i : 查看当前账户;
当输入命令的时候,可以输入首字母按tab键补全单词(或名字)。
帐户之间的切换su -student;切换到学生身份,su -root;切换到root用户
passwd 命令改变linux用户登录密码。
" Ctrl+A"跳到行首。" Ctrl+E"跳到行尾。" Ctrl+SHIFT++"放大屏幕。" Ctrl+-"缩小屏幕。
Ctrl+C退出后台,Ctrl+Z退出前台。(对不同的系统不一定有用)
网络配置
使用ifconfig命令查看网络接口配置。
2. Linux命令中级篇
破解linux登录密码
1是单用户模式、破解密码。reboot重启,怎么破解密码:将电脑重启,然后一直按上下键,选择kernel..选项按“e”进入编辑,加一个“1"在后,选择“b”输入自己新的密码,然后“reboot或init 6”重启,完成。
进程管理
当程序运行在系统上时,我们称之为进程(process)。
ps 命令查看当前用户运行在系统上的进程,只能查看某个特定时间点的信息不能实时更新。
top 命令和ps 命令很像,top命令可以实时的显示进程信息。
kill 命令可以通过进程号(PID)给进程发送信号,终止该进程。
killall 命令支持通过进程名结束进程,并可以使用通配符。
挂载存储媒体:linux系统将所有的磁盘都挂载到一个虚拟目录下,在使用新的存储媒体之前,你需要把它放到虚拟目录下,这项工作称为挂载(mounting)。
Linux上用来挂载媒体的命令叫做mount。它会输出当前系统上挂载的设备列表。
从linux系统上移除一个可移动设备时,不能直接移除,应该先卸载它。
卸载设备的命令叫umount。
df 命令用来查看所有已挂载磁盘的使用情况,剩余多少磁盘空间。常用格式 df -h,把输出中的磁盘空间按人类可读的形式显示。
du 命令可以显示某个特定目录的磁盘使用情况,可以用来判断你系统上某个目录下是不是有超大文件的快速方法。
排序数据
sort 命令用来对数据进行排序。sort -M 可以将数据按月份排序。sort -n 将数据按数值排序。
sort -r 将数据按降序排序。
搜索数据
grep命令查找或过滤与指定内容相关的数据。
如grep "root" ifconfig eth0 或ifconfig eth0 |grep"root"对ifconfig,etho这两个文件进行查找与root有关的内容。
过滤内容:使用参数-v.
解压/压缩数据
压缩文件格式主要有三种:.bz2 ----bzip2工具, .gz -----gzip工具, .zip ----工具zip。
Bzip2软件包有以下几个工具:
bzip2: 用来压缩文件。bzcat 用来显示压缩的文本文件的内容。
bunzip2: 用来解压压缩后的.bz2文件。
bzip2recover: 用来尝试恢复损毁的压缩文件。
gzip,zip工具都与bzip2类似,可以man 查看详细介绍。
三者的区别:bzip2和gzip只能对单个文件a进行解压和压缩处理,解压或压缩后的文件会自动命名为a.bz2或a.gz。如bzip2 a, 压缩后的文件为a.bz2. 如bzip a.txt :压缩后的文件为a.txt.bz2。 注意区分压缩时的文件,一定要注意需要压缩的文件的类型。
zip可以对整个目录进行解压和压缩处理。如 zip testzip test:对test目录下的文件进行压缩并命名为testzip。
归档数据
tar命令是unix和linux上最广泛使用的归档工具。
创建一个归档文件:tar -cvf test.tar test/ test1/ 将test和test1目录下的文件归档到test.tar下。
列出tar文件test.tar的内容,但是不解压文件,tar -tf test.tar。
tar -xvf test.tar 从tar文件test.tar中提取内容。
3. Linux环境变量
bash shell 用环境变量(environment variables)的特性存储有关shell会话和工作环境的信息。有全局变量和局部变量。全局环境变量不仅对shell会话可见,对所有shell创建的子进程也可见。局部变量只对创建它们的shell可见。 系统环境变量一律使用全大写字母以区别于普通用户的环境变量。
全局/局部环境变量
查看全局变量,可用printenv命令。
要显示单个全局环境变量的值,可用echo命令。当引用环境变量时,必须在环境变量名称前加一个dollar符号$。
set 命令会显示为某个特定进程设置的所有环境变量。它也包括全局变量。
系统软件更新
系统软件更新:sudo apt-get update 获得最近的软件包的列表。
sudo apt-get install 安装包a:安装需要安装的安装包a。
设置环境变量
设置局部环境变量:直接输入变量名a=变量值b。引用变量a的值时,只要用$a输出的是b。用户环境变量只能在当前shell会话中使用。
设置全局环境变量:先创建一个局部环境变量,然后再使用export a命令把它导入到全局环境变量中。
删除环境变量
unset 命令来删除局部环境变量。如局部环境变量a, 删除 unset a。
pwd 命令是显示当前工作目录的路径。
echo $PATH:查看当前PATH变量的值。PATH中的目录之间是用冒号分隔的。添加新的搜索目录到现有的PATH环境变量,不需要重新定义。只需要引用原来的PATH值然后再加上冒号,加上新目录即可。如PATH=$PATH:/home/test
获得root权限
如果su - root 输入密码登录成功,就可以直接切换到root。
如果不成功,输入sudo -i ,设置root登录密码,此时你会发现你已经是root了。
sudo passwd 用户名a。设置用户a的登录密码。
设置别名
alias命令查看已有的别名命令列表,也可以用来创建自己的命令别名,如alias li=’ls -il’。
要永久使用这个别名,需要将其写入(交互式shell启动文件)$HOME/.bashrc中。
4. Linux文件权限及文件管理
Linux系统使用/etc/passwd文件来将用户的登录名匹配到对应的UID值。Root 用户账户是linux系统的管理员,通常分配给它的UID是0.passwd文件是标准的文本文件,任何进入的用户可以对其进行编辑修改,存在安全隐患。现在,linux系统将用户密码保存在一个单独的文件中/etc/shadow。只有特定的程序才能访问这个文件。
以下命令只能在root账户下使用才有效。
1. 添加新用户到linux系统:useradd命令。useradd -m 用户名test,创建test用户并建立一个主目录/home/test。
2. 删除用户:userdel -r 用户名:删除用户的home目录以及其他文件。
3. 修改用户:usermod命令
备注:用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。指定和修改用户口令的Shell命令是passwd。
Root权限(修改密码)
超级用户root可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户root为用户指定口令时,就不需要知道原口令。Root使用passwd -d 用户名test,删除test用户的登录密码,下次登录test用户就不需要密码了。
chpasswd命令为系统中的大量用户修改密码。它能从标准输入自动读取登录名和密码对(由冒号分隔)列表,给密码加密,然后为用户账户设置。
组管理
/etc/group包含组信息。
创建新组:groupadd,在系统上创建新组。它没有提供将用户添加到组的选项,可以用usermod命令来添加用户到该组。用法 Usermod -G 组名 用户名。Usermod 的两个参数G/g注意,-G参数将该组添加到用户的属组的列表里,而不会影响默认组。-g参数,指定的组名会替换掉该账户的默认组。
修改组:groupmod -n 新组名 原组名。
文件权限
Rwx:可读可写可执行。
改变文件的权限:chmod命令,用法:chmod +权限b 文件名a:给文件a添加b权限。
chmod -权限b 文件名a:给文件删除b权限。
chown命令改变文件的属主,chgrp命令改变文件的属组。
用法:chown 新的属主(用户) 文件名。chgrp 新的属组(组名) 文件名。
chown命令也支持同时改变文件的属主和属组,chown 属主.属组 文件名。
文件系统介绍
Linux系统支持多种类型的文件系统来管理文件和目录,每种文件系统都在存储设备上实现了虚拟目录结构,只是特性不同。
1. ext文件系统
最早的文件系统是一个类Unix文件系统叫做扩展文件系统(extended filesystem,简记为ext),使用虚拟目录来操作硬件设备,在物理设备上按定长的块来存储数据。它采用称作索引节点的系统来存放虚拟目录中所存储文件的信息。Linux通过唯一的数值(索引节点号)来引用索引节点表中的每个索引节点。
2. ext2文件系统
ext文件系统限制多,如文件大小不得超过2GB。ext2是ext的一个扩展。
3. 日志文件系统:日志文件系统会先将文件的更改写入到临时文件中,数据成功写入到存储设备和索引节点表后,才删除该临时文件。
操作文件系统
可以在命令行下创建新的文件系统或者修改已有的文件系统。
1. 创建分区
首先,必须在存储设备上创建分区来容纳文件系统,分区可以是整个硬盘或一部分,来容纳虚拟目录的一部分。
fdisk工具帮助管理安装在系统上的任何存储设备上的分区。fdisk命令是个交互式程序,允许输入命令来逐步完成硬盘分区的步骤。
要启动fdisk命令,必须指定要分区的存储设备的设备名。用法fdisk 设备;可以通过fdisk -l查看设备。
2. 创建文件系统
分区后创建文件系统格式化该分区,这样该分区才能开始使用。
创建文件系统的命令有:mkefs, mke2fs, mkfs.ext3, mkfs.ext4, mkreiserfs, mkfs.xfs等。
3. 创建挂载目录,挂载文件系统
mkdir /mnt/test;
mount /dev/sda6 /mnt/test ; //sda6是新创建的分区(临时挂载该文件系统)
要永久挂载该文件系统,需要将文件系统添加到/etc/fstab文件中。在文件中加入:
/dev/sda6(新建的分区) /mnt/test(挂载目录) ext3(文件系统格式) defaults 1 2
文件系统出错处理/恢复
fsck命令用来检查和修复任意类型的linux文件系统,用法:fsck options filesystem;
逻辑卷管理布局
逻辑卷管理的核心是他如何处理安装在系统上的硬盘分区。逻辑卷管理器(logical volume manager, LVM)软件就是用来做这个的。
基础篇已介绍完毕,linux编程开发等高级篇后续。谢谢!