Shell命令
系统维护命令
linux系统版本信息:
内核版本: cat /etc/issue
发型版本: uname -a
关机命令 shutdown poweroff init 0
重启命令 reboot init 6
history ==>显示当前终端下输入命令的历史记录
history -c 清空历史记录
注意:方向键 上下建可以翻出前期输入的命令
whereis ===>查询当前系统中的程序所在路径
whereis ls
which ===>查询当前环境变量和系统路径中的程序
which ls
env ===>列出当前系统的环境变量
df ===>显示当前各个目录所占磁盘空间大小
df 或
df -h ==>显示方式方便人类直接的识别的数据大小
du ====>显示文件大小的命令
du -h 显示人类直接识别的数据大小类型
du 路径 -h 显示指定位置下所有文件的大小
du -ah 显示所有文件包括隐藏文件
clear ==》清理屏幕命令 等价与快捷方式: ctrl+L
快捷方式:alt + tab 可以在多个不同终端间切换。
help ===》查看当前系统中所有的内置命令
获取命令的方法:
1、如果不知道命令名称: ===》鸟哥。。。
2、如果直到名称: man xxx
xxx --help
3、google baidu
磁盘管理
fidisk -l 将系统内的能找到的分区设备罗列处理
fdisk /dev/sdb4 将某一个分区重新划分
m:显示命令
d:删除一个分区
n:添加一个分区
e:扩展分区
p:主分区
p:显示分区列表
q:不保存退出
w:保存退出
将磁盘格式化 mkfs [-t 文件系统格式] 设备名
mkfs -t ext4 /dev/sdb4
mkfs -t vfat /dev/sdb4
文件
BASH Shell 对文件进行管理
创建、复制、删除、移动、查看、编辑、压缩、查找
内容提要:
Linux目录结构
文件定位 路径
文件管理
一、Linux目录结构
Windows: 以多根的方式组织文件 C:\ D:\ E:
Linux: 以单根的方式组织文件 /
/目录结构: FSH (Filesystem Hierarchy Standard)
[root@tianyun ~]# ls /
bin dev lib media net root srv usr
boot etc lib64 misc opt sbin sys var
cgroup home lost+found mnt proc selinux tmp
注:下图为Centos7目录结构
bin 普通用户使用的命令 /bin/ls, /bin/date
sbin 管理员使用的命令 /sbin/service
dev 设备文件 /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero, /dev/null, /dev/random
root root用户的HOME
home 存储普通用户家目录
lost+found fsck修复时,存储没有链接的文件或目录
proc 虚拟的文件系统,反映出来的是内核,进程信息或实时状态
usr 系统文件,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
boot 存放的系统启动相关的文件,例如kernel,grub(引导装载程序)
etc 配置文件(系统相关如网络/etc/sysconfig/network,应用相关配置文件如/etc/ssh/sshd_config…)
lib 库文件Glibc
lib64 库文件Glibc
tmp 临时文件(全局可写:进程产生的临时文件)
var 存放的是一些变化文件,比如数据库,日志,邮件…
mysql: /var/lib/mysql
vsftpd: /var/ftp
mail: /var/spool/mail
cron: /var/spool/cron
log: /var/log
临时文件: /var/tmp(进程产生的临时文件)
设备(主要指存储设备)挂载目录
media 移动设备默认的挂载点
mnt 手工挂载设备的挂载点
misc automount进程挂载
net automount进程挂载
命令存储位置:
/bin 普通用户使用的命令 /bin/ls, /bin/date RHEL7淘汰
/sbin 管理员使用的命令 RHEL7淘汰
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
库文件存储位置:
/lib 库文件Glibc RHEL7淘汰
/lib64 库文件Glibc RHEL7淘汰
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
==================================================================
***文件时间
ls -l 文件名 仅看的是文件的修改时间
Linux文件有四种时间:
stat anaconda-ks.cfg //查看文件的详细属性(其中包括文件时间属性)
访问时间:atime,查看内容 //RHEL6会延后修改atime
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限
删除时间:dtime,文件被删除的时间
[root@tianyun ~]# ls -l install.log
-rw-r–r-- 1 root root 34793 10-23 13:49 install.log
[root@tianyun ~]# stat install.log
File: “install.log”
Size: 34793 Blocks: 80 IO Block: 4096 一般文件
Device: 802h/2050d Inode: 65282 Links: 1
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2012-10-23 16:53:20.000000000 +0800
Modify: 2012-10-23 13:49:46.000000000 +0800
Change: 2012-10-23 13:49:52.000000000 +0800
注:RHEL6开始relatime,atime延迟修改,必须满足其中一个条件:
- 自上次atime修改后,已达到86400秒;
- 发生写操作时;
文件管理命令
文件操作:
“一切皆文件”
“没有消息就是好消息”
linux文件系统的组织结构是一个"倒树状"
任何文件的开始路径,始于/,我们尊称为根目录。、
相对路径:指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。
绝对路径:以“/”为起始`的路径称为绝对路径。
ls 命令 ==》列出指定文件信息
ls 回车 列出当前默认路径下文件信息
eg: ls
ls 路径 回车 列出指定的路径下文件信息
eg: ls /mnt/nfs/rpm
注意: ll 等价于 ls -l
ll 比ls 列出的文件信息更全。
3、cd 命令 ==》修改文件工作目录命令
cd 回车 ==》回到自己的家目录
cd - 回车 ==》回到上次的工作目录
cd … 回车 ==》回到上级目录
cd …/…/ 回车 ==》回到上级的上级目录
cd 路径 回车 =》进入到指定路径下的目录
注意路径必须是个目录
4、pwd 命令:=》列出当前位置的绝对路径
pwd 回车
文件创建:
mkdir ====》创建一个空目录文件
mkdir xxx ==>默认在当前路径下创建空目录
mkdir xxx/yyy/zzz ==>在指定的路径下创建空文件
注意:在创建过程中路径要完整并存在。
touch =》创建一个空普通文件
touch xxx=>默认当前创建
touch xxx/yyy ===>指定路径创建
文件的删除:
rmdir ===>删除一个空目录
rmdir xxx ==>默认删除当前路径下的xxx目录
注意要求该目录必须是空的
rm ===》删除一个文件
rm xxx ===>默认删除普通文件并提示用户
rm -f xxx ===>不提示用户直接删除,慎用!!!!
rm -r xxx ==>删除指定的目录,不论目录是否为空
rm -rf xxx ==>不提示并直接删除目录,慎用!!!!
文件的查看:
目录: ls ll
普通文件:
cat xxx ==》在终端中打印输出xxx文件的内容。
more xxx ==》从文件开头向终端输出文件内容
空格翻屏
回车翻行
less xxx ===》从文件开头向终端输出文件内容
空格翻屏
回车翻行
以上more less 都是按q键退出。
head xxx ==》查看文件的前几行,默认是10行
head -n 100 xxx 查看文件的前100行
tail xxx ==》查看文件的后几行,默认是10行
tail -n 100 xxx 查看文件的后100行
文件的编辑
1、vi /vim
2、gedit ===>linux 下的文本编辑器类似写字板
gedit xxxx
练习:
cat stdio.h
more stdio.h
less stdio.h
more 和 less 的区别: 1、百分比
2、方向键
文件的移动命令:
1、cp 拷贝命令
cp src dest
含义:将src所在的文件拷贝到dest目标位置。
eg: cp stdio.h stdio2.h ==>在当前路径下拷贝文件并重新命名
cp /usr/include/stdio.h /root/160411/cyuyan
将 路径 ^下的stdio.文件拷贝到 ^路径下
注意:源文件必须存在,否则提示找不到文件。
目标文件可以不存在,则创建该文件,如果存在,则覆盖目标文件
如果拷贝目录要加选项 -r ,否则出现略过目录
cp xxx/ yyy/ -r
文件的移动命令
mv 移动命令
mv src dest
含义:将src所在文件移动到指定的dest目标
eg:mv stdio.h ./test
mv /root/160411/stdio2.h /root/160411/test2
mv test test2
注意:mv命令会将src源文件完整移动到指定位置同时源位置没有该文件。
移动过程中如果目标有同名文件则覆盖目标没有同名文件 则创建
特例:经常用mv 命令修改文件名称。
练习:
在自己的家目录下新建一个test目录
在test目录中新建a.c b.c c.c 三个文件
在test目录中新建一个test2目录
将a.c 拷贝到test2目录中
将b.c 移动到test2目录中
文件属性修改命令:
普通文件的权限: rw-r–r-- =》644
目录文件的权限: rwxr-xr-x =》755
其中:r 读权限=》 对应8进制数字 4
w 写权限=》 对应8进制数字 2
x 执行权限===》对应8进制数字1
三组分别: 当前用户 组用户 其他用户
1、修改权限命令 ===》chmod 权限 文件名称
eg: chmod 600 abc ==>将文件abc的权限修改为600==rw-------
eg: chmod +r abc
chmod +x abc
chmod -r abc
chmod -w abc
2、修改属主命令 ===》chown 属主 文件
eg: chown 123 abc ==>将abc文件的的拥有者该为cqb用户
chown kingyi:123 abc ===>将文件的拥有着改为kingyi,组改为123
注意:修改属主的时候,目标用户必须存在。
3、文件属性查看:
ll xxx ==>简单以列表形式列出文件信息
stat xxx ==》详细列出文件属性信息。
其中xxx可以是普通文件也可以是目录文件
特殊的文件 ===>链接文件:
1、软链接文件 ==》相似于windows的快捷方式
ln -s srcabc linkabc
含义:-s 表示一个软链接文件
srcabc 表示一个源文件
linkabc 表示一个链接文件
注意:软链接要求必须保证源文件存在,否则会链接不上。
2、硬链接文件
ln srcabc linkabc
含义:将srcabc文件制作一个硬链接到linkabc
特征:如果源文件存在,则修改linkabc会同步到源文件
如果源文件不存在,则修改linkabc会保留原始文件。
用户管理命令
用户管理命令 ===》linux系统是一个多用户用任务系统
1、新建用户 ==》adduser / useradd
adduser xxx
useradd xxx
===>cat /etc/passwd
2、设置用户密码 ===》passwd
passwd 用户名称
==》验证用户登录测试。su 用户名称
==》如果从root向其他用户切换不需要密码
其他用户之间切换或者向root切换都需要密码
===》注意如果直接 passwd 回车修改的是root密码
2.1 切换用户:su 用户名称
su cqb
su root
3、删除用户 ===》userdel 用户名称
rm -rf /home/xxx
在ubuntu中创建新的用户并在登录界面实现新用户的登录
首先创建新的用户 sudo useradd -r -m -s /bin/bash abc
更改用户密码: sudo passwd abc
编辑文件实现登录界面
sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在最后添加:greeter-show-manual-login=true
修改文件 sudo vim /root/.profile
将文件的最后一行改为 tty -s && mesg n || true
修改配置文件:vim /etc/sudoers
将root ALL=(ALL:ALL) ALL复制,在下一行中写
xxx ALL=(ALL:ALL) ALL 其中xxx为用户名
4、终端用户切换使用:
字符终端: ctrl+alt+f1 … f7 ==>f1是可视化界面
who 命令 ===》查看当前主机上的登录用户
tty? ===>真实的纯字符登录界面
pst/? ===》虚拟终端,字符终端在可视化界面的模拟器。
退出某个登录用户用 exit 命令
5、用户组操作
groupadd abc ===>新建一个名称为abc的用户组
===>cat /etc/group ==>abc 组
usermod -G 组名称 用户名称 ===》将已经存在的用户加入某个组
eg: usermod -G abc test2 ==>将test2用户加入到abc组
==》cat /etc/group ==>abc 组多了一个用户 test2
groupdel abc ==>删除一个名称为abc的用户组
打包管理命令
1、归档和压缩命令
1.1 归档(打包)命令 tar -cvf
Tar -cvf xxxx.tar xxxx
含义:将指定的xxx文件打包归档形成一个新的文件xxx.tar
eg: tar -cvf abc.tar abc
tar -cvf def.tar 02.txt
tar -cvf kkk.tar /root/160411
注意:目标归档文件必须是后缀为 .tar 的形式。
1.2 解档(解包)命令 tar -xvf
tar -xvf xxx.tar
注意:解包命令会以原始打包文件名称解包
所以要注意位置不能在打包的位置解包,避免覆盖。
1.3 压缩命令 ==》gzip bzip2
gzip压缩: gzip -c xxx.tar > xxx.gz
解压缩:gunzip xxx.gz ===>gz 消失
bzip2压缩: bzip2 -k xxx.tar
解压缩: bunzip2 xxx.bz2 ==>bz2 文件消失
1.4 打包压缩解压缩命令:
打包压缩:
tar -zcvf xxx.tar.gz xxx
==>tar -cvf xxx.tar xxx
==>gzip -c xxx.tar > xxx.gz
tar -jcvf xxx.tar.bz2 xxx
==>tar -cvf xxx.tar xxx
==>bzip2 -k xxx.tar
解包解压缩:
tar -zxvf xxx.tar.gz ==>直接解包
tar -jxvf xxx.tar.bz2
tar -zxvf xxx.tar.gz -C /root/xxx
特例: windows ==》zip
zip 压缩和解压缩:
zip -r xxx.zip xxx ==>以递归方式将xxx目录中所有文件压缩为zip格式的压缩包
zip xxx.zip 01.txt
unzip xxx.zip ===》将zip格式的压缩文件解开
rar 需要安装压缩解压缩工具。
mkdir test
touch ./test/a.c
gedit ./test/a.c
==>a.c asdfasdfasdf
tar -zcvf test.tar.gz ./test
cd /root/
mkdir test2
tar -zxvf test.tar.gz -C ./test2
diff /root/160411/test/a.c /root/test2/test/a.c
进程管理命令
进程管理命令
ps ==>man ps
ps -ef ==> 标准语法显示所有瞬时的运行进程信息
ps axu ==> BSD语法显示所有瞬时运行进程信息
kill =》杀死进程命令
ctrl+c == kill 命令
第一步:首先获取要结束进程的pid < ps -ef
<== ps -ef | grep 进程名称
第二步:用 kill pid
第三步:如果kill 无效则使用 kill -9 pid
注意:尽量慎用kill -9 pid方式结束进程。
top ==>实时显示当前进程中CPU占用率较高的前20个进程
==>每隔1秒刷新一次,回车会手工刷新。
==>可以通过 M 按照内存使用率排序
T 按照时间使用排序
P 按照CPU使用率排序
C 按照程序名称排序
q退出top
特殊命令
特殊符号命令
通配符: * ? []
星号:* ==》匹配任意长度的字符串
问号:? ==》匹配一个长度的字符
放括号:
[…] ==>匹配方括号中的任意字符
==> mv [ab]a.c …/ ==>aa.c ba.c ==>…/
==>[]表示一个占位符
[…-…] ==>匹配方括号中的一个范围
==>mv [1-3].c …/ ===>1.c 2.c 3.c =>…/
[^…]>匹配所有字符,除过方括号中的字符
==>mv [^3].c 00 …/ ==>1.c 2.c 3.c ==> …/
grep “xxx” 文件 ===》从文件中查找"xxx"字符串
wc 文件名
wc ==》统计文件中的信息
wc -w 统计文件中的单词
wc -c 统计文件的字节数
wc -l 统计文件行数
管道命令: | ===>键盘上的 \ 的shift
作用:将 | 管道左边的命令执行结果给管道右边的命令
eg: ls | grep a.c
ls /usr/bin | wc -w ==>计算出程序个数
ps -ef | grep xxx ==>在进程中查找指定运行程序
重定向命令:> < >>
> 输出重定向 ===>将 >符号左边命令执行的结果给右边程序
eg: history > command.txt
ls > ls.txt
注意:输出重定向会覆盖原有文件。
>> 输出重定向 类> 区别不会覆盖会追加。
eg: history >> command.txt
ls >>ls.txt
< 输入重定向 ====》将< 右边的程序内容发送给左边程序
eg: wc < xxx.txt