虚拟机安装
windowsXP虚拟机vmware下安装Linux过程
http://bbs.ylmf.net/forum.php?mod=viewthread&tid=1440765
鸟哥的linux私房菜
第五章:linux初步命令
1 $date 2 3 Wed May 30 04:11:52 EDT 2012 4 5 $date +%Y/%m/%d/%H:%M 6 7 2012/05/30/04:14 8 9 $date +%y/%m/%d/%H:%M 10 11 12/05/30/04:18
1 $cal 2 $cal 12 2012
man常见操作
下翻一页:空格,Page Down
上翻一页:Page Up
最后一页:End
第一页:Home
向上/向下搜寻字符: /string ?string
在所搜字符上移动:n,N
离开:q
sync:数据同步写入磁盘,关机之前将内存中的数据写入硬盘
shutdown:关机
1 今天20:25关机 2 $shutdown -h 20:25 3 再过10分钟关机 4 $shutdown -h +10 5 现在重新启动 6 $shutdown -r now
reboot:重启
第六章:档案权限和目录配置
linux储存帐号,密码和群组信息的文件:
/etc/passwd
/etc/shadow
/etc/group
档案类型和权限数据
-rwxr-xr--
1 234 567 890
234 拥有者的权限,可读,可写,可执行
567 同群组用户权限,可读,可执行
890 其它用户权限,可读
chgrp 改变档案的群组,群组名必须已经在/etc/group中存在,否则报错
-R 递归变更
chgrp groupname dirname/filename
chown 改变档案或目录的拥有者,用户名和群组名必须已存在
-R
chown user:groupname filename/dirname
chown user filename/dirname
使用情况,cp档案后需要修改档案的owner和group,不然无法使用
chmod 修改档案权限
chmod [-R] xyz filename/dirname
chmod [ugoa][+-=][rwx] filename/dirname
读r:4
写w:2
执行x:1
因而
-rwxrwx---
owner: 4+2+1 = 7
group: 4+2+1 = 7
other: 0+0+0 = 0
chmod 770 .bashrc
chmod u=rwx,g=r,o=w filename
目录介绍
/root 与开机系统有关
/usr 与软件安装和执行有关
/var 与系统运行有关
第七章:linux档案与目录管理
.
..
~
~account 该account的家目录
- 前一个工作目录 cd - 回到前一个工作目录
cd 切换目录
pwd 显示当前目录 -P 显示完整目录,而不是连接档
mkdir
1 $ mkdir test 2 $ mkdir -p test/test1/test2 ##-p建立多层目录 3 $ mkdir -m 770 test ##建立档案同时设置权限
rmdir
1 $ rmdir -p test/test1/test2 ##递归删除
ls 档案和目录检视
常用参数:-l,-a,-d
-l
-a 全部档案,连同隐藏档
-d 仅列出目录本身,而不是目录内的档案
cp 复制档案和目录
常用参数:a,p,d,r
-a 类同于pdr
-r 递归复制
-p 连同档案的属性一起复制过去,而非默认属性
rm 移除档案
-r 递归删除
-f 强制删除,没有询问
-i 互动模式,删除前询问
mv 移动档案和目录
-f 强制移动,目标档存在时,不询问直接覆盖
-i 目标档存在时,询问是否覆盖
-u 目标档已存在,且source较新时,才覆盖
basename dirname
1 $ basename /etc/bin/locate 2 locate 3 $ dirname /etc/bin/locate 4 /etc/bin
档案内容查阅
cat 由第一行开始显示档案
-n 连同行号一起打印
-A 可打印出特殊字符
tac 从最后一行开始显示
nl 显示档案内容,顺道打印行号
可翻页检视
more 一页一页翻动
space 下一页
enter 下一行
b 回翻一页
q 离开
/ 查找
:f 立刻显示文件名和行数
less 一页一页翻动 和more类似
增加的操作
page up 上一页
page down 下一页
head 攫取档案前几行
head [-n num] filename
1 $ head -n 10 model/po_shirt.py
tail 攫取档案的后几行
1 tail -n 10 model/po_shirt.py ##查看档案后10行 2 tail -n +100 model/po_shirt.py ##查看档案100行后的内容 3 tail -f model/po_shirt.py ##侦测模式,新写入的内容会显示出来,ctrl+c离开侦测模式
查看执行档(二进制文本)
od [-t type] filename
c 使用ASCII字符来显示
1 $ od -t c /usr/bin/locate
touch 创建档案或修订档案时间
umask 显示档案预设时的权限
1 $ umask 2 0022 3 $ umask -S 4 u=rwx,g=rx,o=rx
注:数字是被拿掉的权限,r 4 w 2 x 1
设置档案隐藏属性
chattr 配置档案属性
1 $ touch attrtest 2 $ chattr +i attrtest 3 $ rm attrtest ##删除操作不被允许
lsattr 显示档案隐藏属性
1 $ touch attrtest 2 $ chattr +aij attrtest 3 $ lsattr attrtest 4 ----ia--j--- attrtest
观察文件类型
file
1 $ file model/po_shirt.py 2 model/po_shirt.py: Python script, UTF-8 Unicode text executable
搜寻指令的完整文件名
which 搜寻执行档
寻找范围是PATH所规范内的目录
1 $ which ls 2 /bin/ls 3 $ which -a ls 4 /bin/ls 5 $ which -a mkdir 6 /bin/mkdir
搜寻档案
locate
whereis
第九章 档案与文件系统的压缩和打包
decompression 解压
zip 压缩
档案的压缩和打包
*.tar tar打包的程序,并没有压缩过。
*.gz gzip程序压缩的档案
*.tar.gz tar打包过的档案,并经过gzip压缩
*.bz2 bzip2压缩的档案
gzip [d#] filename
$ gzip my.conf
产生my.conf.gz这个档案
$ zcat my.conf.gz
读取档案中的内容
$ gzip -d my.conf.gz
$ gunzip my.conf.gz
两种解压文件的方式
$ gzip -9 my.conf
以最大的压缩比压缩文件
$ bzip2 [dz] filename
$ bzip2 -z my.conf
生成压缩文件my.conf.bz2
$ bzip2 -d my.conf.bz2
解压文件my.conf.bz2
$ bzcat my.conf.bz2
读取压缩文档中的内容
将.tar.gz文件解压
$ tar -zxvf *.tar.gz
将.tar文件解包
$ tar -xvf *.tar
生成打包文件filename.tar
$ tar -cvf filename
打包并压缩文件为filename.tar.gz
$ tar -zcvf filename
程序管理
触发任何一个事件时,系统都会将他定义成为一个程序,并且给以这个程序一个id,成为PID,同时依据启发这个程序的用户与相关属性关系,给以这个PID 一组有效的权限设定。
process与program 子进程和父进程
fork and exec:
过程调用的流程系统常驻程序被称为:服务(daemon)
网络联机服务,如apache,网络服务比较有趣的地方,在于这些程序被执行后,他会启动一个可以负责网络监听的端口号(port),一提供外部客服端(clinet)的联机要求。
工作管理(job control):
直接将指令丢到背景中执行 & :
tar -zpcf /tmp/etc.tar.gz /etc &
ctrl + z :
将当前工作丢到背景中(stopped)
jobs :观察目前的背景工作状态
fg :将背景工作拿到前景处理
bg :让工作在背景的下的状态变成运行中(running)
管理背景中的工作 : kill
脱机管理:
vim sleep500.sh #!/bin/bash /bin/sleep 500s /bin/echo "I have slept 500 seconds"
chmod a+x sleep500.sh nohup ./sleep500.sh &
程序观察:
ps
ps aux
ps -l
ps -lA
ps axjf
通过管道查看开发服的情况
ps aux|grep dev
top
top -d 2
P cpu使用率排序
M 内存使用量排序
离开:q
pstree
pstree -A
pstree -Aup
nice
nice -n -5 vi &
renice 10 18625
renice [number] PID
free
free -mbt
uname -a
uptime
netstat
vmstat
screen s
creen -D -R
screen
screen -ls
screen -r screenid
<F5><F6>
linux中screen命令的用法
bash相关
基本上,在 Linux 预设的情况中,使用{大写的字母}来设定的变量一般为系统内定需要的变量
echo
显示变量内容
shell>>echo $PATH
$表示后接的是变量
env
shell>>env
显示目前系统中主要的预设变量内容
(环境变量)
set
shell>>set
显示目前系统中全部的变量内容
(环境变量+自订变量)
bash变量设定规则
- 变量与变量内容以等号『=』来连结;
- 等号两边不能直接接空格符;
- 变量名称只能是英文字母与数字,但是数字不能是开头字符;
- 若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;
- 必要时需要以跳脱字符『 \ 』来将特殊符号(如Enter, $, \, 空格符, '等)变成一般符号;
- 在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 ` command` 』;
- 若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加内容;
- 若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;
- 通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断(纯粹依照使用者兴趣与嗜好);
- 取消变量的方法为:『unset 变量名称』。
export 变量
让该变量内容继续的在子程序中使用
unset
直接将该变量的内容拿掉
read
变量内容是由使用者由键盘输入的
shell>>read name
intput --提示输入后的字符
shell>>echo $name
input
array
数组
shell>>a[1]=4
shell>>a[2]=8
shell>>echo ${a[1]} ${a[2]}
4 8
$RANDOM
shell>>echo $RANDOM
1233 一个随机数
eval
用来做为『二次迭代』的功能
shell>>days=365
shell>>year=days
shell>>echo \$$year
$days
shell>>eval echo \$$year
365
alias
命令别名
shell>>alias rm='rm -i'
hastory
查看历史命令
shell>>alias h='history'
设定档案
系统设定值:
所谓的系统设定值,也就是说每个使用者进入到 bash shell 之后,会先读取的设定档案!预设的设定档案有下列几个
/etc/profile:这个档案设定了几个重要的变量,例如:『PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask』等等,也同时规划出 /etc/inputrc 这个针对键盘热建设定的档案的数据内容。
/etc/bashrc:这个档案在规划 umask 的功能,也同时规划出提示字符的内容(就是里头那个 PS1 啦!)。特别留意的是,这个档案在不同的 Linux distribution 里面,摆放的位置可能不太一样呢!所以需要查询一下才行呦!
/etc/man.config:这个档案或许跟 bash shell 较没相关性,但是对于系统管理员来说,却也是很重要的一个档案!这的档案的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!』所以说的简单一点,这个档案规定了下达 man 的时候,该去哪里查看数据的路径设定!
这就是系统在设定的时候常常会使用的档案!需要特别留意的是,通常设定完了这几个档案之后,都需要先 logout 在 login 之后才会将设定整个启动起来!
个人设定值
~/.bashrc:这个档案对于个人喜好的 bash 设定来说,是最重要的啦!因为我都是在这里设定我的个人化变量!例如命令别名的设定!路径的重新定义等等,都是在这里完成的!
~/.bash_history
~/.bash_profile
~/.bash_logout:这个档案则是在『你注销 shell 的时候, BASH 会为你所做的事情!』
source
前面提过了,如果我需要将目前的设定档的内容读入一次,需要重新 logout 再 login 才能够读入,那么有没有办法不注销而直接读入变量设定文件呢?当然可以,就使用 source 即可!
shell>>source ~/.bashrc
万用字符与特殊符号
*
?
""
''
``
[]
cp *[A-Z]* /tmp
command1;command2
连续指令
代表不论 command1 执行结果为何,command2 都会被执行
command1&&command
当 command1 执行结果传回值为 0 的时候,也就是没有错误讯息时,则 command2 才会开始执行
command1||command2
当 command1 有错误讯息时, command2 才会执行
命令重导向
将你目前的所得资料转到其它地方去
若以 > 输出到一个既存盘案中,呵呵,那个档案就会被覆盖掉啰!
- 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
- 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
- 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>
|
1>> 2> 2>> < |
|
- < :由 < 的右边读入参数档案;
- > :将原本由屏幕输出的正确数据输出到 > 右边的 file ( 文件名称 ) 或 device ( 装置,如 printer )去;
- >> :将原本由屏幕输出的正确数据输出到 >> 右边,与 > 不同的是,该档案将不会被覆盖,而新的数据将以『增加的方式』增加到该档案的最后面;
- 2> :将原本应该由屏幕输出的错误数据输出到 2> 的右边去。
- /dev/null :可以说成是黑洞装置!
/dev/null 这个垃圾桶就很重要了!/dev/null 是什么呢?基本上,那就有点像是一个『黑洞』的垃圾桶功能!当你输入的任何东西导向到这个虚拟的垃圾桶装置时,『他就会凭空消失不见了~~』,
将数据都写到同一个档案中
[test @test test]# find / -name testing 1> list 2> list<==错误写法
[test @test tset]# find / -name testing 1> list 2>&1 <==正确写法
管线命令(pipe)
这个管线命令『 | 』仅能处理经由前面一个指令传来的正确信息
shell>>last | grep root | wc -l
基本管线命令
cut
将『同一行里面的数据进行分解
[root @test /root ]# cut -d "分隔字符" [-cf] fields
参数说明:
-d :后面接的是用来分隔的字符,预设是『空格符』
-c :后面接的是『第几个字符』
-f :后面接的是第几个区块?
sort
常常需要比较一些信息啦
wc
[root @test /root ]# wc [-lmw]
参数说明:
-l :多少行
-m :多少字符
-w :多少字?
unqi
『重复的行删除掉只显示一个』
tee
[root @test /root]# last | tee last.list | cut -d " " -f1
使用 last 可以查看到这个月份的登入数据,而使用了 tee 之后,会将数据同时传给下一个命令去执行,也会将数据写入 last.list 这个档案
tr
split
注意:
在变量的设定中,单引号与双引号有什么不同呢?
变量的设定只在目前这个 shell 环境当中存在,在下个或者是在子程序中 ( 子 shell ) 将不会存在
要注意的是,在指令列输入的变量也好、命令别名也罢,都是针对该次登入的设定而已,所以只要您一注销,那么上次的设定值就会不见去!因此,我们需要有几个档案来帮助我们,每次登入的时候,就已经帮我们搞定了环境的设定啰!
ctrl + a
ctrl + e