I、Shell入门
一、基础命令
1、ls
对有读取权限的文件列出询问目录包含的内容
ls -R folder_name --recursive,查看多个子目录的内容
ls -r folder_name --reverse,以相反的顺序显示文件
ls -l folder_name –long,完整显示文件信息
ls -1 folder_name --内容只显示为一列
ls -a folder_name –all,可显示隐藏文件和文件夹
ls -d folder_name --directory,只查看当前工作目录中的子目录
ls -m folder_name –commas,逗号分隔显示文件
ls -F folder_name –classify,显示文件类型
ls -X folder_name –以扩展名排列文件,ls默认的是以名称排序
ls -t folder_name –time,按文件的时间排序,ls中列出的时间为修改时间,而非访问时间
ls -S folder_name --size,按文件大小排序
ls -h folder_name –human-readable,按照KB,MB,TB等显示文件大小
排序时若不符合要求则可用-r进行倒序排序。
drwxr-xr--
此代表权限。
d|rwx|r-x|r--,d表示目录,若第一个为-则代表文件。
后续三组分别代表用户/所属组/其他组对该文档的权限。
r代表“允许读取“,既可以用ls命令列出目录的内容;
w表示“允许改写“,用户可在目录中增加更多的文件,重命名已存在的文件,或者删除不再需要的文件;
x表示“允许执行“,相当于为了运行命令而访问目录的权利(需要访问和使用目录中的文件),或者是访问目录中的子目录。
ls中列出的文件大小并不完全准确,存在取整的问题,所以只能是个概数,当然了,基本是对的。
自定义别名:即自定义快捷键,~/.bashrc
2、touch
可以在需要的时候修改文件的时间戳;创建新文件;
touch -t given_time file_name --修改文件的时间戳(ls列出的仅为修改时间,而我们修改文件时间时可以选择修改访问时间还是修改时间)
touch new_file_name --创建新文件
3、pwd
print working directory
4、cd
change directory
cd ~
cd -
5、mkdir
创建文件夹(或称目录)
mkdir foldername
mkdir -p folder1/folder2/folder3 –创建一系列的文件夹
mkdir -v foldername –显示创建过程
6、cp
cp source_file destination_file --复制文件
cp -v souce_file destination_file
cp -i sour_file des_file
cp -R sour_file des_file
cp -a sour_file des_file
注:若不愿意重复输入文件名称,则可用.代表当前路径。
7、mv
移动和复制文件
mv source_file destination_file/ –移动文件
mv source_folder/ dest_folder/ –移动目录,无需像cp似的额外添加其他命令
mv source_file des_file_AnathorName --重命名
其他-i, -v等用法同cp
软链接问题
8、rm
彻底删除文件或目录。linux命令行不存在“垃圾箱“/”回收站“之类的概念,一旦删除,要想恢复就很困难,很麻烦。
rm filename
rm -R folder --删除非空目录
rmdir folder_name --删除空文件夹
rm也可搭配-i, -v使用
特殊文件名文件的删除:
文件名带空格:文件名加引号, rm "my file.txt"
连字符开头:文件名前加—或巧妙利用./避过此问题,rm – -bash.odt, rm ./-bash.odt
二、学习命令
1、man
学习linux的命令可以使用man page,即manual page.
man commond --直接查看命令的解释,q可以退出,若是内容太多需要查找,打开man page之后,输入“/keyword“,回车即可;按Shift+n退出。
man -k keyword --查找含有keyword的命令(知用途查命令名称)
man -f commond --知命令快速查用途,而无需打开man page
man -u commond --若是无法查到命令或是觉得命令显示不太对,则先update再查,可能会有意想不到的结果
2、info
info页面比man page编写的更好,更易于理解,更友好,但是上手不如man page容易。
info页面总是分为很多区段(节点),每个节点又可能包含子节点,使用
3、whereis
可以告诉你命令的可执行程序/源文件/man page的位置
whereis commond
whereis -b commond --binary,只搜索二进制文件
whereis -m commond --man page,只搜索man page
whereis -s commond –source, 只搜索源文件
4、whatis
相当于man -f commond,知道命令名称快速查其功能
whatis commond = man -f commond
whtais -w commond* --支持通配符的使用,列出一系列可能相关的命令
5、apropos
同man -k keyword,在man page中搜索命令的名称和描述
apropos keyword = man -k keyword
apropos -e keyword --exact,查找包含与keyword精确匹配的词的命令,例如,以list作为关键词,则命令描述中为listing的则将不被查到,但apropos keyword则可将其搜索到
apropos -w keyword* --支持通配符的使用
6、which
查找将要运行的命令的版本
which commond
which -a commond --all,查找命令的所有位置(=whereis b)
三、组合命令
1、;
将多条命令用分号分隔,然后依次执行。无论上一条是否成功,在其结束时都将继续执行下一条命令。
2、&&
用于分隔不同的命令使其依次执行,但是只有在上一条运行成功(即返回码为0)时才执行下一条命令,否则不执行。这在涉及到rm命令,且rm的为无法恢复的文件时使用更为安全。
3、||
不是...就是...,用于分隔命令使其依次执行。但是只有前面的运行失败时才执行下一条命令。
4、$()
将一个命令的输出作为另一个命令的输入,eg:mkdir $(date “+%Y-%M-%D“),即为建立以日期为名称的文件夹
5、|
管道,用于分隔两个命令,将前一个命令的输出作为输入流输送到后一个命令中,然后予以显示。
6、>
命令的输出重定向到文件,即stdout的重定向。eg. date > date.txt
若是将命令的重定向输出到不存在的文件时,则创建;若是已存在,则完全覆盖,慎用
打开nocolbber: set -o noclobber,>将不会自动覆盖已存在文件,除非得到许可,要完全覆盖则可使用>|
7、>>
命令的输出以追加的方式重定向到文件。
8、<
将文件的内容重定向到命令,即文件内容作为命令的输入,而非stdin接受输入。eg.
echo < date.txt
II、使用文件
四、查看文件
1、cat
标准输出设备(屏幕)上查看文档。
cat file --屏幕上输出文档内容,若文件内容太长,则结合less使用
cat file1 file2 --两个文件拼接(由第一行往最后行依次连接)后显示到屏幕上,两个文件之间没有任何分隔,所以最好在需要拼接的文件最后边留空白行,便于区别
cat file1 file2 > file3 --将两个文件拼接后显示到新文件中,以后还需向file3中合并文件的话,需用>>追加方式
cat -n file1 file2 --number,文件合并后屏幕显示,并显示行号
tac:反向拼接,即由最后行向第一行依次拼接
2、dog
3、less
分屏查看器(并非编辑器)。
less file --分屏显示文件内容 ,若想退出,则按“q“
less -N file --line-number,分屏显示的时候同时显示行号
less界面中查看文件信息,“=”可以在屏幕底部显示文件信息,按“enter“键返回
less分页器中搜索信息:在less命令界面中输入“/keyword“即可
分页查看时编辑文档内容:less只是查看器,并非编辑器,用less查看文档时,按下“v“即可进入编辑环境,然后按“Esc“键后在命令行输入“:wq“即可退出编辑器,返回到less查看界面,此时即可看到刚才修改的内容。
若是不喜欢打开的编辑窗口,可自己设,每次运行less之前:export EDITOR=vim,只要改命令窗口不关闭,该命令一直生效。也可在.bashrc中加入此命令,以免每次都输入,减少麻烦。
4、head
head file --查看文件的前十行
head file1 file2 --查看多个文件的前十行,各文件之间有分隔
head -n 5 file1 file2 --自定义显示的开头行数
head -c file1 file2 --bytes,显示指定字节的内容,默认是字节,c也可赋值为100k, 100m等。其实这个命令用处并不大
5、tail
tail file --查看文件末尾十行
tail -n 5 file1 file2 --自定义查看行数,同时查看的文件数任意。不同文件之间以标题(分隔符)分开,方便查看
tail -nf 5 file1 file2 --查看日志的动态变化,显示的行数自定义,若显示十行,则n可省
五、使用者和权限
liuux从一开始就被设计成了多用户操作系统。多用户操作系统意味着不同的用户可以同时在系统中创建文件、删除目录以及读取不同的资源。为了防止用户之间的相互影响和对底层操作系统的破坏,就需要依靠一套已创建好的权限系统。
几乎每种linux系统,当你创建一个新的文件或目录时,默认的拥有者和用户组就是你自己。只有用户组的成员才有权利修改该组的权限。
1、chgrp
修改文件或目录所属的用户组,可以使用用户组的名称或数字ID。隐藏文件的更改用户组需注意,递归无法修改之,亦不可用.*作为文件名,否则父目录..也将被修改。
用户组的数字ID: cat /etc/group查看
chgrp group_name/group_ID file/folder
chgrp -R group filename --recursive,修改目录中多个文件的用户组,可配合通配符
chgrp -v group filename --verbose,显示运行过程,其中已属于该组的也列出操作信息
chgrp -c group filename --changes,仅显示修改过的内容
2、chown
修改文件/目录的拥有者
用户的数字ID:cat /etc/passwd查看,第一个数字是用户的数字ID,第二个数字是与用户相关联的主用户组的数字ID
chown owner filename –更改文件/目录的拥有者
chown :group filename –更改文件/目录的用户组,可代替chgrp使用
chown owner:group filename --同时更改文件/目录的用户组和拥有者
3、chmod
修改与文件/目录相关的权限。Linux系统正在使用功能强大的ACL权限系统,不过目前仍未得到广泛应用。
linux有三组用户:user(u),group(g),other(o)。
权限有三种:read(r),write(w),executable(x)。对于文件而言,r代表可查看,w代表可编辑,x代表可作为程序来运行;对于目录而言,r代表可用ls列出其内容(前提是对该目录有x权限),w代表可删除、添加和重命名文件,x代表可以读取该目录下的文件/子目录,或运行文件。
chmod [ugo][+-=] [rwx] filename --字母法修改文件/目录的权限,便于操作速度快,但修改多个权限时(u,g,o需分别设置)很麻烦
chmod [0-7] [0-7][0-7] filename --数字法修改权限,也称八进制权限,r=4,w=2,x=1,需要更多的思考,但优点是可一次设置许多权限
chmod -R --递归修改权限,能够在短时间内修改数百个文件系统对象的权限
4、suid
5、sgid
6、sticky bit
六、归档和压缩
归档和压缩文件格式:zip、gzip、bzip2和tar都很流行。
对于zip、gzip、bzip2:一般情况均不可用于目录压缩,结合-r可用于目录压缩;zip可将多个文件压缩到统一文件,并保留原文件;而gzip和bzip2则需要-c+重定向将多个文件合并为一个文件然后再压缩(最终即为一个压缩文件),否则二者是各个文件单独压缩,生成同名的压缩文件,并删除原始文件;解压时-t可用于查看压缩文件是否损坏,-r和-c+重定向仍起作用,意义同上。
1、zip/unzip
zip可能是世界上最广泛使用的格式,windows下几乎通用,差不多所有的主要的操作系统都可以很好的支持zip和unzip,若不知道用户使用何操作系统,zip格式是安全的选择
zip [file.zip] [files_need_ziping] --多个文件压缩到统一的压缩文件中,压缩后原文件保留;必须指定压缩的文件名
zip -e [file.zip] [files_need_zipping] --压缩文件的同时添加密码
zip -[0-9] [file.zip] [files_need_zipping] --自设定压缩率,9压缩率最大,默认为6,可在.bashrc中为zip设置别名:alias zip='zip -9'
zip -r [file.zip] [files_need_zipping] --递归压缩,可用于目录的压缩
unzip [file.zip] --将文件在当前路径解压缩
unzip -l [file.zip] --不解压,列出压缩文件中所包含的内容
unzip -t [file.zip] --测试将要解压的文件是否正常,每次解压之前用该命令测试,可保证解压不出问题,测试完有提示信息
2、gzip/gunzip
gzip是一个开源程序,几乎所有的基于unix的系统中都能找到它,包括linux;但windows中比较少见,若是unix计算机的用户之间发送文件,gzip将是安全的选择
gzip [files_need_zipping] --压缩文件,可同时多个文件压缩(只要命令中不含-r就不能用于压缩目录);无需指定文件名,各文件单独压缩,压缩之后原文件被删除,生成同名的.gz文件;
gzip -c [files_need_zipping] > [file.gz] --使用-c+重定向到gz文件,所有文件内容合并到一个文件并压缩,这样可以保留原始文件不被删除
gzip -[0-9] [files_need_zipping] --自定义压缩率,0为不压缩,9为最大压缩率
gzip -r [files_need_zipping] --递归压缩,可用于目录的压缩,且每个文件单独压缩
gunzip [file.gz] --解压缩文件,原始文件被删除
gunzip -c [file.gz] > [file] --使用-c保留原文件,同时必须将解压结果重定向文件方可
gunzip -t [file.gz] --测试解压的文件是否存在损坏等问题,测试完只有存在问题时才出现提示信息
3、bzip2/bunzip2
bzip2主要用于取代gzip,为linux的后起之秀,其创建的文件体积更小,但需要牺牲速度为代价
bzip2 [files_need_zipping] --可多个同时进行,无需指定压缩文件名,各文件单独压缩,原文件被删除,生成同名的bz2文件,压缩后原文件被删除(不能用于目录的压缩)
bzip2 -c [files_need_zipping] > [file.bz2] --使用-c保留原文件,同时必须将压缩的文件重定向到文件
bzip2 -[0-9] [files_need_zipping] --自定义压缩率
bzip2 -r [files_need_zipping] --递归压缩整个目录,但各文件生成单独的压缩文件
bunzip2 [file.bz2] --解压缩,同时原文件删除
bunzip2 -c [file.bz2] > [file] --使用-c与重定向相结合,解压的同时可保留原始文件
bunzip2 -t [file.bz2] --测试压缩文件是否存在损坏等问题
4、tar
zip、gzip、bzip2主要用于压缩,tar则是用于归档的
tar -cf [file.tar] [folder/] --(c-create, f-file)归档文件,tar文件的大小将比原来各文件的总和还要稍大一些;归档的同时保留原文件;可用于压缩整个目录结构
tar -zcvf [file.tar.gz] [folder/] --(z-gzip, c-create, v-verbose, f-file),先用tar将目录归档,然后再用gzip压缩,并用-v显示运行过程;tar+gzip得到.tar.gz归档压缩文件
tar -jcvf [file.tar.bz2] [folder/] --j是引入bzip2的关键,tar+bzip2得到.tar.bz2归档压缩文件
tar -zvtf [file.tar.gz] --(z=gzip, v=verbose, t=test, f=file),测试tar+gzip的归档压缩文件是否受损; -f一定要放在最后!
tar -jvtf [file.tar.bz2] --测试bzip2压缩的tarball是否完整
tar -zxvf [file.tar.gz] --解压tar+gzip归档压缩文件,(z=gzip, x=extract, v=verbose, f=file)
tar -jxvf [file.tar.bz2] --解压tar+bzip2归档压缩文件,j即使引入bzip2的关键
III、查找资料
七、查找资料
1、locate
查找某个文件/目录的位置,该命令速度很快,但依赖于不断更新数据库。主要是因为它实际上搜素的是一个包含计算机中所有文件和目录名称的数据库。在安装locate时,就将它自动设置为扫描硬盘和更新数据库(通常是在午夜进行)。但是新建文件或新安装的程序则搜索不到,需updatedb(根用户才有权限的命令)文件名数据库之后方能搜索到
locate [keyword] | less --知道文件名或文件名的一部分,搜索文件的位置,通过管道让结果在less分页查看器中显示
locate -i [keyword] | less --ignore-case,不区分大小写进行查找(linux区分大小写,-i则可关闭大小写的区分)
locate -n [5] [keyword] –number,只显示规定行数的查找结果
sudo updatedb --查找不到想要的文件,则将文件名数据库更新一下,就可以搜索到新生成的文件/目录。注意:该命令只有根用户有权限运行!
sudo time updatedb --可记录更新数据库所用时间
2、grep
搜索文件内容。如果要充分利用grep,就需要彻底理解正则表达式
涉及到的参数:-R递归搜索子目录内容;-i搜索时表达式不区分大小写;-w完全匹配关键词;-v显示没有包含搜索内容的行;-l列出包含搜索内容的文件名(这是一个有用的命令哦!);-n显示搜索结果在原文中的行号;-A/B/C显示搜索内容的上下文信息;
grep '[keyword]' [folder/filename] --使用单引号将搜索内容括起来,表示当作一个字符串在文件中进行搜索,可同时在多个文件中搜索;双引号则表示要引用shell变量
grep -R '[keyword]' [folder/filename] | less –递归式搜索文件中的文本,并输入less查看器中查看
grep -R '[keyword]' [folder/filename] > [filename] --递归式搜索,并将搜索结果写到文件中查看
grep -i '[keyword]' [folder/filename] --ignore-case,搜索时不区分表达式的大小写
grep -w '[keyword]' [folder/filename] --word-regex,搜索时完全匹配关键词,关键词的衍生词不予以搜索
grep -n '[keyword]' [folder/filename] --number,搜索结果中显示行号
ls -l | grep '[keyword]' [folder/filename] --grep可以作为其他程序输出的过滤器,功能很强大(P178??)
grep -A/B/C [5] '[keyword]' [folder/filename] --A=after-context, B=before-context, C=context, 该命令辅助显示搜索内容上下文的信息b代表之前的内容,a代表之后,c代表两端。
grep -v '[keyword]' --显示没有包含搜索内容的行
grep -l '[keyword]' --files-with-matches,列出包含搜索内容的文件名,重要命令!
grep | grep --在搜索结果中进行搜索
八、find命令
find dir -name [keyword] --根据文件名(或文件名的一部分)查找文件,dir指的是路径,可以为绝对路径(eg. /、/opt/matlab)或相对路径(. 或./folder)。
find dir -user [user_name] --根据拥有者搜索文件
find dir -group [group_name] --根据用户组搜索文件
find dir -size [10M] --根据大小搜索文件,文件大小要表明单位,b=byte, k=kilobyte, M=Megabyte, G=Gigabyte,若要表示大于/小于某一size,则用+/-10M
find dir -type file_type --根据类型搜索文件,b=目录,f=普通文件,l=符号(软)链接,c=字符文件...
find -a –当表达式均为true时显示结果(AND),表达式即有上述find结构构成,eg:find . -name “*pop*” -a -type f
find -o --表达式中只要有一个为true即显示结果。eg:find . -size 10M -o -size +10M(寻找>=10M的文件);若是多个逻辑表达式组合,为了or的运行,应将该部分加括号,括号前后均需用\将其反义,避免shell当作自己的命令,例如:find . \(-size +10M -o -size 10M\) ! -name “*25*”(寻找文件大小>=10M且文件名中不含字符“25”的文件)
! = find -n --对表达式进行取反,eg: find . ! -name “pop” (寻找名称中不含‘pop‘的文件)
find -exec --此即为查找替换的功能,对按照某种逻辑表达式搜索到的内容进行统一修改,格式:find dir log_exp -exec rename 's/old/new/g' {} \; [s=substitute,g=global,末尾的\用于反义分号];eg: find . -name “*MP3“ -exec rename 's/MP3/mp3/g/ {} \;
find -fprint --将搜索结果打印到文件,格式:find dir log_exp -fprint filename.ext
IV、环境
九、shell
1、history
查看命令行历史,每当shell输入命令时,命令就会保存在home目录中.bash_history的文件中,该文件中默认保存最新的500条命令
history | less --查看命令行历史,并在less查看器中显示,由此可知某条命令对应的数字
2、!!
再次运行最新一次运行的命令,输入后第一行显示上一次输入的命令,接下来显示命令执行的结果
3、![##]
使用数字再次运行以前运行过的命令,数字##可有history命令查看(比较麻烦哎),eg: !459,若是第当前条件下459条命令为pwd,则将再次执行pwd命令
4、![string]
使用字符串再次运行以前的命令。字符串无需写完整,会自动匹配最相近的运行,若是多条结果匹配,则运行最后一次运行过的命令。Eg: ! Cat /home,接下来会自动匹配最相近的命令,并运行
5、alias
alias --显示所有已命名的别名。别名都保存在主目录(home)的一个文件中,可能是.bashrc,也可能俄会在.bash_aliases中,亦或.profile
alias [alias_name] --查看特定别名的描述
alias [alias_name]= '[commond]' --别名中不能有等号(=).若该命令写在命令行中,则创建临时的命令行,shell关闭之后立即失效;若是写在.bashrc或.bash_aliases中,则恭喜你,你已经学会了创建永久别名。此时,重新加载该别名文件新建的别名方能生效:. .bash_aliases(注意:第一个.之后有个空格,然后是文件名);若是愿意,你也可以关掉shell重启。
6、unalias
删除临时别名:
unalias [alias_name] ,若是.bash_aliases中也含有此命令,则再次关闭shell之前,该文件中的别名也失效,重启后又会起作用
删除永久别名:
删除文件中对应的命令或添加“#”将需要删除的别名行注释掉,需要的时候重新打开即可
十、监视系统资源
1、ps
View running processes,查看计算机进程,只是提供系统进程的快照,不能提供动态变化。注意:该命令后的参数都不加连字符”-”。ps命令能提供很多信息,包括进成的拥有者(user)、唯一的进程ID编号(PID,用于标示进程)、进程正在使用的CPU百分比(%CPU)、内存百分比(%MEM)、进程的当前状态STAT及进程的名称。进程树中还会给出PPID:父进程的ID编号(Parent Process ID)。用PID或PPID就能够终止任何失控(runaway)的进程。
进程状态:R(running,运行);S(sleeping,休眠);T(stopping,停止);Z (zombie,僵尸,即:该进程已经终止,但其父进程却无法正常终止它,造成“僵尸“进程的状态)。Z状态只有重启才能关闭这个程序。
ps aux | less --查看当前正在运行的所有进程 --a=所有用户;u=以面向用户的格式显示,或显示拥有每个进程的用户;x=没有控制终端设备(包含屏幕)的进程。
ps aux | grep [f]irefox --对进程进行筛选
ps axjf --f=ASCII art forest,查看进程树,能够提供父进程
ps U [usr_name] --查看特定用户拥有的进程;也可使用用户ID, /etc/passwd第三列就是用户ID编号
2、kill
Kill processes, 终止正在运行的程序,分为三个级别:
kill [PID] --此即为kill默认值,-15,默认的为正常终止进程,此为首选,PID需用ps查看
kill -9 [PID] --强制中断一个正在运行的进程,此为第二选择
kill -1 [PID] --控制进程已死,关闭进程(若用于系统服务,会导致重新加载配置文件并重启),主要用于Samba或无线连接之类的服务,该选项可能不常用
3、top
Top listing of running processes
top --动态显示计算机的进程,并按CPU占用的百分比排序,用该命令你将会搞明白你的计算机到底都在忙些什么,尤其是电脑反映突然变慢时可以帮助我们发现问题所在,嗯,真的是一个不错的命令。
在top命令中若想关闭程序:按k键,依次操作;若想退出top命令:按q键。
4、lsof
Listing open files
losf –list open files,查看完整的打开文件列表(一般不需要,内容太冗长,也没有必要)
losf -u [usr_name] --列出某个用户打开的文件
lsof [/usr/sbin/sshd] --列出正在使用特定文件的用户
lsof -c [program] --列出特定程序的进程,即:列出与正在运行的该指定程序相关联的所有其他文件。在每天使用的软件上试试这个命令吧,你会对提供软件的辛勤工作的开发人员萌生敬仰之情的。
lsof命令选项数量惊人,其源代码包含一个00QUICKSTART的文件,即是教程,Google之吧。
5、free
Free memory
free -m --以m为单位(这个可以改,-b=byte,-k=kilobyte)查看系统内存的使用情况,swap为缓存区,buffer为缓冲,cache为缓存
6、df
Disk free space
df -h --disk free, human-readable,显示整个硬盘的分区及使用情况
7、du
Diskusage
du -h --disk usage, human-readable,显示当前目录下每个子目录及其子目录所包含的子目录的空间使用情况,末尾会给出整个目录所占空间,eg: 2.6G .
du -s --只报告该目录使用的总空间大小,结合-h使用比较方便阅读。注意:du后不能跟路径,所以必须要进入到想知道其大小的目录下使用该命令!
十一、安装软件
Linux世界中,软件包的格式有很多种,尤其以RPM和DEB两种格式为主。
使用RPM的Linux系统有Red Hat(其实,RPM就代表Red Hat Package Manager)、Fedora Core、SUSE以及其他基于RPM的分发版本。安装软件使用rpm程序,但在安装时易陷入依赖关系地域(dependency hell),yum命令是rpm的一个包装器,安装文件时可自动解决依赖关系,删除软件时,若系统中其他软件不需要这些依赖关系,则相关软件包将被删除。
DEB是基于Debian的Linux系统使用的格式,如Debian、 K/Ubuntu、 Linspire、 Xandros以及其他很多系统都使用这种格式,dpkg用于安装文件,但也存在dependency hell问题,apt命令和它的各个选项可以用于安装、升级、卸载软件包,apt的最大优点是可以自动处理软件包之间的依赖关系。注意:deb在各种软件包管理系统中占据领先地位!apt在任何Linux发行版本中,是一种功能最强大,最容易使用的安装软件的方法,是dpkg的一个包装器。
1、dpkg
sudo dpkg -i [package.deb] --install,安装deb格式的软件包,需自己解决依赖关系(根用户权限)
sudo dpkg -r [package] --remove,删除debian中的软件包(根用户权限)
2、apt
sudo apt-get update --更新计算机上的软件库,即使本地与远程仓库中的软件列表保持一致;安装任何文件之前先将本地计算机的软件包库升级,可以保证安装的是最新的软件
sudo apt-get install [package1 package2] --apt安装软件(根用户权限),可同时安装多个软件包;apt安装软件时其实是dpkg根据apt的指示进行操作
sudo apt-get remove [pack1 pack2] --apt删除软件包,不过,此法卸载软件包时并不会删除这个包的所有东西,被删除软件的配置文件还会残留在计算机中,--purge选项才能保证彻底删除该软件包(根用户权限)
sudo apt-get –purge remove [package] --彻底删除软件包(没有文件残留)
sudo apt-get upgrade --升级Debian中的软件包及其依赖,配合apt-get update使用,效果很好,应该定期将计算机软件包升级,保持软件的最新性,也最安全(根用户权限)
sudo apt-get clean –清除Debian中不再需要的安装包(根用户权限,不需要参数);使用apt下载和安装好软件后,.deb文件爱女仍保留在/var/cache/apt/archives/目录中,时间一长必然占据过大的磁盘空间,所以apt安装软件后可删除这些deb包
apt-cache search [keyword] --为基于Debian的Linux系统查找可供下载的软件包,不需要根用户权限,关键词为模糊匹配,而非精确匹配。
V、网络
十二、连接
网络接口:无线网卡(ath0)、以太网卡(eth0)和环回接口(lo)。lo为回环地址,用于访问及其本身,系统需要他才能正常运行。当然,各接口还可以用其他名称。
DNS(Domain Name System, 域名系统)的建立使得人们可以更容易的访问因特网上的各种资源。电脑善于记数字,因此网络之间互访靠IP地址;人类善记字母,易记住域名。DNS基本上就是一个巨大的数据库,记录了IP地址与域名之间的对应关系。
目前普遍使用的是IPv4寻址协议,其格式为xxx.xxx.xxx.xxx。IPv6最终将取代IPv4,但这时比较遥远的未来。
1、ifconfig
查看网络接口;更为强大的功能是配置网络接口。几乎所有与ifconfig相关的命令都需要以根用户权限操作。
ifconfig --interface configuration,接口配置。该命令只显示已启用的网络接口,用这种方法可以快速查到当前IP及物理地址
ifconfig -a --显示所有网络接口,包括没有启用的
ifconfig eth0 [222.195.135.6] --修改以太网的IP地址
ifconfig eth0 hw ether [00:14:CC:00:1A:00] --修改网卡的MAC地址(即物理地址)
2、iwconfig
iwconfig --可以查看更多无线网络接口的信息,另外,ifconfig可以显示无线网卡的部分信息,二者集合,无线网卡的信息基本可以得到
iwconfig ath0 … --后接不同参数可以配置无线网络接口
3、ping
ping -c [5] [Domain/IP] --向指定的IP地址(也可用域名)发送数据包,看是否有响应。若ping相应成功,则意味着两台计算机之间的网络是连通的。若不加-c设置返回的信息数则需要Ctrl+c关闭,否则一直处于开启状态。
4、traceroute
traceroute [Domain] --跟踪数据包在两台主机之间经过的路由。通过该命令,可以查看为何对于某一域名总是连接不上,可查看问题出在哪个路由上(***则表示对应的路由器在某些地方出了问题)
5、host
host [Domain/IP] --快速获得与某个域名相关联的IP地址/找出与某个IP相关联的域名
6、ifup
sudo ifup eth0 --启动以太网络的接口,需要根用户权限
也可用ifconfig eth0 up或iwconfig ath0 up 启动有线或无线网络连接
7、ifdown
sudo ifdown eth0 --关闭以太网络接口,需根用户权限
也可用ifconfig eth0 down 或 iwconfig ath0 down关闭有线或无线网络连接
8、route
十三、使用网络
1、wget
连接URL地址进行下载
2、curl
连接URL地址进行下载,与wget存在区别
十四、Windows联网
Samba是世界上最重要的开源项目之一,它让Linux(以及其他基于Unix的机器,如Mac OS X)能够使用所有WIndows机器上使用的联网协议(Server Message Block, SMB)。有了Samba,Linux机器才能访问windows机器上共享的资源,也能够将文件打印到与windows相连的共享打印机。在Linux机器组成的网络中,可选择用Samba实现文件和打印机共享。