RHCE视频教程笔记-033
Unit 1 Overview
Unix history
1969—Bell Labs—AT&T
Unix principles
Small,single-purpose programs
FSF-Free Software Foundation
1.不论目的为何,有使用该软件的自由
2.有学习该软件如何工作的自由
3.有把该软件发布给其他人的自由
4.改善该软件并重新发布的自由
GPL-GNU General Public Liense
Often called “copyleft”
Linux Origins
Linus Torvalds开发
Why Linux?
Linux is a UNIX-like OS
Multi-user and multi-tasking
Wide hardware support
Full supported
Red Hat Enterprise Linux
Recommended Hardware Specifications
Local Logins
文本模式 logins
使用普通用户登录不会显示上次登录的信息
6个可用consoles: ctrl+alt+fn
输入tty可以确定使用的哪个virtual consoles
Ctrl+alt+f7可以切换回图形界面
The Xorg GUI Framework
Xorg Graphical Environments
Gnome预设的图形界面的桌面环境
Kde另一个桌面环境
Starting Xorg
手动启动startx
Changing Your Password
图形界面和文字界面都可以更改密码,可以使用ASCII CODE作为密码,即使用键盘上不存在的字符做密码,alt加数字键区输入.
Unit 2 Running Commands
command [optins] [arguments]
world options后接 –
ls --all
-a -b -c =-abc
passwd -S user1 查看密码状态
Some Simple Commands
date -显示日期及时间
date --help
cal 显示日历
cal–calendar缩写
date -s 20091014
date -s 22:10
Getting Help
Linux建议我们不要尝试记忆每一件事,求助方式
1.whatis
whatis ls
2. --help
date --help
指令使用说明摘要
使用摘要的语法
[]非必须,可有可无,代表options
<>内容是变量,varialbes
x|y|z 三个中其中一个,只能使用一个
-abc 代表可以使用某一个或多个
3.man and info
man []
chapter:1 User commands 2 System calls 3 Library calls 4 Special files 5 File formats 6 Games 7 Miscellaneous 8 Administrator commands
eg: man passwd
man 5 passwd
man -k
搜索整个linux里所有的man page,也就是说明手册,找到符合关键字的man page
man -k passwd
如何操作man的说明文件
方向键移动 pgup,pgdown
/
n/N 向下或向上查找下一个
q 退出
info
比man更详细
跟网页的形式一样
如果有星号,可以按其连接到其他info page
当进入info page以后可以使用上下左右,上一页下一页,按TAB键跳入到有连接功能的连接点,enter会进入相应连接的主题说明.
n 跳入下一个小节, p 跳到上一个小节, u 挑回到上一层小节
s[text] search for text
q quite view info page
4./usr/share/doc/
额外的说明文件
ls /usr/share/doc
5.www.redhat.com/docs
Unit 3 Browsing the Filesystem
Linux File Hierarchy Concepts
Some Important directories
/root,/home/
The bin目录
/bin,/usr/bin,内容大致相同 /usr/local/bin(默认情况下是空的)
/sbin,/usr/sbin, /usr/local/sbin(默认情况下是空的)
/media and /mnt 外部文件系统挂载点
Other important directories
/etc system config files
/tmp temporary files
/boot kernel and bootloader
/dev device
/usr programs
/lost+found
/var and /srv server data
/proc system information
/lib
/usr/lib
/usr/local/lib libraries
Current working directory
pwd 确认目前所在的是哪个目录
file and directory names
1.长度不能超过255个字符
2.除了”/”以外都可以使用
3.最好使用有意义的名字,大小写区分不同的目录和文件
absolute pathnames 绝对路径
relative pathnames 相对路径
changing directories
cd
cd /usr/bin
cd … 返回到上层目录
cd - 回到刚才工作的目录
cd ~ 进入用户自己的目录
listing directory contents
ls [option] [files or dirs]
ls -ld 目录本身的属性
copying files and directories
cp [options] file destination
cp [options] file1 file2 destination 可以一次性复制多个文件
cp -p file destination 保持原来的时间标记
当复制目录时需要加-r
-pr=-a
copying files and directories复制行为是怎么运作的
1.如果指定的目的地存在并且是一个目录,就会把指定的文件复制到指定的目录里,文件名跟原来一样
2.如果指定的目的地存在并是一个文件,那么会用指定文件覆盖目的文件
3.如果我们指定的目的不存在,复制的行为会使用目的位置的名称先建立一个文件,再把文件的内容复制进来
moving and renaming files and directories
mv [option] file destination
可以重命名目录或文件
mv [option] file1 file2 destination
如果目的的位置是一个目录,那么我们可以同时搬移多个文件到一个目录
moving and renaming files and directories是怎么运作的
1.如果我们指定的目的存在并是一个目录,会把源文件或目录搬移到指定的目录里,文件名不变.
2.如果我们指定的目的存在并是一个文件,会把源文件复制过去,并覆盖原有的.
3.如果我们指定的目的不存在,会把指定的文件或目录重命名为目的位置的名称.
creating and removing files
rm [option] filenames
-i 出现提示
-r 删除目录时
-f 强制删除,不出现提示
一旦删除就无法恢复
touch 创建一个文件,如果文件存在,仅更新时间标记
touch test1.txt
less test1.txt
按键盘上的v快速进入到编辑模式来编辑.
creating and removing directories
mkdir 创建一个目录
rmdir 仅可删除空目录
rm -r 删除一个目录及目录里所有内容
using nautilus
gnome图形界面环境下浏览文件系统
可以运行为spatial或browser模式
accessed via
1在提示符下输入nautilus,
2打开桌面上的home或computer
3menu—applications—files browser
moving and copying in nautilus
在同一个文件系统下drag,是移动;在不同文件系统drag是复制。
在图形界面下复制或移动文件或文件夹.拖拽的时候按alt键会提示是复制还是移动还是建立快捷方式
按住ctrl drag,复制
determining file content怎么辨识档案的格式
linux下有不同的文件格式
file [options] filename
viewing and entire text file
cat [options] file
-n 带行号
-A 出现换行字符
-s 有超过2行的空白行会压缩成一行空白行
-b 在每一行前显示行号,不包括空行
viewing text page by page
less [options] filename
可以用键盘上的上下键 gpup gpdown
/text 查找text
n 查找下一个
v 快速进入编辑模式.
b 上一页
ctrl+d 向后翻一页
ctrl+u 向上翻半页
ctrl+b 向前翻一页
g/G 快速到文件首/尾
Unit 4 Bash introduction
bourne again shell
功能将使用者输入的指令转换为kernel可以认识的指令,是人机对话的桥梁
bash heritage
bash由unix演变而来,unix分为2派
1.sys V:sh
2.BSD:csh…ksh,tchsh,zsh
bash由sh和tchsh改良而来.
特殊表达式
* 代表多个字符或空白
? 代表任何单一字符
[a-z] a到z任何一个字符
[^a-z]除了a到z任何一个字符
Tab键
自动补全命令及档案名称
history
history命令可以查询到以前执行过的命令
输入!number可以执行历史记录相应编号的命令
^2^1,可以把2的字符取代为1,比如passwd -status user2passwd -status user1
ping 192.168.0.2ping 191.168.0.1,可以看到192也换成191,符合的字符都替换
可以改多个字符
~
cd ~ 回到当前用户的家目录,cd ~user1,进入user1的家目录
variable and curly braces
echo $HOME
cd $HOME
touch {a,b}
结果建立a,b 2个文件
touch a{a,b}
结果建立aa,ab 2个文件
touch {a,b}.{1,2}
结果建立a.1 a.2 b.1 b.2 4个文件
command and math
command output `` or ( )
echo “hostname:”输出hostname:
echo “hostname:`hostname`输出hostname:localhost.localdomain
优先执行``里的内容,也可以使用$()这个来代替``
进行数学计算 $[]
a=3;b=5
echo a+b输出a+b
echo $[ $a + $c ]输出8
运算式的部分加不加空格都可以运算,但建议加上,标准语法,在各种平台都可以使用
backslash()
ls\
> -al
相当于执行ls -al,在命令比较长需要分行时使用.
echo Your cost $5.00输出Your cost .00
echo “Your cost $5.00”输出Your cost .00
echo Your cost $5.00输出Your cost
KaTeX parse error: Undefined control sequence: \* at position 59: …以下方法: 使用\ echo \̲*̲\*\* 0000 \*\*\…,``,!
所以在使用过程中:“”保持变量特性, ‘’ 丢失变量特性
echo $a 输出 3
echo “$a” 输出 3
echo ‘$a’ 输出 $a
echo “today is `date`” 输出命令结果
echo ‘today is `date`’ 结果today is `date`
echo !3
echo “!3”
history tricks
键盘的上下键返回到以前执行的命令
在历史命令记录比较多的时候可以使用ctrl+R在指令的历史记录中寻找我们要的指令,提示符会变成(reverse-i-search)`’:
自动补全命令的上一个参数,也就是此命令使用上一个命令的最后一个参数
cat > 2006
cat esc后再按.补全2006
cat alt+.补全2006
editing modes
切换指令的编辑模式
set -o 查看电脑上指令的设定
set -o vi 切换到vi的指令编辑模式,o为off
set +o vi 关闭vi编辑模式,进入默认的emacs模式
gnome erminal
applications/system tools/terminal
ctrl-shift-t open a new tab
ctrl-pgup/pgdn next/prev tab
alt-“N” change to go to “N” tab
ctrl-shift-c/v copy/paste
ctrl-shift-w close a tab
ctrl+shift+n 重新打开一个terminal
Unit 5 Stantard I/O and Pipes
standard input and output
linux里为执行的程序提供3个i/o通道
1.standard input:keyboard is default 0
2.standard output:terminal windows is default 1
3.standard error:terminal windows is default 2
ls -l /dev/std*
redirecting output display on the terminal
redirecting input and output
> output
>> output
< input
overwriting or appending
> overwrite
>> append
redirecting standard output
\find /etc -name passwd 1> stdout
如果不输入1,默认情况下也会是1效果
\find /etc -name passwd > stdout
正常信息输出到stdout,错误信息输出到屏幕
\find /etc -name passwd 2> stderr
错误信息输出到stderr,正常信息输出到屏幕
导出错误信息
redirecting both standard output and error
同时导出1,2信息
find /etc -name passwd 2>error 1>output
以上是导出到2个不同文件
find /etc -name passwd >alloutput 2>&1
find /etc -name passwd &> alloutput
&代表all(0,1,2……)
但建议不要使用&编号,就是第二种方法,&代表所有编号,可能就会有其他信息
redirecting input
tr - translate or delete characters转义字符或删除字符
tr ‘A-Z’ ‘a-z’ < .bash_profile
把.bash_profile里所有大写字符转化为小写
把wc命令的输入重定向为/etc/passwd文件
[root@localhost ~]# wc < /etc/passwd
统计passwd文件的行数,字数,大小
cut
display specific columns of file data
-f specific field or column
-d specific field delimiter (default is TAB)
-c cuts by characters 从某个字符到某个字符
如cut –c 4-8 results.dat
sort
对标准的输出做排列,不会对原文件做修改
sort [options] file(s)
-r 反向排列
-f 不区分大小写
-u 唯一性,把重复出现的字符去除掉
-t 设定栏位间的间隔符号
-n 把排列的字串用数值来显示
-k 可以设定按照哪一栏排列
-k 可以多设置几个k
sort -t: -k3 /etc/passwd
sort -t: -k3 -n /etc/passwd
n以数字的值排列
using pipes to connect processes
| 可以将某个指令的输出变成另一个指令的输入
ls -l /etc | less
using pipes for mail
sending mail
[root@localhost~]#mail -s “邮件主题” user2 回车
hello,user2,this is your first mail
goodby
.
Cc:
[root@localhost~]#
user2可以是本机的帐号,也可以是邮件地址user2@sina.com
也可以导入文件的内容寄发邮件
[root@localhost~]#cat test.mail
this is a test mail
[root@localhost~]#mail –s “主题” user2 <test.mail
reading mail 读取邮件
cat /var/spool/mail/user2
输入mail就可以看到收到的邮件
[root@localhost~]#mail
N 1
N 2
&2 -读取第二封信
&x -退出(保留邮件)
&q -退出(移除邮件),邮件会移动到~/mbox文件夹里
[root@localhost~]#ls -l | mail –s “主题” user2
[root@localhost~]#
xargs 可以把pipe输出的结果作为后面命令的参数
vi test.txt
test.txt
cat test.txt | xargs rm -r
ls -l | lpr
通过通道给打印机
Tee
做资料分流
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
[root@localhost~]#cut -f1 -d: /etc/passwd | sort | less
[root@localhost~]#cut -f1 -d: /etc/passwd | tee cut.file | sort | tee sort.file | less
Unit 6 Users,groups and permissions
the linux security model
用户和组来管理文件和资源的权限
每个文件都有自己的owner,user会关联到group
每个处理程序都会关联到用户和组
users
系统中每个user都有一个唯一的UID
UID存储在/etc/passwd里
里面第二个和第三个冒号之间如果空白,那么该用户将不需要密码登录系统
同时普通用户不可以设置简易密码,root可以。
用户的/home路径,详细信息,shell,
/etc/shadow
groups
系统中每个user至少属于一个group
每个group都有一个gid
gid存储在/etc/group
系统会为每个user建立一个同名的group,并让此user属于这个group
也就是说每个用户至少属于一个组,并可以加入到其他组里.
/etc/gshadow存储系统组密码的文件
系统文件的权限信息是记录的所有的uid和gid,而不是用户名和组名.
the root user
特殊的唯一的管理者帐号,superuser,拥有系统所有的,至高无上的权限
linux file security
可以针对每个目录和文件设置权限,分为
owner权限,owner所属组其他成员权限,others
read,write,execute三种permissions
permissions types
用四种符号表示
r read file or list a directory
w write to a file or create and remove files from a directory
x execute a program or change into a directory and listing of the directory
- 在相应的位置是-是表示没有这样的权限
examining permissions
interpreting permissions
examining directories
ls -ld /tmp 指定目录的详细信息
ls -l /tmp/dir1 指定文件的详细信息
processing linux security
当一个用户或组访问某个档案或目录时会依照以下流程来判断是否有权限来访问
changing permissions - symbolic method
chmod [-R] mode file
changing permissions - numeric method
r read 4
w write 2
x execute 1
changing permissions - nautilus
Unit 7 Vi Editor Basics and printing
starting vi
standard editor of linux and unix
three modes of vi
command mode
cursor movement
change delete yank,put(paste),search
insert mode
type in new text
return to command mod with
ex mode (extended mode)
quitting saving
search and replace
cursor movement
w 跳到下一个词
b 跳到上一个词
( 跳到上一句
) 跳到下一句
{ 跳到上一个段落
} 跳到下一个段落
entering insert mode
a append after the cursor
i insert before the cursor
A append to end of line
I insert at beginning of line
o open a line below
O open a line above
leaving insert mode
按退到命令模式,可多按几次
change,delete,and yank(copy):command mode
put(paste):command mode
在copy完后或changed,deleted等操作都可以做paste操作。在command模式下输入p或P,只要在之前做过
change,delete or copied data的操作
for line oriented data:
p puts the data below the current line
P puts the data above the current line
for character oriented data:
p puts the data after the cursor
P puts the data after the cursor
undoing changes:command mode
u undo most recent change 恢复最近一次的变动,可多次累计恢复
ctrl-r 取消最近一次的恢复,也可多次累计恢复
U undo all changes to the current line,针对游标所在行所做的是所有的变动,正反多次作用
searching for text:command mode
/text search downwards for “text”
?text search upwards for “text”
n continue search in the same direction
N continue search in the opposite direction
command-mode tricks
dtx 删除从游标开始的到第一个x之间的内容
rx 取代游标所在的字符更改为x
x 删除游标所在的字符
5dd 删除游标所在往后5行的内容
5yy copy 5 lines
5x delete 5 characters
R 从游标开始替换字符,直到输入为止
saving and quiting:ex mode
w saving
q quitting
wq saving and quitting
! forcing
x 也是保存离开
在command模式直接输入ZZ也是保存退出,也就是shift+z+z
printing in linux
cups common unix printing system
system-config-printer
printing commands
lp -Php readme
指定使用hp来打印readme
lpq -Php
查询hp打印机里排队的文件
lpstat 查询所有队列里的文件
ls -l /var/spool/cups
cat /var/spool/cups/d00008-001 | more
lpmove ok-9 hp 把ok打印机里9号工作搬移到HP打印机里
默认情况下,所有打印队列的优先级都是50,如果把某个文档的优先权改为51就会把该档案排到前面去,lp -i17 -q51,把编号为17的打印任务有先权改为51
也可以把active的文档disable掉,然后把急需打印的设置成active状态
disable ok
/usr/bin/enable ok
直接使用enable会使用另一个enable,所以必须加上路径s
reject 关闭queue,不能再向打印机队列传输打印任务,accept打开queue
printing Utilies
postscript格式是最初的文件格式,几乎所有打印机都认识。
Unit 8 The linux filesystem in-depth
partitions and filesystems
linux默认档案系统ext3,同样支持ext2,msdos(floppies),iso9660(cds)
indoes
文件的时间标记有:
Access time:最后一次访问存取的时间
Modify time:最后一次编辑的时间
Change time:文件的inodes table 里任何一个栏位发生变化的最后时间,通常Mtime发生变化时,Atime与Ctime也发生变化.
indoes table里是描述文件的信息,不属于文件的内容部分.如果要访问文件,必须靠pointer里面的值才能够读取到.pointers记录了文件存在硬盘的blocks信息
timestamp里存储了3个时间stamp
directories
directories是一个列表,里面记录了文件名称与indoes对应.
可以使用ls -li显示inodes与文件的对应信息
inode和时间对应的表-directory
cp and indoes
当复制文件时,系统找到空闲的inodes,把新增文件的mater data写入到这个inodes talbe里,在目录里添加directory entry,然后再复制这个文件过去.
mv and indoes
在同一个文件系统mv时,系统仅更新源和目的的文件信息,不会移动文件.
rm and indoes
在删除一个文件时,只会把inodes删除,blocks变为可用,在其他文件使用之前仍会保留里面信息,实际上减去link count,1-1=0 2-1=1
sysbolic (or soft) Links
如果使用ls -l在第一栏出现小写的l时,就说明是一个软连接
ln -s filename [linkname]
hard links
把多个文件信息,文件名称对应到一个inoes number,这样做以防止重要的文件被误删
不能把hard link连接到不同的文件系统中,不能把hard link连接到目录上
ln filename [linkname]
the seven fundamental filetypes
7种档案形态, - 文件;d 目录;l 软连接;b block文件,比如说硬盘;c 字符文件,键盘鼠标;p named pipe,如ls –l /dev/initctl ;s socks,程序间网络间通讯时出现这种文件。
checking free space
df 查看在每个分区文件系统中使用硬盘的空间,
df -h /home 检查相应目录所在分区的硬盘使用情况
du 查看目录及其下所使用的硬盘空间
du -s 目录使用的空间
du -h 易懂的方式显示
removable media
访问之前,meidia必须mounted,移除之前media必须unmounted
默认情况下,root之外的用户只能mount特定的设备cd,dvd,flppy,usb,etc.
默认情况下,mountpoints在/media
mounting cds and dvds
在gnome/kde环境下,会自动mounted.
如果没有,需要手动mounted
cd /dvd reader
mount /media/cdrom
cd /dvd writer
mount /media/cdrecorder
eject command unmounts and ejects disk
eject /media/cdrom
mount /dev/hdc /mntcdrom cv vc
umount /mnt/cdrom
mounting usb media
detected by the kernel as scsi devices /dev/sdaX
automatically mounted in gnome/kde
mounting floppy disks
must be manually mounted and unmounted
mount /media/floppy
umount /media/floppy
取出软盘前必须umount floppy
formatting floppy disks
使用软盘前必须进行格式化,
A low level format(rarely needed):fdformat /dev/dfH1440
a filesystem,one of:
mkfs -t ext2 /dev/fd0
mke2fs /dev/fd0
mkfs -t vfat /dev/fd0
软盘格式化以后才可以mount到系统中以供使用,mount以后不能再格式化.
why archive files
把多个档案打包到一起变成一个档案,方便备份,恢复,传输
linux环境中tar是默认的archive command
tar会打包文件的inodes table及文件的本身
不具有压缩文件的功能,有可能比原来的还大.
creating an archive
tar cvf archive_name files
-c 要建立一个新的打包档案
-v 显示过程
-f 使用这个参数后的名称作为打包后的文件名
tar的参数前不需要加-
inspecting archive
tar tf archive_name.tar
tar tvf archive_name.tar
检查打包文件里的文件清单
tvf 相当于ls -l
extracting an archive
解开打包文件:
tar xvf archive_name.tar
解开到当前所在的目录
why use files compression
缩小档案的大小,文字档案经过压缩后会减少75%的体积.
通常在打包档案的同时会压缩档案
compression utililties
gzip,gunzip
linux标准的压缩指令
bzip2,bunzip2
比较新的linux版本才支持,通常比gzip压缩比高。
using compression
gzip termcap(压缩的是那个档案)
gzip -v termcap 在终端显示压缩比
gzip -vc termcap > termcap.gz 保留原来档案建立新的压缩档案
gunzip termcap.gz 解压缩
compressing archive
tar 具有压缩与解压缩的功能
z 用gzip的技术来压缩打包好的文件
j 用bzip2的技术来压缩打包好的文件
tar to unformatted floppies
tar打包到软盘等可以移除的存储设备里去
floppies can be used like tape drives
low level format required
file system not needed
floppy can’t be mounted(umount)
use tar to write to the floppy
/dev/fd0 is the destination
eg:
umount /media/floppy
fdformat /dev/fd0H1440
tar cvfM /dev/fd0 /home/user1 M参数是可以更换软盘.
如果需要中途会提示更换软盘按回车继续
tar xvfM /dev/fd0 还原软盘里的数据
Unit 9 Configuring the bash shell
configuring the bash shell
通过以下几种方式设置shell
1自定义变量
2别名或functions
3通过set命令
还可以通过环境变量来设置其他指令或者是应用程序
variables
变量是一个带有值的符号,
可以通过变量来设置shell或其他程序,
变量存储在内存里,
有2种类型,local—自定义变量,environment—环境变量
local只能在目前的shell里使用
环境变量可以在全部的命令中使用
可以用以下2个命令来显示系统变量
set 来显示所有的变量,包括local变量及环境
env 来显示系统环境变量
configuring the shell:local variable
通过修改或设置变量的值来设置shell,通常以英文大写来命名变量.
eg:$FAV_COLOR=blue,显示变量echo $FAV_COLOR
common local variables
常见的local variable
HISTSIZE 记录系统user执行过的指令的数量,并把这些指令储存在history file里,HISTFILE参数定义了文件的位置。
COLUMNS 定义了terminal窗口的宽度
LINES 定义了terminal窗口的高度
the ps1 local variable
PS1 设置提示字符前面的提示
\d today’s date
\h short hostname
\t current time
\u user name
\w current working directory
! the history number of current command
$ 使用$来作为每个user的提示字符,仍然使用#来作为root用户的提示符
\l 显示在哪个tty里操作
PS1=’[\u@\h \w\l\d\t~]$’
aliases
别名,可以设置其他命令的快捷命令
eg:$ alias lf=’ls -laF’
alias命令会显示系统里设置的别名,alias lf会显示lf别名的详细信息
other shell configuration methods
其他设置shell的方法
set命令可以显示环境变量,还可以设置shell里面的属性
eg:set -o noclobber 使用>命令时,保护已有的文件不被覆盖掉
set -o vi 设置vi为默认的文字编辑器
cat >& /home/doc/cal.txt 表示不论错误与正确的信息都传输得到cal.txt里
configuring commands:environment variables
怎么样把变量升级为环境变量
当指定variable时,此variable只会在目前所在的shell里生效,只有环境变量才会在这台主机下的每个shell环境里有效使用export命令升级为环境变量,使variable在每个shell(应该是bash生成的bash里)里生效
unset FAV_COLOR
删除FAV_COLOR变量,user只会删除自己shell的变量,如果是root用户使用unset命令,会删除掉全部用户的此变量
common environment variable
系统中常见的环境变量
HOME 指向目前用户的所在的home目录
LANG 指定了应用程序要使用哪种语言来显示
PWD 用户当前工作目录所在的路径
the TERM environment variable
TERM的值定义了终端机的类型
如果使用图形界面登录的话,TERM预设会是xterm
reset命令可以重新设定荧幕画面,当荧幕上显示乱码是可以使用reset命令来产重设荧幕
the PATH environment variable
PATH的值是系统的预设路径
which 可以使用which找到指令所在的目录
how the shell expands the command line
在文字模式下,shell里如何让命令执行的更有效率
在shell当中有许多转义的字符和使用的技巧可以搭配命令来使用让命令可以执行的更有效,而这些原件和技巧大致可以分为以下几种类型:
split the line into shell words
连接符号让本来需要2行来实现的命令用一行来实现,有 ’ “ | & ; ( )
function and alias expansion
函数或别名
curly brase string expansion
{ , } 里面是命令区块的组合,中间以逗号分开
tilde expansion
~ 使用者的家目录
parameter and varable expansion
split the line into shell words again
使用多个连接符号来连接多行指令
file glob expansion
万用字符 * ? []
file redirection
> >> < << 2> 2>>
run the command
shell startup scripts
scripts是由很多指令组成的脚本,startup script是当登录时执行的脚本
作用
可以建立自定义环境变量
设置shell,来设置其他的应用程序
启用alias
定义好开机时要执行哪些应用程序
login shells
login shell
就是用户登录时触发login shell
non-login shell
su 时就是non-login shell,但是su - 就是login shell了
login shell和non-login shell 时执行不同的startup scripts
startup scripts:order of execution
login shells启动时
1 /etc/profile,
profile执行后会呼叫/etc/profile.d子目录里startup scripts
在scripts里会用.加空格加scripts的路径及名称来呼叫其他的scripts
2.~/.bash_profile
再呼叫~/.bashrc
再呼叫 /etc/bashrc
non-login shells
1.~/.bashrc
/etc/bashrc
/etc/profile.d目录下的scripts
/etc/profile
这个startup scripts是当用户登录以后执行的第一个scripts
只有是login shell的时候才会执行
non-login 不会执行
set一系列的变量包括:PATH,USER,LOGNAME,MAIL,HOSTANME,HISTSIZE等
/etc/profile.d
目录下存放了一些应用程序所需要用的startup scripts
这些scripts会被执行是因为在/etc/profile里有个for循环语句来呼叫这个目录下的scripts
这些scripts主要是建立一些变量及初始化程序
~/.bash_profile and ~/.bashrc
每个用户自己的settings
包含了variable settings,aliases
如果希望在登录的时候执行某些会把传回值显示到屏幕上的指令的话,如date命令,应该把这些指令写入到.bash_profile里,而不是.bashrc。为什么呢,可能是显示语言变量。
~/.bash_logou
放在每个使用者的家目录
在user logout时执行的scripts
希望用户在logout时自动执行的命令
make backups of files;delete temporary files;display today’s date and time of logout
Unit 10 Avanced topics in users,groups and permissions
user and group id numbers
每个用户,组都会对应一个uid,gid,这些信息存储在硬盘上
/etc/passwd,/etc/shadow, and /etc/group,/etc/gshadow files
shadow文件中用户密码如果有,会在第二栏以
1
1
1开头,然后跟上md5加密的密文,是由user id与password经过md5 hash加密的结果,最新的是其他算法,同样密码的用户密文不同。
system users and groups
1-499的uid和gid通常是分配给系统用户和系统组的
changing your identity
一般用户仅能更改自己的密码,并且少于6个字符的密码会被拒绝
su user1 切换到user1,但是不更改环境变量
su - user1 切换到user1,并载入user1的环境变量,start a login shell
su 后面不接任何字符,系统会切换到root用户
su - 加上-,会切换到root用户,并重新载入root的环境变量,也就是说start a login shell
whoami 显示哪个用户登录
user information commands
1想要知道目前使用哪个用户登录
whoami
2想要知道用户属于哪个group
groups
id
3想要知道目前有哪些用户登录
users,who,w都可以
4login/reboot history
查询用户使用时间及登录历史:last
default permissions
default permission for files is 666
default permission for directories is 777
文件或目录的默认权限是由以上默认权限被umask掩过后得到的结果
默认一般用户的umask值是002
root的umask值是022
直接减法运算有时候是不对的,比如在文件原来是666,umask是033,但结果633是错误的.
通过umask可以很轻松的决定新建文件的权限
special permissions
特殊权限,又叫第四个权限,分为suid sgid sticky
file: rwx rwx rwx
u g o
rws rws rwt 如果x一栏没有x权限会以大写显示S S T
任何使用chmod设置特殊权限
chmod u+s file1
chmod o+t file2
也可以使用数字来设置特殊权限,s s t 4 2 1
chmod 4755 file1
nautilus来设置特殊权限,文件管理器.
special permissions for executables
特殊权限对执行文件有什么作用
suid 让使用者在执行带有suid文档时具有文件所有者的身份去执行,而不是以执行者的身份去执行,只对可执行文件有效
比如说passwd命令,ping命令,ping命令虽然谁都可以执行,但是并不是所有人都可以执行内核icmp包
sgid 让使用者在执行带有guid文档时具有文件组拥有者的身份去执行,sgid可用于目录,对于目录的话以gid的身份去进如目录,创建文件和文件夹
special permissions for directories
特殊权限对于目录有什么作用
sticky bit 设有sticky的文件夹里的文件,只有文件的所有者和root可以删除,其他用户不能删除,而不是看write的权限来决定的.
sgid 是让设有sgid目录的群组成员才有权限在这个目录里建立新的文件
一般sgid和sticy同时设置,同一个项目的成员是一个组,每个人都可以在文件夹下建立文件,互相访问,但都不可以删除,只有领导才可以删除.
ls -ld tmp
d参数是查看tmp目录本身的信息,如果不加d,会查看tmp目录里的信息
Unit 11 Advanced uses of the vi Editors
file repositioning
G go to last line in file
1G go to first line in file
ctrl-d go down half a screen
ctrl-u go up half a screen
screen repositioning
H go to first line on screen(high)
M go to middle line on screen(middle)
L go to last line on screen(low)
z make current line first line on screen
z- make current line last line on screen
ctrl-f
ctrl-b
filtering
功能:将指令执行后输出的结果插入到目前正在编辑的文件中
可以将文件里的资料来当作指令来使用
eg: !!ls –l 在编辑文件时在命令模式输入!!ls –l 就把输出的结果插入到文件中去.
!!date
!}sort
!}fmt –w60
ex mode:search and replace
sed命令 style search and replace
different default addressing rule
no address current line only(无范围仅当前) : s/this/that 仅替换一个
: s/this/that/g 替换全部
1,10 change line 1 to line 10 :1,10s/this/that
1,$ or % for changes to entire file :1,$s/this/that/g :%s/this/that/g
.,.+10 from current line (“.”) to current line plus 10 (“.+10”)
:.,.+10s/this/that/g
:.,-6s/this/that/g
advanced reading and saving
:r file1 read the file1 into current file
:1,20w file2 把当前编辑的文件的1-20行写到file2里
:1,$w file3 把目前编辑文件的所有内容写入到file3里
:1,20w >>file4 把目前编辑文件的1-20行附加到file4里
当我们用vi编辑器同时编辑多个档案时会用到以下命令
vi test1 test2 test3
开启后默认会在test1里,输入:n切换到下一个档案
:rew rewind to the first file
:n# jump to the previous file,thus toggling between two files
在两个档案之间进行切换,最近切换的文件之间跳转。
configuring vi
在vi里,命令模式下输入:set出现vi的配置
:set all 可以看到所有的配置选项
:set ignore 忽略大小写
:set number
:se num
Unit 12 introduction to string processing
head
displays first few lines (default 10 lines) of text in a file
Use –n or --lines parameter to change number of lines displayed
head file2
head –n 12 file2 head --line 15 file2 head -12 file2
一般文件信息都写在头部,在查看文件时用
tail
displays last few lines (default 10 lines ) of text in a file
-n or --line eg: tail -5 file2 经常用来查看新增文件的内容
tail -f /var/log/message 一致持续显示文件改变的信息,用在监控动态更新的内容。
wc
counts lines,words and characters 统计,不加任何参数结果出现三组数字,行,词,字符
use -l for only line count
-w word
-c characters
uniq
将文件中相邻相同的行(注意是相邻)删除多余行只留下一行,可以先用sort命令先对文件内容排序,然后再用uniq就可以将所有多余行去除掉
sort -u 命令功能就可以实现
uniq -c file2 计算文件中有几行是重复的
other string processing tools
paste 可以将许多文件帖在一起
paste file1 file2 file3 > mergel
cat file1 file2 file3 > merge2
tr
tr ‘A-Z’ ‘a-z’ < .bash_profile
unix里使用$来当作纯文本文件的段落符号
DOS用\r来当作段落符号
unix的文本文件在dos里打开的话,必须做一些处理,将$变为\r
cat -A file4 查看file4文件所有内容,包括换行,段落符号
cat -A file4 | tr ‘$’ ‘\r’ > file4.txt
unix2dos file4
cat -A file4 file4.txt
version comparison with diff
比较2个文件的不同之处
diff ABC abc
1c1 第一行有不一样
>a a在第二个档案
---------同一行不一样可以看>,<,中间用--------隔开
<D D在第一个档案
< 代表在第一个档案
> 代表在第二个档案
sdiff ABC abc
spell checking with aspell
检查单词的拼写是否正确
aspell check file2
找到错误的拼写单词,显示正确单词后,输入单词前的数字会更改成正确的那个.
检查单词拼写是根据一个词典来检查的,在 /usr/share/dict/words
look exer 快速检查单词的拼写,同样根据以上字典检查。
formatting tools
expand 把文档里的tab键空白变成空格键空白,tab产生的符号^I
expand file.tab > testfile.tab
fmt 可以把文字档的内容重新格式段落,把原来多余的或者没有的空白重新格式化。使用man fmt查看
fmt -u -w50 file2 词之间一个空格,段落之间是2个空格,行宽度设置为50
pr 按照打印机的格式重新编排文件
pr /usr/share/dict/words | more
pr -5 /usr/share/dict/words | more | lpr 设置5栏
默认66行,56行内容和header那一行