cdl自己补充:
显示系统路径
echo $PATH
设置时间
# sudo date -s '09:16:00 2004-04-14'
几种查看linux版本信息的方法:
1. uname -a
2. cat /proc/version
3. cat /etc/issue
4. lsb_release -a (这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。 )
5. 查找文件关键词 cat 文件名|grep 关键词
6. 查找文件夹下关键词 grep 关键词 文件名 -R
指定行查找
grep 关键词 文件名 -Rn
data
ctrl+z
挂起当前进程
如果需要恢复到前台输入fg,恢复到后台输入bg
ctrl+c,彻底终止该进程
如果下次碰到这样的command就这么执行,永久性放入后台
nohup $command &
1.
常用指令
ls 列出文件信息
-l
-al 显示隐藏文件
man [指令名] 列出指令信息说明
man的定义manpage路径在:ls usr/share/man
info[指令名] 比man更见详细
2.
date命令
#返回当前服务器时间pe
clear 命令
#清屏
cp 命令
#拷贝文件 cp 文件名
cp /etc/php.ini .
注释: . 拷贝到当前目录
#拷贝文件夹 cp -r 文件夹路径
cp /etc/X11
mv命令
#移动文件 mv 文件名
mv /etc/php.ini .
#移动文件并重命名
mv php.ini /etc/php.txt
rm命令;
#强制删除带提示(是否删除) rm /etc/php.txt
#强制删除不带提示
rm -f /etc/php.txt
touch命令
#创建文件命令 touch 文件名
#如果创建时文件存在会更新文件时间
cd命令
#直接使用cd 到当前用户的根
#
pwd命令
#显示当前用户的路径
mkdir命令
#创建目录 mkdir 目录名
rmdir命令 rmdir 目录名
#删除目录 不能删除非空目录
想删除使用rm -rf 文件名 命令
3.
-------------------------------
cat 命令
#查看文件内容
more 命令
#逐屏查看文件内容
less 命令
#逐行查看文件内容
date 命令
#显示当前时间
cal命令
#显示阅历
--------------------------------
df命令
#显示磁盘用量
#fd -h 以MB或者G显示
du命令
#du 文件名
#du -h 文件名
---------------------------------
head命令
#显示文件开头部分内容 十行
#显示 20行 head 20 文件名
tail命令
#显示文件结尾部分内容 十行
#显示 20行 tail 20 文件名
#tail -f 文件名<=查看日志文件使用 监视日志文件
-----------------------------------
设备文件/dev 下
brw-rw---- 1 root disk 8, 16 Sep 9 23:45 sdb
brw-rw---- 1 root disk 8, 17 Sep 9 23:45 sdb1
brw-rw---- 1 root disk 8, 32 Sep 9 23:45 sdc
brw-rw---- 1 root disk 8, 33 Sep 9 23:45 sdc1
brw-rw---- 1 root disk 8, 48 Sep 9 23:45 sdd
brw-rw---- 1 root disk 8, 49 Sep 9 23:45 sdd1
drwxrwxrwt 2 root root 40 Sep 9 15:45 shm
crw------- 1 root root 36, 1 Sep 9 23:45 skip
lrwxrwxrwx 1 root root 15 Sep 9 23:45 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Sep 9 23:45 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Sep 9 23:45 stdout -> /proc/self/fd/1
lrwxrwxrwx 1 root root 4 Sep 9 23:45 systty -> tty0
crw------- 1 root root 36, 16 Sep 9 23:45 tap0
crw------- 1 root root 36, 17 Sep 9 23:45 tap1
crw------- 1 root root 36, 26 Sep 9 23:45 tap10
crw------- 1 root root 36, 27 Sep 9 23:45 tap11
crw------- 1 root root 36, 28 Sep 9 23:45 tap12
crw------- 1 root root 36, 29 Sep 9 23:45 tap13
#块设备b开头
#字符设备c开头
----------------------------------
虚拟控制台及用户身份切换
.在系统中有12个虚拟控制台,前6个可供用作本地登录
.用户可用alt+Fn(1~12)来切换
.用su可用来切换用户身份su - 环境变量更改
--------------------------------------------
离开系统
#只有root 用户才可以使用
重启
reboot
shutdown -r now
init 6
关机
halt
shutdown -h now
poweroff
init 0
04.
命令 ls -l 长模式
file
#linux文件名没有扩展名
-----------------------------------
linux文件类型
-:一般文件
d:目录文件
b:块设备 软盘...硬盘..
c:字符设备文件 键盘 鼠标...
l:链接文件
p:人工管道
文件类型 拥有者 用户组 其他用户 拥有者u 群组g
- rw-
r--
r-- 1 zhangtianjiao zhangtianjiao 2986 Sep 17 15:13 vi.txt
---------------------------------------
用户类型
用户分为三类
文件拥有者(u)
文件所属组的成员(g)
其他用户(o)
---------------
文件权限类型
读 r 4
写 w 2
执行 x 1
05.
chmod命令
#改变文件权限
# chmod
chmod u+x 文件名 u+权限
chmod u-x 文件名 u-权限
chmod u=rwx 文件名
读
r 4
写
w 2
执行x 1
chmod 644 文件名
#用于更改目录 子目录同时改为指定的权限
chmod -R 777 文件名
06.
建立连接
ln命令
#硬链接
ln 源文件 新建连接名
注意:硬链接不可以跨越文件系统,不能给目录建立硬链接
硬链接和源文件都是单独存在的,但是硬链接的内容源于源文件,源文件修改 硬链接修改,源文件删除硬链接不删除。
#软连接
ln -s 源文件 新建连接名
相当于一个源文件的快捷方式 跨越跨越目录也跨越给目录建立连接
------------------------------------------------
ext2/3 中文件的构成
------------------------------------------------
所属用户
root 更改文件拥有者
chown 更改文件拥有者
#chown 名称 文件名
拥有者和root
chgrp 更改文件所属组
#chgrp 名称 文件名
更改
chown root:root 文件名
-------------------------------------------------
开头.为隐藏文件
07.
目录
set gid对目录的作用
默认情况下,用户建立的文件属于用户当前的用户组
目录上设置了setgid,表示在此文件中,任何人建立的文件, 都会属于目录所属的组。
08、09
关于set gid的用法
#chmod g+s 文件名
如果原文件的群组权限上存在x权限 当设置set gid的时候 群组位的执行权限为s
如果原文件的群组权限不存在x权限 当设置set gid的时候 群组位的执行权限为S
set uid: chmod u+s 文件名 注意:只能设置在文件上 不能目录
set gid: chmod g+s 文件名 注意:目录能设置 g和t
sticky: chmod o+t 文件名 注意:冒险位只能设置在目录上面
强制位于冒险位也可以通过一个数字加和,放在读写执行的三位数前来指定
4777 -> set uid
2777 -> set gid
1777 -> sticky
一起设置 用+法 6777->(set u+g)
取消用 0777
补充信息:强制位与冒险位
除了读写执行权限以外,ext3文件系统还支持强制位(setuid 和setgid)与冒险位(sticky)的特别权限。针对u,g,o,分别有set uid,set gid,及sticky。强制位与冒险位添加在执行权限的位置上。如果该位置上原已有执行权限。则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。强制位set uid与set gid在u和g的x位置上各采用一个s,冒险位(sticky)使用一个t。
强制位对文件的作用
在可执行文件上,用户可以添加set uid和set gid。默认情况下,用户执行一个指令,会以该用户的身份来运行进程。指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。这里有一个很好的例子。你管理着几个大型的数据库系统,而对它们进行备份需要有系统管理权限。你写了几个脚本,并设置了它们的suid,这样你指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其他管理任务,而且在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。另一个例子是/bin /passwd ,要读写/etc/passwd文件需要超级用户权限,但一般用户也需要随时可以改变自己的密码,所以/bin/passwd就设置了suid,当用户改自己密码的时侯就拥有了超级用户权限.
强制位对目录的作用
默认情况下,用户建立的文件属于用户当前所在的组。目录上设置了setgid,表示在此目录中,任何人建立的文件,都会属于目录所属的组。
ls -ld /tmp 查看目录本身而不查看目录其下的文件信息
10.
umask命令
#umask -S 显示详细的信息
在没有umask设置情况下,创建 文件的默认权限位 rw-rw-rw- 666
创建 目录的默认权限位 rwxrwxrwx 777
公式:默认权限-umask权限=现有权限
修改:umask 003
根目录的目录
bin
存储常用用户指令
boot
存储核心 模块映像等启动用文件
dev
存储设备文件
etc
存储系统 服务的配置目录与文件
home
存放个人主目录
lib
存放库文件 诸如核心模块、驱动
lost+found
存放fsck用的孤儿文件
mnt
系统加载文件系统时用的常用挂载点
opt
第三方工具使用的安装目录
proc
虚拟文件系统 包含系统讯息等资料
root
root用户的主目录
sbin
存储系统管理用的指令
tmp
临时文件的储存点
usr
存放于用户直接相关的文件和目录
var
存储在系统运行中可能会更改的数据
11.
过滤器
输入:过滤器的数据来源
输入重定向
#文件大写转小写输出
#tr 'A-Z' 'a-z' < 文件名
从当前文档输入 标准输出重定向
#使用 << 让系统将键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性的输入员
#需要一对字母、符号或者字符串座位起始终结标识符
#可以选择任意符号shu输出重定向
#ls -l >cat.file 输出信息到cat.file 会覆盖
#ls -l >>cat.file 追加信息到cat.file 追加
2 标准错误信息重定向
#ls-l 2> cat.file 将报错讯息文件
#ls-l 2>> cat.file 将报错讯息追加到文件
12.
双重输出重定向
find
#find /etc -name password
#find /etc -name password> stdout 把标准的信息输出 正确的写入文件
#find /etc -name password 2> stdout 把标准的错误输出 正确的写入文件
将正确和错误的信息分别存入不同的文件中,双重输出重定向
#find /etc -name password 2>stderr >stdout
使用&> 将所有信息(错误和正确)的输入都送向同一个地址
#find /etc -name password &> allout
#find /etc -name password > allout 2>&1
两个功能一样的
管道
使用|将前一个过滤器的输出直接送入一个过滤器的输入
分屏显示当前目录的文件
#ls -l | more
拷贝filea到fileb
#cat <filea >fileb
数个file开头的文件合并为一个文件
#cat file.* >file
#cat filea fileb >file
13.
文件查找和文件管理
which命令
显示一个可执行文件的完整路径
按照alias(别名)->$PATH(系统路径)的顺序查找
whereis命令 信息更完整 相关帮助信息、相关源程序等
#which ls
alias ls='ls --color=tty'
/bin/ls
#whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
slocate 和 locate 命令
slocate先将当前目录结构做成一个数据库,然后在次数据库中搜索匹配记录
find 命令
find 路径 参数 表达式
参数说明
-user 根据拥有者查找文件
find ztjtest/ -user zhangtianjiao
-group 根据所属组查找文件
-name 根据文件名查找
-size 根据文件大小
$ find . -size -1000k 小于1M
-type
linux文件类型
f表示
-:一般文件
d表示
d:目录文件
b表示
b:块设备 软盘...硬盘..
c表示
c:字符设备文件 键盘 鼠标...
l:链接文件
p:人工管道
-nouser 查找没有文件拥有者的文件
-nogroup 查找没有文件群组的文件
14.
-perm 根据文件权限查找文件
find . -prem 0644
# touch 6000
# touch 2000
# touch 6600
# touch 4000
# ls
2000 4000 6000 6600
# chmod 2000 2000
# chmod 4000 4000
# chmod 6000 6000
# chmod 6600 6600
# ll
total 0
------S--- 1 zhangtianjiao zhangtianjiao 0 Oct 24 23:51 2000
---S------ 1 zhangtianjiao zhangtianjiao 0 Oct 24 23:52 4000
---S--S--- 1 zhangtianjiao zhangtianjiao 0 Oct 24 23:51 6000
-rwS--S--- 1 zhangtianjiao zhangtianjiao 0 Oct 24 23:52 6600
# find . -perm 6000
./6000
# find . -perm -6000
./6000
./6600
- 符号就是有1的地方必有1
+ 符号只要有一个1即可
6000 二进制->110 000 000 000
6600 二进制->110 110 000 000
2000 二进制->010 000 000 000
4000 二进制->100 000 000 000
-exec 指令{} \
{} 代表find 找到的文件
\ 禁止转义
- 表示本行指令结束
find /root/test -perm 6000 -exec chown jack.jack {} \;
15.
常用的文件操作指令
wc指令
统计 行 字数 一起的字符数 内容
[zhangtianjiao@quwan ztjtest]$ wc log.txt
1 2 17 log.txt
#wc -l abc (line) 行数
#wc -w 字数
#wc -c 字符数
grep指令
显示文件中匹配关键词的行
grep "a" abc
grep -n "a" abc 显示行号
grep -v "a"
abc 查找没有a字符串的行
sort指令
sort -l
-t
-k
diff 报告文本差异内容
comp 报告文件差异位置
uniq 去除文件中重复的行
cut命令
显示文件中的某一列
#cat cut.txt
a
1
j
b
2
k
c
3
c
#cut -f3 cut.txt 截取第三列
j
k
c
#cat cut1.txt
any,
[email protected]
tom,
[email protected]
#cut -f2 -d, cut1.txt
[email protected]
[email protected]
#cut -f2 -c4-8 cut1.txt 截取字符4 8的串
,any@
,tom@
paste 将文本案列拼接
#paste abc ABC > merge
#cat abc ABC > merge1 ->用cat拼接垂直方式拼接
16
文件的压缩
gzip gunzip== gzip -d 解压
Linux标准压缩工具
只能对文件压缩,不能对目录压缩
zcat 查看压缩文件内容
zcat filename.gz
compress uncompress
旧的Unix 压缩工具
bzip2 bunzip2 == bzip2 -d 进行解压功能上 一样的
更新的Linux压缩率
比gzip有着更高的压缩率
bzcat 查看压缩文件
tar指令 打包 备份
主要参数
c 将文件备份出来
v 将过程输出
x 从一个问价中接触备份
范例:f后紧跟要打包的文件名 在以前的linux版本中 现在不作要求
tar cvf backup.tar *.txt
tar xvf backup.tar -C bacup/ <-指定路径
查看tar包文件的内容: tar tf tar包
将打包文件指定目录
tar cvf 2.tar install.log -C /home
先打包后压缩
tar zcvf test.tar.gz test
解压 tar zxvf test.tar.gz
17
zip2打包压缩
#tar jcvf test3.tar.bz2 test
解压缩使用bzip2 打包压缩的文件
#tar jxvf test3.tar.bz2
bzip2 gzip 只能打包文件 可以配和这tar 进行对目录的解压缩
dump/restore命令
备份与还原ext2/3文件系统
不可以在其他文件系统上使用
可以选择进行完全备份或者增量备份
范例
#dump -0u -f /var/tmp/hda2dump /dev/hdal
上面命令的意思是 将目录 /dev/hdal 文件全部备份到/var/tmp/hda2dump下 并将记录 记录到/etc/dumpdata下
其中1、-0备份等级,是全部备份的意思(0-9)
2、-u是将备份日志记录到/etc/dumpdatas下(注意的是只有备份的目录没有子目录的时候才能使用u)
如果要备份的目录是子目录就不能使用-u参数
#restore -rf /var/tmp/hda3
其中1、-r 还原操作
2、-f指定备份文件
3、-t 查看备份文件内容
restore -tf /var/tmp/hda3
还原文件 指定还原路径切换到还原路径执行命令
18第七讲 BASH
shell简介
shell 命令解析器 是用户与系统沟通的媒介
unix系统中有各种shell ,linux用bash为其默认shell
系统可以使用shell种类,记录在 /etc/shells中
linux变量分为两种:本地变量 和环境变量
set 查看系统中所有的变量
env 查看环境变量
bash 支持命令 行输入、操作历史查询、快捷键、使用变量等功能
设置变量
#a=zhangtianjiao
#echo $a
zhangtianjiao
#a=$a123
#echo $a
unset删除变量
预定义环境变量
HOME 当前用户的主目录
PATH 当前用户的可执行文件搜索路径
LANG 程序使用的默认语言 更改语系给LANG赋值
PS1 行提示符
locale -a 查看所有语系
19第七讲
PS1 提示符
[zhangtianjiao@quwan ~]$ echo $PS1
[\u@\h \W]\$
特殊字符 \d 日期
\H 完整的主机名
\h 仅仅获取主机的第一个字(单词)
\t 小时 24小时制 时分秒
\T 12小时制
\A 小时 24小时制 时分
\u 当前用户名称
\v bash版本
\w 完整的工作目录 root ~
\W basename命令
[zhangtianjiao@quwan ~]$ basename /etc/x
xdg/ xinetd.conf xinetd.d/ xml/
[zhangtianjiao@quwan ~]$ basename /etc/xml
xml
\# 执行的第几个命令bash
\$ 提示符 如为root为#号 普通为$符号
环境变量为大写 一般变量用小写
普通变量转换为 环境变量
命令为export +变量名称
20 、21
alias 别名
查询alias命令
#alias
设置alias命令
#alias a='ls -al'
取消别名
#unalias a
alias 记录在shell中总是先行
命令行表达式
命令行输出:""
将一串字符当成一个字符串来对待,如果字符串包含特殊字符,则转义(此转义并不是代码中的转义字符什么的) 除了注意:$ \ ` ! 不能禁止
命令行输出:''
将一串字符当成一个字符串来对待,如果字符串包含特殊字符,不转义(此转义并不是代码中的转义字符什么的)
注意:把所有的符号按照普通符号对待
执行引用符号:``(线性符号 ESC下的)
引用命令的执行结果,执行引用符号里面的命令最先执行的
#ls -al `pwd` 就等于 #ls -al /root
``线性符号把结果集传送给了前面的命令行
22
命令行表达式(二)
·数学运算-----$[] 在括号内的表达式会被数学计算
# echo $[4+1]
5
运算机理是 先运行括号内的运算 然后赋值给一个临时变量在输出
·逸脱符-----\ 用于取消命令行字符的特殊含义,用于表示一行未结束
例 建立一个a b的目录
使用 # mkdir a b 就会出现两个目录 这个时候要用 \符号 # mkdir a\ b 就能实现了
当命令很长时可以使用\来连接上命令不会断
命令行表达式(三)
·命令行结束符-----;
用于一行内分割两个独立命令,表示一行己结束,作用相当于回车键
#pwd; ls -l
·子shell激活 -----()
在小括号内的命令行表示激活一个子shell后在子shell中运行
# echo $HOME
# /root
# HOME=/user
# echo $HOME
# /user
# HOME=/root
# (HOME=/user) 激活了子shell 在子shell中运行 并且子shell的变量吧不会传递给另一个shell 不会影响
# echo HOME
# /root
逻辑运算符
&& 逻辑 与 前一条OK 在执行下面一个
# ls /home && touch /home/test1
||逻辑 或
# ls /root/test1 || mkdir /root/test1 前一个不OK 再执行下面一个