/bin:所有用户都可以使用的命令所在的位置(系统默认的命令)
用户:普通用户和管理员用户
/sbin:只有管理员可以使用的命令(比如关机和磁盘格式化)
/boot:内核所在位置
/dev:设置文件所在目录 比如/dev/sda或者 /dev/hda
/etc:配置文件所在的目录
/home:用户的主目录(包括用户的配置文件信息、也就是用户在登录的时候最先进入的目录)
/initrd:虚拟设备
/lib:库目录
/lost+found:类似于回收站
/mnt:光盘或者软盘的加载点 用mount命令加载
/opt:第三方软件的安装目录
/root:root帐号的主目录
/tmp:临时文件目录
/usr:用户目录:用户的安装的文件(比如jdk就装在这里)
/var:保存的文件大小不确定(比如日志文件、用户的邮箱)
---------------------------------------------------------------------
用户管理的相关命令:
查看系统所有的用户:cat /etc/passwd
用户的信息保存在/etc/passwd
创建用户:useradd username
比如useradd h1
首先在/etc/passwd写入h1的帐号信息,用户的主目录/home中会生成一个h1目录
切换用户: su - username
比如su - h1
设置密码:passwd username
比如 passwd h1
删除用户:userdel username(这条命令是不会删除home中的该用户的主目录的)
userdel -r username(删除用户和用户的主目录)
显示当前用户:whoami
id username 显示用户具体信息
exit:如果是管理员的话就退出终端,如果是普通用户的话,就切换到管理员
who命令可以查看已经登录的用户!!!
pts:伪终端
管理员可以更改所有的用户密码,普通用户只能够更改自己的密码。
==================================================================
sort:排序命令,对输出结果排序,不会影响原文件。
比如sort -r /etc/passwd :就是将所有系统用户给反向排序
sort /etc/passwd:就是正向排序
uniq filename:对结果去掉连续重复的行,对源文件是不影响的。
新建空文件:
touch filename
用ls -l可以显示大小。
wc:统计文件的行数
比如wc -l /etc/passwd可以统计系统用户中有多少个用户
grep:对文件内容做查找操作,找的是含有特定关键字的所有行
grep root /etc/passwd
查找系统帐户中含有“root”关键字的信息
find /etc -name "*.conf"
在etc目录中查找所有扩展名是conf的文件
ls -l :显示当前目录中的文件以及文件的所有者
chown username:groupname filename
chown root:t1 f1 这就是将f1文件归为root用户了,注意t1是组名
chgrp groupname filename :改变所属的组
打开telnet服务,监听的端口是23
1、cd /etc/xinetd.d
2 vi krb5-telnet
把disable=yes 改为no
3 重新启动xinetd服务
service xinetd restart
chkconfig --list查看所有的服务
tar命令:打包、归档命令、把多个文件归档为一个文件,作为备份
tar -cvf 1.tar host.conf ld.so.conf
这就是说将host.conf和ld.so.conf归档为1.tar就可以了。
tar -xvf 1.tar 就可以将档中的两个文件弄出来了!
tar -cvf filename.tar filelist (*.conf)归档命令。
tar -xvf filename.tar:展开归档文件
c:create
x:extract
v:verbose
f:file
tar 命令本身不做任何压缩操作,如果要压缩的话还是需要使用压缩的工具。
压缩工具:gzip bzip2
ls -lh显示当前目录中所有文件详细信息。
这里特别注意如果ls -l的命令显示文件的信息的时候,大小的单位只能是字节!!
用ls -lh显示的时候就有kb、mb等单位了,看着舒服。
gzip filename 压缩后的文件是原来的文件名加上gz扩展名。
bzip2 filename 压缩后的文件filename.bz2
以上两种压缩方式后者压缩比例更高一些。
如果要是想压缩多个文件的话就是先打包(tar包)然后在压缩tar包。
解压:gzip -d filename.gz
bzip2 -d filename.bz2
man command是帮助,也就是说如果你想知道某个command的使用方式,那么你可以
使用man命令。
tar czvf filename.tar.gz filelist
比如tar czvf yuan.tar.gz *.conf
这就是将所有的conf文件打包的同时压缩!
tar -xzvf filename.tar.gz命令就是对应的解压tar包了
网上提供下载的几乎都是tar.gz,几乎都用上面的命令解压!
==========================================================================
安装mysql
从光盘安装自带的客户端工具:
在图形化linux界面里面的终端输入redhat-config-packages(这一步其实是为了得到etc中的
my.cnf配置文件!!!!)
然后添加mysql的客户端
然后下载mysql.tar.gz
tar -xzvf mysql.tar.gz
解压缩后,
1、useradd mysql新建一个mysql帐户,不用设置密码
2、scripts/mysql_install_db --user=mysql (用刚才建的帐户)
(执行完后/var/lib下应该有个mysql才对)也就是安装数据库
3、chown -R root mysql-max-5.0.11-beta-linux-i686 将当前目录所有者改为root。
4、chown -R mysql data (将数据data目录的所有者设为mysql)
5、chgrp -R mysql mysql-max-5.0.11-beta-linux-i686 改变所属的组
注意:第3、4、5步不是必须的。
6、mkdir /var/run/mysqld(创建进程文件的文件夹)
7、chown -R mysql:mysql /var/run/mysqld
8、chown -R mysql:mysql /var/lib/mysql (注意lib中的mysql是数据文件)
mysql:mysql的意思是,冒号前面的是所有者,冒号后面的是所属的组!
最后在mysql的bin目录下
用bin/safe_mysqld --user=mysql命令启动mysql服务
然后输入mysql命令就可以进入mysql了
killall -9 mysqld :停止mysql进程!
=====================================================================
进程管理和权限管理的问题:
进程管理是通过ps来实现的……
ps -ef 显示当前进程的情况
kill -9 pid
ps -ef | grep mysql 可以列出和mysql有关的进程
kill -9 进程号就可以一个一个的终止进程。
xclock :显示当前时间
showdatabases;
create database db1 ;
use db1 ;
show tables ;
create table t
(
id int not null primary key auto_increment
name varchar(30) not null
)
insert into t (name) values ('Jack');
insert into t (name) values ('Jane');
让mysql支持远程连接……
use mysql ;
desc user;
select user,host,password from user ;
update user set host='%' where user='root' and host='localhost.localdomain';
update user set password=password("123") where host='%';
flush privileges ;
在bin目录中执行:
mysql -A -h 162.105.81.225 -u root -p
import java.sql.* ;
public class H
{
public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://162.105.81.225:3306/db1","root","123") ;
Statement stmt = conn.createStatement() ;
ResultSet rs = stmt.executeQuery("select id,name from t");
ResultSetMetaData rsmd = rs.getMetaData() ;
System.out.print(rsmd.getColumnCount()+"/t");
while(rs.next())
{
for(int i = 1 ; i <= rsmd.getColumnCount(); i++)
{
System.out.println(rs.getObject(i) + "/t");
}
System.out.println();
}
conn.close() ;
}
};
javac -d . H.java
java com.test.H
==========================================================================
shell本身是一个用C语言写的程序
本身它是一种命令语言,又是一种程序设计语言。
shell是命令解释器,由shell解释执行。
linux的shell是bash
除此之外,还有c和ksh的shell
echo $SHELL
可以看到当前命令解释器的信息。
每一个进程都有三个特殊的文件描述指针:
标准输入是0,标准输出是1,标准错误输出是2
> 是输出重定向:(以覆盖的形式)
>>是以追加的形式(非覆盖,而是在后面继续输出)
ls > 1.txt
这就是将ls命令的结果放到了1.txt中去显示了
$var来取变量的值。
比如 echo $PATH
echo $CLASSPATH
shell定义有环境变量
HOME、PATH
vi h1
a=100
echo $a
. h1 是运行这个h1文件。
===================================================
位置参数:
vi编辑h2:
b=1000
echo $b
echo $1
然后 .h2 2000
会输出1000
2000
$1代表第一个位置参数!
如果是$2的话,那么一定会显示出1000和第二个提供给程序的位置参数。
$#代表位置参数的个数、$*代表所有位置参数的内容
流程控制:条件、分支、循环
shell用于指定条件值的不是布尔表达式而是命令和字符串。
-eq:
-ne
-gt
-ge
-lt
-le
如果存在/test01/h1,就输出ok
if test -e /test01/h1 ; then
echo "ok"
fi
if [ -e /test01/h1 ] ; then
echo "ok"
fi
上面两种写法是等价的!
-e说明存在即可,文件或是文件夹都无所谓
-f只是针对文件!!
-----------------------------------------------------
循环:
for i in 1 2 3
do
echo $i
done
//做数值运算的时候用两个括号,判断文件是否存在的话用中括号
i=1
while(( i<=10 ))
do
echo $i
let i+=1
done
乘法口诀表:
a控制行、b控制列。
echo -n "abc" -n就是允许不换行输出abc
echo -n -e "abc/t" -e其实就是允许有转义字符
程序:
a=1
b=1
while (( a <= 9 ))
do
while (( b <= a ))
do
let c=a*b
echo -n -e "$b*$a=$c/t"
let b+=1
done
echo ""
let b=1
let a+=1
done
在shell编程里面其实双引号没有太大的意义,写不写两可
比如:
a=10000
echo $a
echo "$a"
是没有区别的
但是 echo '$b'
是原样输出$b这个字符!!
vi /etc/bashrc
在bashrc中的最后加上:
alias net1="netconfig"
就可以让net1和netconfig有相同的命令效果了。
=======================================================
case条件选择:
case $1 in
"123")
echo "1"
;;
"456")
echo "2"
;;
"abc")
echo "3"
;;
"789")
echo "4"
;;
*)
echo "sssssssssssssss"
esac
这样一来,如果输入 . 文件名 789
那么由于第一个位置参数是789,则打印4
===================================================
接收键盘输入:
echo -n "Please input your name: "
read userName
echo "Your name: $userName"