linux 命令 锦集 持续更新中....[2012.02.01更新]

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 再执行下面一个



































 































你可能感兴趣的:(linux,数据库,shell,bash,disk,数学计算)