shell:
实现对系统管理如:
文件管理 (创建,复制,删除.)
用户管理 (创建用户、组)
文件权限管理
磁盘管理
一、bash Shell特性:
0. bash语法
命令 选项 参数
==命令是主体
==选项会影响到命令行为 一般以-或--开始
==参数是命令作用的对象
# useradd alice
# passwd alice
# su - alice
# exit
# reboot
# poweroff
# date
# date -s 12:30
# date 120113502012 date 月日时分年
# cd /root
# ls 查看当前目录的内容
# ls -a 查看当前目录的内容(包括隐藏)
# ls -l 查看当前目录的内容(以长模式)
# ls -l -h -h, --human-readable
# ls -la
# ll (等价于ls -l)
# ls / 查看/的内容
1. 命令和文件的自动补齐
# ll anaconda-ks.cfg
# ll /dev/sda*
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# service network restart
server
2. history命令历史记录
# history 仅查看历史记录
==使用历史记录
a. 光标上下键
b. # !28
c. # !da 执行历史记中最近以da开头的命令
d. # !! 执行上条命令
e. # !$
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# ll !$ !$上一条命令的最后一个参数
f. # ctrl + r 在搜索中输入想找命令的一部分
3. 快捷键
^l ^r ^c ^d ^a ^e
4. 命令别名
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# alias cet0='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
[root@server ~]# alias 查看当前定义所有别名
alias cet0='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
注: 别名优先
/bin/ls
alias ls='ls --color=auto'
# unalias date 取消别名
不使用别名:
[root@server ~]# /bin/date 方法一
2012年 12月 01日 星期六 13:51:10 CST
[root@server ~]#
[root@server ~]# \date 方法二
2012年 12月 01日 星期六 13:51:19 CST
二、在Linux中获得帮助
==命令使用方法
# ls --help
# man useradd 命令:
搜索 /内容 /EXAMPLE n下一个 N上一个
退出 q
将光标移动最后一行 G
将光标移动第一行 gg
# man genisoimage
==服务配置方法
示例:查看nfs服务的配置 nfs服务配置文件是: /etc/exports
# man exports
# man vsftpd.conf /etc/vsftpd/vsftpd.conf
# man httpd /etc/httpd/conf/httpd.conf
# man smb.conf /etc/samba/smb.conf
技巧:
1. 使用关键字检索
[root@server ~]# man -k '_selinux' |grep ftp
ftpd_selinux (8) - Security Enhanced Linux Policy for the ftpd processes
ftpdctl_selinux (8) - Security Enhanced Linux Policy for the ftpdctl processes
tftpd_selinux (8) - Security Enhanced Linux Policy for the tftpd processes
# man ftpd_selinux 手册名
作业:
[root@server ~]# ll /usr/bin/passwd 修改用户口令的命令
-rwsr-xr-x. 1 root root 30768 2月 17 2012 /usr/bin/passwd
[root@server ~]# ll /etc/passwd 保存用户信息的账号文件
-rw-r--r--. 1 root root 1691 12月 4 2012 /etc/passwd
[root@server ~]# man passwd
[root@server ~]# man 5 passwd
[root@server ~]# man -k 'passwd'
passwd (1) - update user's authentication tokens
passwd (5) - password file
更详细的文档:/usr/share/doc
例如:学习PAM
# ls /usr/share/doc/pam-1.1.1/html/
对于html文档:
方法一:
1. 打开firefox
2.
方法二:
# firefox /usr/share/doc/pam-1.1.1/html/sag-pam_mail.html
shell之文件管理:
=============================================================
1. linux文件系统层次结构
单根的结构
根目录下的重要目录:
/boot 和启动相关文件kernel,grub,initrd,initramfs
/bin 普通使用的命令, /bin/ls, /bin/date
/dev 设备文件 /dev/sda,/dev/sda1,/dev/sr0
/etc 配置文件*****, 一般都是文本文件
/home 普通用户家目录的小区 alice家目录: /home/alice
/lib,/lib64 标准库文件,32位,64位
/media /mnt /misc 常见设备挂载目录
/opt 一般是第三方软件安装目录
/proc 虚拟文件系统(不占用磁盘空间,只在内存),存放的是kernel,进程的一些状态信息
/root root用户的家目录
/sbin 超级用户使用的命令
/lost+found 孤儿文件
/usr 系统文件
/var 经常变化的文件,日专文件,数据库文件...
2. 路径 cd
# ls -a
. 链接到当前目录
.. 链接到上一级目录
绝对路径:绝对能表达到达目标的路径
. 从/开始
. # cd ~alice
相对路径:
..
3. 常见的文件管理命令: pwd,ls,cd,touch,mkdir,cp,mv,rm
ls -a -l -h -d --full-time
cd 相对路径 绝对路径 -(返回) (直接cd,回自己的家)
touch 创建空文件 # touch 文件名1 文件名2 (不存在)
修改文件时间 # touch root.iso(已存在)
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss]
# touch -a -t 1501011200 root.iso
================================================================
小知识: 文件时间
ll 时间,仅最后修改时间
[root@server ~]# stat root.iso
File: "root.iso"
Size: 1587200 Blocks: 3104 IO Block: 4096 普通文件
Device: fd00h/64768d Inode: 926029 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-12-01 14:13:53.332670866 +0800
Modify: 2012-12-01 14:13:53.378794323 +0800
Change: 2012-12-01 14:13:53.378794323 +0800
atime: 访问时间 访问过内容
mtime: 修改时间 修改过内容
ctime: 改变时间change 文件的属性,比如权限
================================================================
# mkdir dir1
# mkdir aaa bbb
# mkdir /home/dir2
# mkdir -p /home/dir3/aaa 创建目录结构
# mkdir -v /home/dir5
[root@server ~]# mkdir -v /home/dir8 /home/dir9
mkdir: 已创建目录 "/home/dir8"
mkdir: 已创建目录 "/home/dir9"
[root@server ~]# mkdir -v /home/{dir10,dir11}
mkdir: 已创建目录 "/home/dir10"
mkdir: 已创建目录 "/home/dir11"
[root@server ~]# mkdir -vp /home/{dir12/{aaa,bbb},dir14}
mkdir: 已创建目录 "/home/dir12"
mkdir: 已创建目录 "/home/dir12/aaa"
mkdir: 已创建目录 "/home/dir12/bbb"
mkdir: 已创建目录 "/home/dir14"
cp用法:
cp [选项]... 源文件... 目录
[root@server ~]# cp -v day1.txt /home/dir2/
"day1.txt" -> "/home/dir2/day1.txt"
[root@server ~]# cp -v day1.txt /home/dir2/aaa.txt
"day1.txt" -> "/home/dir2/aaa.txt"
[root@server ~]# cp -v day1.txt install.log root.iso /home/dir2/
cp:是否覆盖"/home/dir2/day1.txt"? y
"day1.txt" -> "/home/dir2/day1.txt"
"install.log" -> "/home/dir2/install.log"
"root.iso" -> "/home/dir2/root.iso"
[root@server ~]# cp /etc/passwd /etc/hosts /etc/sysconfig/network-scripts/ifcfg-eth1 .
不使用别名的三种方法
[root@server ~]# /bin/cp -f day1.txt /home/
[root@server ~]# \cp -f day1.txt /home/
[root@server ~]# unalias cp 临时删除别名
[root@server ~]# cp -f day1.txt /home/
[root@server ~]# cp -rf day1.txt dir1 dir7 /home/
[root@server ~]# \cp -rf day1.txt dir1 dir7 /home/
[root@server ~]# rm -rf dir1 dir7
正确的删除方法:
[root@server ~]# cd /home/
[root@server home]# rm -rf dir1
[root@server ~]# mv aaa /home/
[root@server ~]# mv -v passwd /home/passwd1
"passwd" -> "/home/passwd1"
已删除"passwd"
# mv bbb ccc 将bbb改成ccc
4. Linux文件的类型
查看文件类型:
4.1 ls 以长模式看第一个字符
- 普通文件 (文本文件、二进制文件/bin/ls、音频、视频、压缩....)
d 目录文件
b (块)设备文件 /dev/sda
c (字符)设备文件 /dev/tty1,/dev/tty2,/dev/pts/0
l 链接文件
s socket套接字文件
p 管道文件
4.2 file
[root@server ~]# file /bin/date
/bin/date: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
[root@server ~]# file day1.txt
day1.txt: UTF-8 Unicode English text
[root@server ~]# file /dev/sda
/dev/sda: block special
[root@server ~]# file /dev/tty1
/dev/tty1: character special
[root@server ~]# file /dev/stdin
/dev/stdin: symbolic link to `/proc/self/fd/0'
[root@server ~]# ll /dev/ |grep ^s
srw-rw-rw- 1 root root 0 12月 5 16:35 log
[root@server ~]# file /dev/log
/dev/log: socket
====================================================================
修改,查看的文件:文本文件
5. 查看文件的内容
5.1 查看文本文件 cat more less head tail
# cat /etc/hosts
# cat -n /etc/hosts
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# less /etc/passwd 支持上下、查找
# head /etc/passwd 头10行
# tail /etc/passwd
# tail -20 /var/log/messages
# tail -f /var/log/messages 动态查看文件 打开一个终端 logger xxxx
5.2 查看二进制文件
# strings /bin/ls
6. 过滤文件内容 grep egrep
# grep 'root' /etc/passwd
# grep --color 'root' /etc/passwd
# grep --color '^root' /etc/passwd ^root表示以root开头的行
# grep --color '/bin/bash$' /etc/passwd
# egrep --color '^alice|^root' /etc/passwd |或者
7. 文本编辑 vi ==> vim
# vim /etc/sysconfig/network 修改主机名
# vim /etc/hosts
# vim /etc/resolv.conf
# vim /etc/sysconfig/network-scripts/ifcfg-eth1 //# ip addr查看IP
命令模式:
1. 复制,删除文本
x 删除一个字符(光标所在处)
dd 删除一行 2dd删除2行(从光标所在行开始)
yy 复制一行 2yy
p 粘贴(粘到光标所在行的 下一行)
u 撤消
D 从光标处删除至行尾
2. 进入其它模式
i 进入插入模式
o 进入插入模式,下一行
: 进入末行模式
末行模式:
1. 保存退出 :q :q! :wq :wq!