Linux基础知识二:
1、控制命令的执行方式:
Ctrl+C:取消命令的执行;
用;隔开隔开多条命名以实现在一行中执行多条命令;
2、命令的分类:
内部命令:隶属于某一个已经打开的shell程序的命令;
外部命令:在系统的某个路径下存在一个与命令名称相同的可执行文件的命令;
# which command:查看某一个命令的路径;
# type command :查看某一个命令是内部的命令还是外部命令;
3、ls [options][file|directory]
# ls file:将文件名再显示一遍;
# ls dirctory :显示目录里面的文件名;
4、如何获得命令帮助:
1、大多数外部命令都可以通过--help获取帮助信息;(有写可以使用-h获取帮助)
2、内部命令可以使用help command来获取帮助信息;
3、查看命令的手册: # man command;
4、查看命令的信息页:# info command,含有超链接,可以实现在文档之间进行跳转的;
5、命令自身附带的官方文档存放路径:/usr/share/doc/command-version
6、http://www.redhat.com
7、google搜索;
5 1】如何使用man(manual)查看命令手册页:
# man [chapter]<command>
例如:# man 1 ls ,如果不加chapter时,则使用命令首次出现的手册页作为默认显示的帮助手册;
man 是分章节的,按命令类型归类,不同类别的命令帮助手册可能位于不同的章节中;同一个命令可以归类为多个章节的,则在多个章节中均可以存在手册页;
man的八个章节:
1、用户命令;
2、系统调用相关的帮助信息;
3、库调用帮助信息;
4、特殊文件说明(通常指设备文件的说明);
5、文件格式(通常指配置文件的格式);
6、游戏有关的帮助信息;
7、杂项;
8、管理命令(只有管理员可以执行的命令);
2】# whatis command:查看命令的手册页在哪个或哪些章节中有帮助手册。
whatis:whatis所依赖的数据库不是自动生成的,而是装完系统后使用makewhatis生成的;
makewhatis被做成了系统任务,每隔一些时间自动执行一次。如果其不能够自动执行,则可以手动执行:# makewhatis。makewhatis这个命令会遍历系统的所有命令的手册页,然后生成数据库。
3】man手册通常都是压缩后存放的,默认情况下存放在/usr/share/man下面,但并非所有的man手册页都压缩存放在该目录下。
/etc/man.config中存放man的手册页的路径信息,当我们配置完一个命令后,需要在该配置文件中指明该命令的手册页存放位置才能使用man命令查看该命令的手册页。
4】手册页说明:
命令手册页中用大写的粗体显示的称为该手册页的不同段落;
NAME:命令说明。
SYNOPSIS:命令的使用格式,[]表示选项可选;<>表示选项必选;...,表示可以有多个;|,表示多选一;{},将多选一的选项括起来,以避免歧义。
DESCRIPTION:命令描述信息。
OPTIONS:命令可选的选项。
AUTHOR:命令的作者;
REPORTING BUGS:向某邮箱报告bugs信息。
COPYRIGHT:版权信息。
SEE ALSO:其他途径获取命令的帮助信息。
FILES:说明命令依赖的配置文件。
EXAMPLES:命令的使用样例。
5】man -M COMMAND-PATH COMMAND:临时将手册页加载到man路径下以便可以用man命令来查看命令的帮助信息,开机重启后无效。
man -k command:显示出跟命令相关的所有命令的手册页的位置。
6】man手册页中如何翻屏?
空格键:往文件尾部翻一屏;
b键:往文件首部翻一屏;
enter键: 一行一行的往文件尾部看;
k键:一行一行的往文件首部看;
G键:跳到文件尾部;
1G:跳到文件首部;
7】man中如何搜索字符串?
/keyword:从文件首部向下寻找;
n键:当查找的字符串有多个的时候,按n键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。
N键:当查找的字符串有多个的时候,按N键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。
?keyword:从文件尾部向下寻找;
n键:当查找的字符串有多个的时候,按n键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。
N键:当查找的字符串有多个的时候,按N键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。
6、cp 源文件 目标位置:服务某一个文件到某一个目标位置去。
7、history
-c:清空此前的命令历史。
-d n :删除第n条命令。
n:显示命令历史最近n条命令,包括当前命令和错误命令。
-w:表示直接写入命令历史文件(~/.bash_history)中,会覆盖原有命令历史。
-a:在原有命令历史文件(~/.bash_history)的尾部,将当前缓冲区中的命令写入。
# !n:执行命令历史中的第n条命令。
# !string:执行命令历史列表中最近一次以“string”开头的命令。
#!!:重复执行上一条命令;
# cd ESC,.:使用上一条命令的最后一个参数;
#cd !$:使用上一条命令的最后一个参数;
#cd atl+.:使用上一条命令的最后一个参数,但在远程连接中不可用。
history的命令历史有两部分组成:
一部分为:~/.bash_history:保存的是此前用户退出后保存至用户的配置文件当中的命令历史,
二部分为:当前缓冲区中的命令历史;
与命令历史相关的环境变量:
HISTFILESIZE,该变量决定~/.bash_history中能保存的命令的条数。
HISTSIZE,定义的是该次登录后,在内存缓冲区中能保存的命令历史的条目。
HISTFILE,该变量定义哪一个文件是默认的命令历史的保存文件。
# export HISTCONTROL=ignorespace|ignoredups|ignoreboth|erasedups :
ignorespace:以空格开头的命令不计入命令历史中;
ignoredups:但凡是重复的命令就不再重复计入命令历史中,保留的是该变量修改后的第一个出现重复的命令;
ignoreboth:前两者都生效;
erasedups:去除重复的命令,保存的是当前出现重复的命令,将该参数修改后出现同样的命令去除掉。
8、查看文本文件的命令:
1】 cat 文件名:显示文本文件内容,直接显示到尾部;
-n 文件名:显示文件的时候,也显示行号;
-E 文件名:显示行结束符;
-v 文件名:显示非打印字符,但不显示制表符;
-T 文件名:显示制表符;
tac 文件名:倒着显示文件内容;
2】more/less:
more:当显示到文件尾部时,会自动退出,并且在显示过程中,不可以向前翻页,除非文件内容大于两屏才行。enter键表示一行一行地往后看。
less:不同于more,当显示到文件尾部时,不会自动退出。
less支持的控制命令:
空格键:往文件尾部翻一屏;
b键:往文件首部翻一屏;
enter键: 一行一行的往文件尾部看;
k键:一行一行的往文件首部看;
G键:跳到文件尾部;
1G:跳到文件首部;
/keyword:从文件首部向下寻找;
n键:当查找的字符串有多个的时候,按n键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。
N键:当查找的字符串有多个的时候,按N键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。
?keyword:从文件尾部向下寻找;
n键:当查找的字符串有多个的时候,按n键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。
N键:当查找的字符串有多个的时候,按N键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。
3】head/tail 文件名:显示文件内容的前|后十行。
head -n FILE:例如,# head -5 /etc/init.d/functions
head -n # FILE:例如,# head -n 5 /etc/init.d/functions,显示functions文件的前5行内容。
tail与head用法基本相同,但其有特殊选项:
tail -f 文件名:表示不退出,一直查看文件内容,多用于监控一个日志文件内容的变化。例如,# tail -f /var/log/messages
4】wc:(words counts)做字符统计;
wc -l 文件名:显示某一个文件内容有多少行;
-w 文件名:显示某一个文件内容有多少单词数;
-c 文件名:显示某一个文件内容有多少字符数;
9、cut:切割文件内容。
cut -d: -f1 文件名:显示该文件中,以“:”分割开的第一个字段的内容;
cut -d : -f1,6 文件名:显示该文件中,以“:”分割开的第一个和第六个字段的内容;
cut -d: -f1-6 文件名:显示该文件中,以“:”分割开的第一到第六个字段的内容;
cut -d'' -f1 文件名:显示该文件中,以“空格”作为分割符的第一段内容;
10、sort:排序命令,对文件的原内容没有排序,只是将排序的结果显示在屏幕上;
sort 文件名:纯粹以ASCII码的次序逐个升序排序。
-r 文件名:逆序排序文件内容;
-n 文件名:以数值大小的方式比较;
-f 文件名:在比较的时候不区分字符的大小写;
-u 文件名:排序后重复的行只显示一次;
11、uniq:uniq判断两行是否是相同的行的标准是:这两行是连续的,且这两行是相同的。uniq命令通常与sort一块使用。
uniq -u :只显示那些唯一的行;
-d :只显示重复的行并且只显示一次;
-c :显示某一行重复的次数;
12、tr:转换或者删除字符,以字符作为单位的,只是将结果显示出来,并不修改原文件的内容;
格式:tr [options] SET1 [SET2] < 文件名: 将文件中所有的SET1替换成SET2;
tr -d SET1 < 文件名:将文件中所有的SET1字符删除掉;
例如:# tr 'a-z' 'A-z' < /etc/passwd 或者 # cat /etc/passwd |tr 'a-z' 'A-Z' :将/etc/passwd文件中的小写字符都转换成大写字符;
13、 /etc/shadow里面记录的格式: account:!!:自1970年开始到最近一次密码修改后中间经过的天数:密码最短使用期限天(默认为0):密码最长使用期限天(默认为99999):密码过期之前多少天向用户发出警告:密码过期之后多少天此用户账号将被禁用(即非活动时间):自1970年开始过多少天后用户账号将被禁用:预留段。
!!是处于锁定状态的用户账号,不允许用户登录进来,但管理员可以su进去。
$1$加的盐$最终的密码$:“1”表示使用的加密方法是md5加密算法。
14、# bc :bc是一个计算器。
scale=2:表示精确到小数点后两位。
15、禁用用户账号:
# passwd -l:锁定用户账号;
-u:解除用户账号锁定;
--stdin 用户名:给用户指定初始密码;
-n:定义密码最短使用期限;
-x:定义密码最长使用期限;
-w:定义密码过期前多少天向用户发出警告信息。
-i:定义非活动时间,即密码过期多长时间用户账号将被禁用。
16、pwck:检查passwd文件的完整性。
passwd的属性配置文件在/etc/login.defs。
17、查看用户信息的方法:
1)id其使用格式:id [option] [username]
id :显示当前用户的属性信息。
用户名:显示该用户的属性信息。
-u 用户名:显示该用户的uid。
-g 用户名:显示该用户的gid。
-G 用户名:显示该用户名所属的所有组的id号。
-n 用户名:使用用户名或者组名显示该用户或者该用户所属的组,需要和-G|-u|-g一起使用。
2)finger:查看用户信息的第二种方法。其使用格式:finger [username]
18、chfn:改变finger的信息,该些信息会以“,”隔开显示在文件/etc/passwd记录的第五段里,即GECOS的内容。格式 :chfn 用户名
chsh:用户的shell。格式:chsh 用户名。
19、usermod:
-u:修改户的uid;
-g:修改用户的gid;
-a -G:给用户追加附加组,若只使用-G,则用户以前的附加组组会被覆盖掉。
-c:修改用户的注释信息,即GECOS信息;
-d:修改用户的家目录,此新的家目录事先不能存在。此时用户家目录里面的文件不会被一并复制到新的家目录里面,所以需要和-m 一块使用,即 -dm;
-s:修改用户的登录shell;
-l newlogname:修改登录名;
-L:锁定用户账号;
-U:解除用户账号锁定;
-o:可以实现两个用户使用同一个uid号。
-e:指定用户账号的最长使用时间;
-f:指定用户账号的非活动时间;
20、chage:
-m:改变密码的最短使用期限;
-M:改变密码的最长使用期限;
-W:改变密码过期之前多少天出现警告信息。
21、userdel 用户名:删除用户,默认不会删除用户的家目录。-r选项可以一块删除用户的家目录。
22、groupadd -g:指定该组的gid;
-r:添加该组为系统组;
groupmod -g gid:修改gid。
-n newgroupname:修改组名。
groupdel 组名:删除组。
gpasswd 组名:给组添加密码。
newgrp 组名:切换到其他的组,并使其他的组作为该组的基本组。通过exit退出 。
23、Linux的安全模型:
1)每一个文件都有属主和属组;
2)每一个进程都以某个用户和组的身份运行;
3)每一个文件都有读、写、执行权限;
4)先用户、组,最后是其他。
24、chmod:改变文件的权限。其方法有如下四种:
1)chmod 644 file1:将文件的权限修改为rw-r--r--;
chmod 64 file1:将文件的权限修改为---rw-r--;
2)在文件权限修改中,u代表修改属主的权限;g代表修改属组的权限;o代表修改其他用户的权限;a代表修改所有用户的权限。例如:u=rw,g=r或者ug=rwx等。如果对应位没有权限,则u|g|o= 。
3)如果要给对应位加权限,则可以使用u|g|o+/-r|w|x 。
如果改变的是目录的权限,则只改变目录本身的权限,而不会改变目录内文件以及子目录的权限。
chmod -R u|g|o+/-r|w|x 目录名:递归修改目录以及子目录文件中的权限。
4)chmod [-R] --reference=/etc/ 文件名或者目录名:以某个文件作为参照来修改指定文件或目录的权限;
25、chown:改变文件的属主和属组。其格式为:chown 新的属主:新的属组 文件名。-R选项表示递归修改。--reference=文件或者目录名,此时文件的属主和属组一并会修改。
chgrp:改变文件的属组。其格式为:chgrp 新的属组 文件名。-R选项表示递归修改。--reference=文件或者目录名,此时修改的仅是属组。
26、date:
date +%X :显示系统时间;
date +%x :显示系统日期;
date :显示系统日期和时间;
date -u MMDDhhmmYY.ss:设置系统日期和时间;
date +%s:显示自1970年开始到最近一次密码被修改所经历的秒钟。
# date -s "2012-06-08 12:23:34" 修改系统日期和时间。
# clock -w 将系统日期写入到硬盘中。
27、# du -sh 文件|目录名:统计文件或目录的大小。
28、系统主要的全局配置文件有三个:
1)/etc/profile
2)/etc/profile.d下面的所有文件都是/etc/profile文件的肢解部分,即/etc/profile.d下面的文件整个组成了/etc/profile该文件内容。
3)/etc/bashrc。
用户主要的个人配置文件:
1)~/.bash_profile
2) ~/.bashrc
3) ~/.bash_logout
用户登录shell的方式有两种,它们读取配置文件的方式也不相同:
1)交互式登录的shell,如通过用户名和密码登录的shell、管理员通过# su - 用户名 方式登录的shell(退出后会清屏的)。
读取配置文件的次序如下:
/etc/profile—>/etc/profile.d/*->~/.bashprofile—>~/.bashrc->/etc/bashrc
2)非交互式登录的shell,如管理员通过 # su 用户名 方式进入到某一个用户的shell、脚本执行过程中运行的shell、图形用户界面下打开的模拟shell等。
读取配置文件的次序如下:
~/.bashrc—>/etc/bashrc—>/etc/profile.d/*
profile类文件主要定义的内容:1)设定环境变量;
2)在用户登录完成前执行一些命令;
bashrc类文件主要定义的内容: 1)设定本地变量;
2)定义命令别名;
29、部分环境变量的解释:
PATH:用于定义在shell中键入的命令的对应的可执行文件的搜索位置;
在PATH路径下新增值的方法:# export PATH=$PATH:新的路径,但此种方法不会使新路径永久生效,下次登录时会失效。要想永久生效,可以通过编辑配置文件来实现。例如,如果想让/usr路径在PATH中出现,且对全局有效,可以通过如下方式实现:编辑/etc/profile文件,在PATH变量的尾部加入:/usr即可,重新登录shell,通过# echo $PATH命令来查看是否PATH中多出了/usr该路径。
DISPLAY=localhost:10.0,表示用户当前处于本机的10号终端第0个屏幕上。
HISTSIZE=1000,表示该次登录后,可以在内存中保存的命令历史的条数。可以在文件/etc/profile中修改该值。
HOME=/root,表示当前用户的家目录为root。
HOSTNAME=localhost.localdomain,表示该主机的主机名称。
INPUTRC=/etc/inputrc,表示输入设备的配置文件。
LANG=en,默认使用的语言和字符集。使用# locale -a 显示当前系统上支持的所有字符集。使用# locale 显示当前系统正在使用的字符集。 可以使用# export LANG= ,来修改我们使用的语言和字符集,但此方法不能永久有效,也可以通过修改配置文件/etc/sysconfig/i18n来达到永久有效。
LOGNAME=root,登录名为root。
MAIL=/var/spool/mail/root,用户的邮筒地址。
OLDPWD=/tmp ,指明用户当前工作目录的上一个工作目录。
PWD=/root,指明用户的当前工作目录。
LS_COLORS= ,指明ls命令使用时的颜色设置。
SHELL=/bin/bash,指明当前正在使用的shell。
30、使用# source 配置文件或者# . 配置文件,让系统重读一下该配置文件。但会用负面影响,比如,当我们修改了PATH环境变量的值后,当source第二次的时候,PATH变量的值会重复出现我们刚才加进去的路径,即出现冗余现象。
31、# basename 路径名 ,可以显示该路径的基名。