1)至少需要两个磁盘分区,分别用于创建”/”文件系统与交换分区。其中,linux系统使用交换分区提供虚拟内存,在一个32位的pc中,不超过2GB。2)若磁盘存储空间较大,可划分多个磁盘分区,在每一个磁盘分区中创建一个单独的文件系统,如/usr,/var,/home等文件系统,但不能把/bin,/dev/,/etc/,/lib,/root和/sbin目录作为单独的文件系统分区,这些目录应位于”/”文件系统分区中。3)若要创建多个磁盘分区,查阅分区要求与建议。
ctrl+alt+T
,默认屏幕大小打开终端;alt+F2
,进入执行命令文本框,输入gnome-terminal --full-screen
,即进入全屏显示,输入exit
,即可退到1中打开的状态;crtl+alt+f1-6
,打开tty1-6
的终端界面。输入ctrl+alt+f7
,返回GNOME界面;注意:其中(n),n指文件描述符。Linux系统启动一个进程(该进程可能用于执行Shell命令)时,将自动为该进程打开三个文件:标准输入、标准输出和标准错误输出,分别由文件标识符0、1、2标识。
输入输出重定向
,使用指定的文件作为标准输入(其文件描述符为0),以便从指定的文件中接收输入数据;
wc -l < io.txt
,表示将io.txt中的记录行数显示到屏幕终端。
>fname
,使用指定的文件作为标准输出(其文件描述符为1),若文件不存在则新建,存在且noclobber标志已经设置,将产生错误,否则覆盖原文件中所有内容。若需要追加在原文件内容后面,需要用>>fname
。 ls -l > io.txt
,表示将当前目录下的所有文件信息写入io.txt文件中,若io.txt没有,则自动创建,存在则直接覆盖其中的内容。>|fname
,除了忽略noclobber标致之外,其功能与>fname
相同。 set -C noclobber
开启noclobber,set +C noclobber
关闭noclobber。<>fname
,以读写方式打开指定的文件,并使之作为标准输入。<<[-]fstr
,Here document文档的使用技巧。<&digti
,使用指定的文件描述符复制一个标准输入。>&digti
,使用指定的文件描述符复制一个标准输出。<&-
,关闭标准输入,而”n<&-“则表示关闭输入文件描述符n。>&-
,关闭标准输出,而”n>&-“则表示关闭输出文件描述符n。<&j
,把标准输入重定向到文件描述符j表示的输入文件中。>&j
,把标准输出重定向到文件描述符j表示的输出文件中。&>fname
,把标准输出和标准错误输出均重定向到指定的文件中。 0,把标准输入重定向到指定的文件中。
1>fname
,把标准输出重定向到指定的文件中;1>>fname
,把标准输出重定向并附加到指定的文件中。2>fname
,把标准错误输出重定向到指定的文件中;2>>fname
,把标准错误输出重定向并附加到指定的文件中。例如: $ errfile=script.errors
(errfile就是文件描述符);$ sss 2>$errfile
,sss是错误指令,则输出错误信息,2被重定向到了errfile对应的文件中,故错误信息写在script.errors;$ aaa 2>>$errfile
,继续追加错误信息; i>&j
,把文件描述符i表示的输出文件重定向到文件描述符j表示的文件中。例如:
command >command.log 2>&1
,标准输出和标准错误输出都重定向到同一个文件中
$ echo "hello" >> command.log 2>&1
$ sss "hello" >> command.log 2>&1
[j]<>fname
,以读写方式打开指定的文件,并把文件描述符j分配到指定的文件。如果文件不存在,则创建该文件。如果未指定文件描述符j,则表示默认的文件描述符0,即标准输入。
管道
ls /usr | wc -w
,统计/usr目录下文件的数量(利用管道把ls和wc两个命令连接在一起)
传统的方法,是利用一个中间临时文件,如ls /usr > file.tmp ; wc -w < file.tmp
。
command1 | command2 | command3 > output-file
。tee
命令,一个相当于三通管的实用程序。主要功能是通过标准输入接收并显示数据,同时把数据存储到指定的文件中。
$ ls -l io.txt
-rw-rw-r-- 1 sucab sucab 12 5月 14 10:42 io.txt
*
,可以匹配任何数量的字符或字符串,包括空字符串。例如: ls -l *.txt
,列出所有.txt
为文件后缀名的txt文件。su*
,表示任何一个以”su”为起始的字符串。?
,匹配单字符串。[...]
,匹配给定范围的字符。例如[a-z],[0-9]。[!...]或[^...]
,表示不在该范围中。例如: ls -l [io]*
set -f
,能够禁止文件名的生成。当shell无法解释元字符时,应注意检查是否设置了该标志。\
,则失去其特殊意义。而对于一些普通字符,加上转义符号\
,则具有特殊意义。例如: \a
,生成声音提示;\b
退格符;\e
Esc字符;\f
换页符;\n
换行符;\r
回车符;\t
制表符;\v
竖向制表符;\\反
斜线;\’单引号;\nnn
采用1-3位8进制数值表示等价ASCII字符;\xHH
采用1-2位16进制数值表示的等价ASCII字符;\cX
Ctrl+X字符。\n
换到下一行,\r`回到本行的开头。Unix系统里,每行结尾只有”\n”;Windows系统里面,每行结尾是”\n\r”;Mac系统里,每行结尾是”\r”。fc -l 10 20
,显示命令缓冲区或文件中序号为10-20的命令;fc -l -10
,列出最近输入的10条命令;fc -l cat
,列出最近一次输入的以cat
命令为其实字符串的命令;fc -e gedit/vim 10 20
,要利用vim或gedit编辑并执行序号为10-20的命令ls -l /ect/profile
,要想再执行一遍该指令,可以输入fc -s
;fc -s 100
,执行先前的第100号命令。fc -l
命令的别名。在bash中,列出所有命令;在korn shell中,仅列出16条命令。经实验,在ubuntu linux中执行fc -l
,显示16条;执行history
,显示所有;history 10
,列出最近执行的10条命令;history -c
,清除命令历史缓冲区中的命令。$ !!
;$ find / -name "*conf" -print > conf.log 2>&1 &
[1] 2136
,[1]
作业号,2136
作业的进程ID。jobs
内部命令,可以显示作业控制表中保存的当前作业。$ bg %1(作业号)
,把停止运行的作业放到后台运行;$ fg %2
,让一个后台作业回到前台继续运行; kill %1
,停止后台作业 wait %2
,等待当前正在运行的作业完成。script
命令,可以记录用户从注册到推出系统的整个或部分会话过程,包括用户的输入和系统的响应信息。例如: which
:区分同名指令,如tar命令,如何知道是用的哪个tar命令,$ which tar
,显示/bin/tar
;whereis
,显示所有与给定命令相关的文件,如$ whereis tar
,显示tar:/bin/tar /usr/lib/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz
。apropos
命令,模糊查找给定命令在文档中的说明;whatis
命令,完全匹配给定的关键字命令。-/
--/bin
,其中包含系统、系统管理员和普通用户可以共享的各种通用程序,如cat、cp、mv、mkdir、rm、ls及ps等常用的基本命令,以及如bash等的各种shell。--/boot
,其中包含系统引导程序、linux内核程序文件vmlinuz、磁盘内存印象文件initrd以及GRUB初始引导程序和配置文件等。--/dev
,在linux系统中,任何设备均对应一个或多个特殊文件(或称为设备文件),这个目录包含了系统支持的所有设备文件。例如:console表示控制台,lp0表示打印机。
----/mem
,表示系统的物理内存。
----/sda
,sda表示连接到主控制器的第一个磁盘,sda1或sda2等则分别表示其中的第一个和第二个磁盘分区等。
----/...
,其他相关,这里略。
----/tty
,表示系统的串口设备。
--/etc
,该目录是整个linux系统的中心,其中包含所有系统管理和维护方面的配置文件,如host.conf,syslog.conf和vsftpd.conf等。----/apache2
,apache配置文件的根目录,其中包含apache服务器的各种配置文件,如apache2.conf等。----/apt
,其中包含了软件管理工具使用的配置文件,如sources.list等。----/cron.d
,用于存储cron进程调度运行后台进程所用的配置和控制文件。----/init.d
,用于存储系统启动过程中需要有init调度执行的脚本文件。----/mysql
,其中包含MySQL数据库的配置文件,如my.cnf等。----/network
,其中包含网络接口的配置文件interfaces,以及相关的配置工具。----/...
----/ssh
,OpenSHH网络服务所在配置和控制文件的根目录,其中含有sshd_config等重要配置文件。--/home
,用户主目录的根目录。新增一个用户,系统将会在/home目录中创建一个形如/home/ USER的子目录,作为用户的目录,其中的 USER为用户名。也可以作为单独的文件系统。--/lib
,该目录含有系统引导过程,以及运行系统命令所需要的内核模块和各种动态链接共享库文件(扩展名为.so,相当于windows系统中的.dll文件)。其中,内核模块(驱动程序)位于/lib/modules/kernel-version子目录中。--/lost+found
,每个文件系统分区都存在一个lost+found目录,用于存储fsck命令在检测与修复文件系统时删除的文件或目录。--/media
,移动存储介质的安装点,当利用GNOME界面安装移动存储介质时,系统将会自动地把移动介质安装到此目录下的某个子目录中。--/mnt
,文件系统的临时安装点。--/opt
,应用程序等附加软件的安装目录。--/proc
,进程文件系统proc的根目录,其中的部分文件分别对应当前正在运行的进程,可用于访问当前进程的地址空间。----/net
,其中的文件分别表示各种网络协议(如tcp,udp及arp等)的状态与统计信息。--/root
,超级用户root的主目录(在linux系统中,”/”是整个系统的根目录,而非超级用户的主目录)--/sbin
,该目录中的命令主要供超级用户使用,普通用户通常无法使用。其中包含与系统引导、管理维护,以及与硬件配置等方面有关的命令和脚本文件,符fdisk、init和ifconfig等。--/tmp
,临时文件目录,用于存储系统运行过程中生成的临时文件,也可以用户存储自己的临时文件。一般不要自己删除这个目录中的文件。--/usr
,既可以作为一个单独的文件系统,也可以作为根目录下的一个子目录,其中存有系统提供的各种共享数据(如用户命令、库函数、头文件和文档等)----/include
,用于存储各种c语言文件。是c开发人员需要经常引用的文件。 ----/bin
,其中包含用户经常使用的各种命令(find,make,…,who)----/lib
,包含各种共享的库函数,可供程序员以静态或动态链接自己开发的应用程序。----/sbin
----/share
----/src
,用于存放linux系统内核的源代码和文档等。--/var
,既可作为一个 单独的文件系统,也可作为根目录下的一个子目录,用于存储各种可变长的数据文件(如日志文件)、暂存文件或待处理的临时文件等。----/lib
,用于存储软件包特定的动态链接共享库、配置文件和状态信息等。 ----/lock
----/log
,用于守护进程日志文件的存储目录----/mail
----/run
----/spool
,用于缓存各种待处理的文件。----/tmp
,用于存储各种临时文件。----/www
,apache服务器的用户文档根目录,用于存储和发布各种HTML文档。$ pwd
,查看当前所处的目录;$ mkdir dirname
,创建一个目录;$ rmdir dirname
,删除一个目录。$ ls -l /bin
,查看对bin目录的访问权限drwxr-xr-x 2 root root 4096 5月 9 05:47 /bin
$ chmod permissions dir-or-file
$ chmod o+w script
,表示对其他用户添加写权限$ chmod o-rw script
,表示对其他用户撤销读写权限。$ chmod numcode dir-or-file
,numcode是一个数字代码,用于表示文件的访问权限,由3位数字组成,分别对应于文件属主、同组用户和其他用户。$ chmod 755 file
,表示对属主用户设定权限码为7,同组用户权限码为5,其他用户权限码为5。umask [-S] [nnn]
,这个[nnn]与chmod命令中的numcode相反,在对应位上设置1,即为撤销该权限。如000 000 000,设置为000 010 010,即为022,表示u有rwx权限,g有r-x权限,o有r-x权限。创建文件
$ touch emptyfile
,当前目录下,要是没有该文件,就自动创建一个,有则不产生作用;
$ > emptyfile
,利用重定向,产生的文件将覆盖已有的同名文件;
$ echo "hello word!" > newfile
,创建一个含有内容为”hello world”的新文件;
$ cat > myfile
,通过终端输入内容,创建并写入myfile文件;
还可以通过vim编辑器,在terminal里面进行操作。
显示文件列表
ls
命令:ls [options] [dir or file]ls -a
,列出当前目录下的所有文件(包括.*隐藏文件);ls -d
如果指定的参数是目录,只显示目录的名字,而不是列出目录下的文件;ls -l
,这个经常使用,以每行一个文件的长格式列出文件的类型、访问权限、链接数、用户属主、用户组、文件大小、最后修改时间和文件名等;ls -r
,以文件名反向排序显示文件列表(–reverse);ls -R
,注意区分与r
的区别(–recursive),递归显示目录及子目录下的所有文件;ls -s
,显示分配给文件的数据块,因此,当文件大小相近时,它们的数据块可能是一样的。* 示例:*
- 列出当前目录下的文件,
ls
- 列出指定目录下的文件,
ls /
- 利用通配符显示文件,如
ls -l *.c
,*
匹配多个字符,列出当前目录下以c结尾的所有文件,为了避免列出子目录中的文件,可以使用ls -ld *
显示文件内容
cat [options] [file]
,将文件中的内容全部显示到终端,若内容太多,只能看到最后部分;more [options] [file]
,将从头到尾一页一页地仔细阅读文件。如果文件很长,在左下角会出现--More--(n%)
,(n%)
表示已显示的数据内容占整个文件的百分比。less
命令的功能与more
类似且比它强大;head [-number | -n number] [file]
,number表示需要输出的行数。默认,输出前10行(包括空行);tail [+/-number [-lbcf]] [file]
,+
表示从文件的其实位置开始计算,-
表示从文件的结束位置开始计算。number表示要输出的行数。备注:tail
,只能访问静态文件的最后几行,对于内容动态增长的文件如日志文件,需要这样访问,tail -f somelogfile
。也就是说,somelogfile文件内容加一行,终端就显示一行,实时的。复制文件
cp [-ir] source_file target_file
,其中,-i
表示交互复制方式。例如,要将src文件拷贝到target文件时,如果target文件存在,则给出提示信息,是否要覆盖已有的文件。-r
表示递归操作,就是如果src是目录文件,则将目录中的子目录递归复制,拷贝到目标文件中。移动文件
mv [-fi] source_file target_file
,把文件从一个目录移动到另外一个目录中,或者重新命名一个文件。-f
表示强制移动或改名(force),-i
用于交互,给出目标文件存在时的提示信息。删除文件
rm [-rfi] [file]
,-r
表示递归地删除目录中的文件及目录本身;-i
表示交互操作,询问是否真的要删除;-f
表示强制删除,即使不存在该文件,也不会输出任何信息。改换目录
~
表示用户主目录缩写,在bourne shell中,停替代方法是引用$HOME
。创建、移动和复制目录
mkdir src
mv src
cp -r dir1 dir2
删除目录
rmdir [-p] directory
;rmdir dir1
;-r
参数选项,意思是recursive递归,即rm -r dir1
,可以把指定目录及其任何子目录中的所有文件全部删除。比较文件之间的差别
diff file1 file2
diff3 file1 file2 file3
。从系统中检索文件
find directory [options]
检索文件内容
grep [-inv] string file
,其中,-i
表示忽略字母大小写,-n
表示在输出结果之前给出文本行所在文件中的行号,-v
表示检索不包含个i定字符串或模式的所有文本行。string
是一个检索模式。检索模式可以是一个准备检索的字符串、一个单词或词语。排序
sort [-bdfimnru] -k key -t sepchar -o output [file]
,可对输入的数据或文件内容进行排序。其中,-n
按照字符串数值进行排序,-r
表示按照从大到小或反向顺序排序,-k
表示关键字的字段位置或关键字字段起止字符位置或范围,-b
表示忽略前置的空白字符,-d
表示仅考虑字母数字和空格字符,按照字典顺序排序;
ls -l /var/log/syslog*
,该指令是显示所有系统日志的,显示的部分结果如下:
-rw-r----- 1 syslog adm 552 6月 8 15:17 syslog
-rw-r----- 1 syslog adm 103381 6月 8 13:30 syslog.1
...
现在需要根据文件的大小降序排列,具体指令如下:
ls -l /var/log/syslog* | sort -rn -k5
-rw-r----- 1 syslog adm 103381 6月 8 13:30 syslog.1
-rw-r----- 1 syslog adm 552 6月 8 15:17 syslog
...
其中,-r表示降序排序,-n表示按照数值大小,-k按照第5个关键字字段位置(也就是文件的大小),实现最终的排序。
vim来源:vim是对unix系统上vi编辑器的扩充与增强,提供许多附加的功能特性,与vi几乎完全兼容。可运行在windows、Macintosh、Unix和Linux系统上。
启动vim
$ vim myfile
,若myfile存在,则会打开指定的文件,并显示文件第一页的内容。若文件不存在,vim将会打开一个新文件;vim
命令而未指定文件的名字,会显示vim的介绍信息。此时,可以直接进入插入模式(输入i),编写文件,然后保存(:w filename),退出(:q)。如果想放弃保存当前的操作,则可以强制退出(:qa!)。具体可同:help查看帮助;vim编辑器的工作模式
esc
键,总是进入命令模式;保存编辑文件并退出vim
:w
,保存编辑后的文件内容,但不退出vim编辑器。把内存缓冲区中的数据写到启动vim时指定的文件中:w!
,强制写文件,即强制覆盖原有的文件。如果原文件是只读文件,并且当前用户是该文件的属主,则可以强制写入;:wq
,保存文件内容后退出vim编辑器。写入并退出。另一个替代指令为ZZ
;:wq!
,强制保存文件内容后退出;ZZ
,如果文件已经做过编辑处理,则把内存缓冲区中的数据强制写到启动vim时指定的文件中,然后退出。否则只是退出而已;:q
,在未做任何编辑处理而准备退出vim时,使用;:q!
,强制退出vim编辑器,放弃编辑处理的结果。如果确实不需要保存修改后的文件内容,可输入该命令,强制退出;:w filename
,把编辑处理后的结果写到指定的文件中保存;:w! filename
,把编辑处理后的结果强制保存在指定的文件中,如果文件已经存在,则覆盖现有的文件;:wq! filename
,把编辑处理后的结果强制保存在指定的文件中,如果文件已经存在,则覆盖现有的文件,最后退出;vim编辑器基本命令
a
,可在当前光标所在字符位置之后输入数据;A
,可在光标当前所在行的行尾输入数据;i
,可在光标当前所在字符位置之前输入数据;I
,可在当前光标所在行的行首输入数据;o
,可在光标所在行的下一行新起,输入数据;O
,可在光标所在行的上一行新起,输入数据。C
,替换从光标位置开始直至行尾的所有数据内容,然后输入数据;cw
,替换单个字。如”hello world”,光标在hello的h上,输入cw,会取代hello(以空格分隔,一个单词为一个字),输入新的字替换,而不会去掉world;[n]cc
,cc命令,指将光标所在行,全部去掉,输入新数据;加上n后,表示要替换的行数,从光标所在位置,往下替换掉n行;[n]s
,表示替换字符,s表示替换光标所在位置的字符,n表示从光标开始往后的n个字符要被替换;S
,替换当前光标所在的行;类似cc;r
,替换单个字符,类似与1s。唯一不同的是,r执行完后,自动返回命令模式;R
,替换多个字符,可以从光标位置开始,替换多个字符,数量不限,直至按下esc;[n]~
,转换光标当前所在位置字母的大小写,一直按~
或者指定需要替换字母大小写的个数,可实现多个字母大小写转换。u
,用于撤销先前执行的编辑命令;U
,用于撤销或回复最精一次的操作。[n]x
,删除字符。n为要删除字符的个数,从光标所在位置的字符往后开始(相当于往后删除),包括当前光标所在位置;[n]X
,删除字符。n为要删除字符的个数,从光标所在位置的字符往前开始(相当远往前删除),不包括当前光标所在位置;dw
,删除单个字或部分字。删除整个字的话,包括其占用的空间位置,如字与字之间的分隔符;[n]dd
,删除文本行。dd为删除当前光标所在行,n为删除多行;D
,表示删除本行的行尾部分。[n]yy
,记住,该命令是复制文本行的,不是选中的部分,过程: yy
命令;p
,复制到所在行的下面,P
,复制所在行的上面;[n]Y
,同yy;[n]dd
,删除文本行。然后操作过程同yy类似;.
,可以重复执行先前的文本编辑命令;使用ex命令
:set nu
,挺实用的!!!:set nonu
:line#1,line#2 co line#3
,其中,co
相当于copy :1,5 co 12
把第1行到第5行复制到第12行;.
表示当前光标所在的行,$
表示最后一行;:line#1, line#2 m line#3
,其中,m
相当于move:line#1, line#2 d
检索与替换
:/str
,检索给定的字符;:?str
,从当前位置开始,反向检索给定的字符串;n
,从当前位置开始,继续检索下一个匹配的字符串;N
,从当前位置开始,反向检索;:/str/+n
,将光标移至匹配的字符串str所在行之后的第n行;:?str?-n
,将光标移至匹配的字符串str所在行之前的第n行;:/^search
;:/search$
;编辑多个文件
vim file1 file2
,先进入file1文件,编辑好后,:w
保存;输入:n
或:n file2
,进入file2文件,编辑好后,输入:w
保存。:e filename,:n filename
直接转到指定的文件,也可以使用:n
命令转到下一个文件。:n#
交替编辑最近处理过的两个文件。:e! filename
,强行转到指定的文件。line# r filename
,将filename中的内容读到指定行line中;定制vim编辑器的运行环境
:set all
,可以查看到所有的可设置选项,:set option
,设置该选项,:set nooption
取消该选项设置。all,在编辑器窗口中列出编辑器支持的所有选项;
magic,设置magic,可启动字符的特殊意义,如”.”表示匹配任意一个字符;”[…]”表示匹配指定字符集和或字符范围中的任何一个字符。设置nomagic就会使特殊字符意义失效。
autoindent,这个选项与shiftwidth选项一起使用,使新输入的文本行与上一行起始位置自动对齐。
autowrite,自动保存,当打开多个文件的时候,当前编辑完成后,要切换到另一个文件,就会将当前文件自动保存;
ignorecase,字符串匹配时,可设置忽略大小写;
laststatus,是否在编辑窗口中显示状态行;
number,显示文本行的行号;
readonly,对正在编辑的文件进行写保护;
report,默认值为2,表示复制或删除了多少行,在状态栏中报告;
scroll,设置前滚(ctrl+U)多少行,后滚(ctrl+D)多少行,如:set scroll=10;
shell,确定vim调用哪一个shell,如:set shell=path,path为shell的绝对路径;
shiftwidth,这个选项用于设定制表符的跳转位置,按下ctrl+t或ctrl+d,自动跳转到下一个或上一个制表符位置,默认为8;
showmatch,输入右圆括号、花括号或方括号时,提示与左边的括号相匹配;
tabstop,设置制表键tab的右移距离。默认为8;
wrap,控制vim显示较长的文本行。把较长的文本行延续到下一行,可利用该选项实现自动折行;
wrapmargin,指定编辑器窗口的右边距;
/etc/vim/vimrc
文件,或用户主目录下的.vimrc(或.exrc) 文件中,可以自己在用户主目录下建立.vimrc文件,在里面写入ab abc 中国农业银行
,等其他特殊说明
:sh
,在vim编辑器中,要转到执行shell的命令话,可使用该命令。此时,使用ctrl+d或exit命令,可退回到vim编辑,继续刚才文件的编辑;:!command
,在编辑期间,如果想临时地运行某一个shell命令,可使用该命令,执行完毕后,按enter,即可回复原来的编辑处理状态;!!command
,在编辑期间,如果想把某个shell命令的运行结果直接加到当前编辑的文件中软件维护工具
apt-get
、aptitude
以及dpkg
等;gnome-app-install
与snaptic
。软件管理
tar
命令用于组合多个文件,生成一个文档,以便于发行;gzip
用于压缩文件的容量,以便节省文件的存储空间。Tarball非常类似于windows的”.zip”文件。Tarball文件具有.tar.gz
,.tar.bz2
或TGZ
形式的文件扩展名。在命令行终端窗口,可以使用tar -xzf filename
来解压相应的文件,然后在执行其中包含的软件安装命令。利用apt-get管理软件包
apt-get [-hvs] [-o=config string] [-c file] {[update] | [upgrade] | [dselect-upgrade] | [install pkgs] | [remove pkgs] | [purge pkgs] | [check] | [clean] | [autoclean] | [autoremove]}
,其中,apt-get命令支持的部分功能选项,自查。sudo apt-get install packagename
,安装指定的软件包;sudo apt-get update
,用于同步软件源的软件包索引,获取最新的可用软件包版本信息;sudo apt-get upgrade
,用于升级整个Ubuntu Linux系统(升级的过程,就是软件包的删除和重装过程);sudo apt-get remove/purge packagename
,用于删除软件包,其中remove属于部分删除,保留软件包中配置文件,而purge属于彻底删除;利用aptitude管理软件包
aptitude [options] {updtae | autoclean | clean | safe-upgrade}
aptitude [options] {install | reinstall | full-upgrade | download | purge | remove | show} pkgs
aptitude [options] search patterns
aptitude help
sudo aptitude install package
,安装软件包;sudo aptitude safe-update
同步软件源的软件包索引文件,sudo aptitude safe-upgrade
升级整个系统;aptitude show vsftpd
用于查询各种软件包信息;aptitude search pkg-pattern
,用于检索软件包,可以检索系统中已经安装的软件包;aptitude search ~T
,查询所有的软件包;aptitude search ~U
,列出软件仓库中可供更新的软件包;aptitude search ~i
,列出系统中已经安装的软件包,如aptitude search ‘-i apache’表示要检索系统中已经安装的apache服务器软件包;synaptic图形界面软件管理工具
GNOME软件增删工具
相关概念
/etc/passwd文件
username:password:uid:gid:comment:home_dir:login_shell
(用户名:密码:用户id:用户组id:主目录:命令解释程序),在passwd中部分内容如下:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
….
sucab:x:1000:1000:sucab,,,:/home/sucab:/bin/bash
其中,每一个字段的具体说明如下:username:注册用户名,用户名在linux系统中必须是唯一的,且至少第一个字符选用字母;password为用户密码,但实际的密码已移至/etc/shadow文件中,如果用户设有密码,会显示为x,若显示*,则用户无法正常地注册到系统;uid用户id,是系统识别用户的主要手段,由系统或系统管理员分配,id为32为无符号整数,即为0-65536,其中0为超级用户,1-999为管理用户,1000-65536为普通的自定义用户;gid用户组id,系统中的每个用户均属于某个用户组,每个用户组除有组名之外,也有一个相应的用户组id,在0-999保留作系统用户组使用;comment为注释信息,包含用户全名,电话号码和电子邮件等用户信息;home_dir指定用户的主目录,环境变量${HOME},形如/home/username;login_shell指定用户注册后调用的shell,即命令解释程序,如果该字段为空,则默认的命令解释程序为/bin/bash,用户可以根据自己的爱好,选用其他命令解释程序,如korn shell,zsh,tcsh等。
/etc/shadow文件
username:password:lastchanged:mindays:maxdays:warn:inactive:expire:reserve
,在shadow中的部分内容如下:
root:!:16198:0:99999:7:::
daemon:*:16177:0:99999:7:::
….
sucab:$6$En29/eVv$n1IaVG0PJ0x3QQtEoTDQU...FVYD.1:16198:0:99999:7:::
其中,password是加密形式的密码,通常用crypt(3)函数生成;lastchanged是从1970年1月1日开始算起,直至最后一次修改密码之日的天数;mindays保持密码稳定不变的最小天数,必须大于等于0,仅当超过此限才能修改密码;maxdays保持密码有效的最大天数,超过此限,系统将会强制提示用户更换新密码;warn指定在密码有效期到期之前需提前多少天向用户发出警告信息;
增加、修改和删除用户
useradd [-u uid] [-g group] [-d home_dir] [-s shell] [-c comment] [-m [-k skel_dir]] [-N] [-f inactive] [-e expire] login
-u uid
,(–uid uid),用于指定新增用户的用户id,是当前已经分配的最大id号加1;-g group
,(–gid group),用于指定一个现有用户组的id或用户组名;-N
,(–no-user-group),?-d home_dir
,(–home home_dir),用于指定新增用户的主目录;-s shell
,(–shell shell),用与指定命令解释程序shell的完整路径名。默认为/bin/bash-c comment
,(–comment comment),用于指定用户全名、电话号码以及电子邮件地址等注释信息;-m
,(–create-home),在增加新用户时,如果用户的主目录不存在,则创建用户主目录。同时,把/etc/skel目录或-k
选项指定目录中的初始化文件复制到用户主目录中;-k skel_dir
,(–skel skel_dir),用于指定存储用户初始化文件(.profile)的目录,以便useradd命令能够把其中的文件复制到用户主目录;-f inactive
,(–inactive inactive),用于指定相应用户一直未访问系统,但仍保证其注册帐号信息有效的最多天数,超过此限将锁住用户帐号;-e expire
,(–expiredate expire),指定注册用户的有效期,即截止日期;
sudo useradd -u 1001 -d /home/sucab -m -s /bin/bash sucab
系统将会在/etc/passwd、/etc/shadow、/etc/group文件中各添加一行与用户sucab相关的信息。一旦创建了用户帐号,就可以使用passwd命令设置密码,使用usermod等命令修改passwd和shadow文件,更改用户的其他相关属性
userdel [-r] login
,-r表示删除用户主目录,包括其中的文件和子目录。$ passwd
passwd [-adehlSu] [-i inactive] [-m min] [-m warn] [-x max] [login]
。超级用户则可以利用此命令的大量选项及参数维护系统中的用户帐号信息,passwd命令的部分选项自查,可以通过$ passwd --help
,查看参数选项的作用,部分如下: -a
,只能与-S
选项一起使用,以查询所有用户帐号的状态信息,必须具有超级用户权限,即sudo passwd -aS
;-d
,删除指定账户的密码;-e
,强制指定账户密码过期;-h
,显示此帮助信息并退出;-l
,锁住指定的账户;-S
,(–status),报告指定账户密码的状态;-u
,(–unlock),解锁被指定账户。$ sudo passwd -S sucab
sucab P 05/08/2014 0 99999 7 -1
,其中,P表示用户sucab已经设置了密码;若为NP表示未设置密码,L表示账户已经锁住。$ id
uid=1000(sucab) gid=1000(sucab) 组=1000(sucab),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
sucab@X-PC:~$ su zyt
(切换到zyt身份)zyt@X-PC:/home/sucab$
,说明,即使改变用户身份,仍会保持之前的工作目录不变;sucab@X-PC:~$ su --login zyt
zyt@X-PC:~$
定制用户的工作环境
bash是基于POSIX 1003.2标准开发的一个免费版的shell,与Bourne shell和korn shell一脉相承,在功能上有较大的提高。bash,支持emacs与vi两种命令行编辑功能,支持历史命令、命令别名和作业控制等机制。因此,Bash是linux系统首选的shell。
ps -f
指令,找出ps的父进程,即可确定当前使用的哪一个shell。/etc/profile
,用于设置系统范围的工作环境,如设置PATH环境,设置命令提示符等;$HOME/.profile
,用于设置用户自己的工作环境,如设置PATH变量,定义命令别名等;$HOME/.bash_profile
,作用同上,但Ubuntu Linux系统并不使用这个用户初始化文件;$HOME/.bash_login
,作用同上,但Ubuntu Linux系统并不使用这个用户初始化文件;/etc/bash.bashrc
,用于设置交互式非注册Shell系统范围的工作环境;$HOME/.bashrc
,用于设置交互式非注册Shell的用户工作环境;BASH_ENV
,如果变量已经设置,使用变量的值作为初始化文件,执行文件中的命令等,设置非交互式Shell的用户工作环境;$HOME/.bash_logout
,用于定义退出Bash时需要执行的善后处理任务,如清除临时文件等。/etc/skel/.bash_logout
,/etc/skel/.bashrc
,/etc/skel/.profile
。在Bash的运行环境中,用户需要设置和使用的通常只有~/.profile
和~/.bashrc
两个初始化文件。同时,尽量在~/.profile
中添加自己的设置,仅在注册时执行一次,但是~/.bashrc
有可能会执行多次。定制Shell工作环境
export
命令公布用户设置的变量。. script
或source script
,利用该指令读取并执行Shell脚本,在当前的Shell中设置运行环境(也就是由当前的Shell解释执行)。其中,script是一个脚本文件,文件中包含必要的环境变量设置语句;.profile
等用户初始化文件中。 注意:
上述方法的设置,即使退出脚本,环境变量的设置仍将保持有效。如果使用sh mysql_env.sh
,则退出shell后,当前的shell环境不会留存脚本中设置的任何变量。
设定语言环境
POSIX
格式xx_YY.CHARSET
定义语言环境。其中,xx
是ISO-639
标准定义的语言代码,YY
是ISO-3166
标准定义的国家或地区代码,charset
是/usr/share/i18n/locales
目录中列举的字符集之一;locale -a
命令,当前设定的语言环境,locale
。默认的文件访问权限
/etc/profile
初始化文件中。输入umask
,可以查阅当前的用户掩码设置
[\u@\h \W]\$ (PS1='[\u@\h \W]\$')
。其中\u
表示注册的用户名,\h
表示系统的名字,\W
表示当前工作目录最后一个子目录的名字,\$
表示根据用户的身份显示$
(普通用户)或#
(超级用户);/etc/hostname
文件,可以改变主机名字,同时需改etc/hosts
文件,修改新的主机名和ip地址的映射。增加与删除用户组
系统提供的默认用户组
在linux系统中,与用户组有关的所有信息通常被存储在/etc/group系统文件中,文件中每一行定义一个用户组,格式如下:group_name:password:gid_user_list
group_name
,用户组名字。用户组可由2-8个字符组成,例如,可以定义一个用户组math,使数学系的用户均归属于math用户组;password
,通常为x
。这个字段当前并无实际的意义;gid
,用户组ID。系统中的用户组ID必须是唯一的;user_list
,用户组成员列表。其中可以包含属于当前用户组的所有用户名,之间逗号分隔。/etc/group
groupadd [-g gid [-o]] group
,-g gid
表示新增用户组ID。忽略此项,默认id为已分配最大id号加1.如果添加一个hadoop用户组,为sudo groupadd -g 22222 hadoop
。修改和删除用户组的命令为groupmod
和groupdel
。/etc/ssh
目录中略
安装mysql
$sudo apt-get install mysql-server
my.cnf配置文件
basedir
,--basedir=path
,MySQL数据库的安装目录,凡以相对路径出现的文件均以这个目录为根目录。默认的安装目录为/usr
;bind-address
,--bind-address=IP
,绑定的IP地址,表示MySQL服务器仅监听并接收针对指定指定IP地址的客户访问。这个配置变量的默认值为127.0.0.1,这意味着MySQL服务器仅监听本地主机;datadir
,-h path
或--datadir=path
,设定存储MySQL数据库及其数据库表的目录位置,默认的目录位置为/var/lib/mysql
;flush
,--flush
,如果把这个配置变量设定为ON,表示在执行完每个SQL语句之后,MySQL服务器需要立即清除内存缓冲区,把所有的数据变动都写到磁盘中,实现内存与磁盘的数据同步。通常,MySQL服务器执行的每个SQL语句仅影响系统缓冲区,由操作系统实现内存与磁盘的数据同步;language
,-L language
或--language=langname
,当出现错误时,MySQL数据库服务器将会以设定的语言向客户端返回错误信息。其中,langname可以是一个语言的名字,也可以是语言文件的绝对路径名,其默认值为/usr/share/mysql/english
;log
,-l [filename]
或--log[=filename]
,用于设定和启用常规的查询日志文件,记录客户端的连接请求及提交的SQL语句。默认的查询日志文件为/var/log/mysql.log
;log-bin
,--login-bin[=basename]
,用于设定和启用二进制日志文件。MySQL数据库使用这个日志文件记录所有涉及数据变动的SQL语句。二进制日志文件可用于数据库的备份与恢复。利用这个配置变量设定的文件名是日志文件的基本名字,MySQL服务器将在创建的文件名后面增加一个顺序后缀。如果未指定文件名,MySQL服务器将会以host-name-bin
作为基本名字;log-error
,--log-error[=file]
,设定MySQL数据库服务器的错误日志文件,用于记录mysqld守护进程的启停时间以及运行期间产生的严重错误信息;log-warnings
,-W [level]
或--log-warnings[=level]
,设定是否在错误日志文件中记录警告信息,如网络故障、连接终止以及重新连接等。默认值为1,表示记录警告信息;0表示禁用;大于1的值表示记录更多的信息,如拒绝访问信息等;pid-file
,--pid-file file
,指定存储MySQL服务器守护进程mysqld的PID的文件名;port
,--port portnum
,设定MySQL服务器或客户端监听的TCP/IP端口号,其默认值为3306;socket
,--socket=path
,客户端用于连接MySQL数据库或服务器用于监听本地连接的套接字文件的路径名;tmpdir
,-t path
或--tmpdir=path
,MySQL数据库守护进程mysqld用于存储临时文件的目录位置,其默认值为/tmp
;user
,-u {username | userid}
,以指定用户身份运行mysqld守护进程,默认值为mysql。my.cnf
,配置文件主要用于设定mysql数据库文件的存储位置、数据库的各种日志文件、守护进程的PID文件及其他配置参数。在/etc/mysql/my.cnf
是全局配置,~/.my.cnf
是用户特定设置。sudo /etc/init.d/mysql restart
。mysql [options] [dbname]
mysql --user=username --password=password [dbname]
-?
;--help
;显示帮助信息及可用的命令-h hostname
;--host=hostname
;连接指定主机中的mysql服务器;-p[password]
;--password[=password]
;指定连接mysql服务器时需要提供的密码。如果在-p后面直接输密码,之间不能有空格。如果不提供密码, 会提示输入密码,可以避免明文显示密码;-P portnum
;--port=portnum
;指定连接mysql服务器时使用的tcp/ip端口号;-u username
;--user=username
;指定以哪一个用户身份连接mysql服务器;mysql -u username -p[=password] dbname < scriptfile
source scriptfile
mysql -u username -p[password] < batch-file | more
mysql -u username -p[password] < batch-file > mysql.out
grant all privileges on database To username@"servername" identified by 'password'
;
其中,database是数据库名,username表示新增的用户,servername是msyql服务器的主机名或IP地址,password是用户的密码;
示例:
要添加一个mysql数据库用户test,假定密码为123123,赋予其访问本地数据库forum的所有访问权限:
mysql -h 127.0.0.1 -u root -p
use mysql
grant all privileges on forum.* to test@"localhost" identified by '123123'
flush privileges
//把设置信息写入mysql数据库中,使新加的用户帐号立即生效;
insert into user (username) values ("")
;load data local infile '~/user.txt' into table user
;MySQL数据库备份与恢复
select * into outfile 'filename' from tablename
。恢复时,使用load data infile
语句或mysqlimport
命令;mysqldump
或mysqlhotcopy
脚本,第二个只是单纯地复制素有的数据表文件,如.frm、.MYD等;密码维护与网络安全
mysql -u root -h 127.0.0.1 -p;
update user set password=password('newpassword') where user='root';
flush privileges;
quit;
mysqladmin -u root -p password newpassword
netstat -an | grep 3306
Edited by sucab