linux基本命令
Linux基本命令。
Linux是严格区分大小写
命令的分类:
内部命令 Shell在内部代码中实现的命令
man type 查看bash Shell自带的命令
外部命令 Shell以外的命令
用type命令查看内部命令还是外部命令
type cd 提示cd is a shell builtin则说明是内部命令
type mount 提示mount is /bin/bash 告诉外部命令的位置
-------------------------------------------------------------
帮助命令
man 注重于应用,也是最常用的帮助方法
man 的帮助文档存放的位置
/usr/share/man
man 的帮助文档分类
1 普通用户命令
2 系统核心调用的函数工具
3 常用的一些函数与函数库
4 设备文件的说明
5 配置文件与一些其它格式的文件
6 游戏相关
7 网络协议相关
8 管理员可操作的命令
9 系统内核相关的文件
在 man 帮助里:
/c 搜索c关键字
n 下一个关键字
N 上一个关键字
q 退出
info 注重于介绍,不常用
帮助文档存放位置
/usr/share/info
进入帮助界面
? info命令帮助
空格键 向下翻一页
tab 在结点之间移动,有结点的地方通常会以*显示,将光标移动结点位置按回车可进入结点
b 移动光标到该文章的第一个结点处
e 移动光标到该文章的最后一个结点处
n 前往下一个info页
p 前往上一个info页
u 向上移动一层
s(/) 在info里搜索
h 显示帮助菜单
q 退出
-------------------------------------------------------------
目录命令
pwd 查看当前所在目录的路径
cd 切换当前所在目录
绝对路径
cd /root/Desktop 指从根目录开始的路径
相对路径
cd root/ 指以当前目录开始的路径
. 代表当前所在目录
.. 代表当前的父目录
- 代表上一次所在的目录
~ 代表当前登录用户的家目录
mkdir 创建一个目录
mkdir test 在当前目录下创建test目录
mkdir /tmp/test 在根目录下tmp目录里创建test目录
mkdir file{1..100} 在当前目录下创建file1到file100的目录,这里会创建100个目录
mkdir "file{1..100}" 在当前目录下创建file{1..100}目录,这里只创建一个目录
mkdir -p a/b/c 在当前目录下创建a/b/c目录树
rmdir 只能删除空目录
rmdir test 删除当前目录的test目录,test必须是空目录
rmdir /tmp/test 删除/tmp下的test目录
rmdir file{1..100} 删除file1到file100的目录
rmdir "file{1..100}" 删除file{1..100}目录
-------------------------------------------------------------
文件命令
ls 列出当前文件夹下的所有文件
ls -a 列出当前目录下所有文件,包含隐藏文件
ls -l 以详细列表形式列出当前目录下的所有文件
ls -R 列出当前目录所有文件,包含子目录内所有文件
drwxr-xr-x 1 root root 2062 2011-01-04 file1
文件类型和文件权限 文件的硬链接数 文件所属用户 文件所属用户组 文件大小 文件的最后修改日期 文件名
文件类型:
c 字符设备
b 块设备
l 符号链接
s socket文件
p 管道文件
d 文件夹
- 普通文件
常用搭配:
ls -al 显示所有文件包括隐藏文件列表
ls -lt 显示按日期时间排序后的文件列表
ls -lh 显示计算大小为KB为单位的文件列表
ls -dl 显示文件夹详细列表
touch 新建文件
touch file 创建file空文件,如果file存在则更新file的存取和修改时间
touch -c file 如果file不存在,则不创建文件
touch -r file1 file 更新file时间和file1相同
touch -a file 更新file的存取时间
touch -m file 更新file的修改时间
touch file{2,3,4} 同时创建file2,file3,file4三个空文件
touch "file{2,3,4}" 创建file{2,3,4}一个空文件
cp 复制文件
cp file dirs/ 把file文件复制到dirs目录下
cp -r dir1/ dir2/ 把dir1目录复制到dir2目录下
cp -a file dirs/ 把file文件复制到dirs目录下,保留文件的原来属性
cp -rf dir1/ dir2/ 强制复制文件夹,不提示
cp -rvf dir1/ dir2/ 把dir1目录复制到dir2目录下,并且显示复制过程
mv 移动和重命名文件
mv file dirs/ 把file文件移动到dirs目录下
mv file file2 把file文件重命名为file2
mv -u dir1/* dir2/ 把dir1目录下所有文件移动到dir2目录下,并且根据文件时间来决定要不要移动
rename 批量文件重命名
rename .conf .html *.conf 把所有后缀以.conf的文件名里出现.conf就改成.html
rm 删除文件
rm file* 删除所有file打头的文件
rm -i file* 提示是否确定删除
rm -f file* 不提示,强行删除
rm -r dir2 删除目录
-------------------------------------------------------------
文件阅读命令
cat 文件查看命令
cat /etc/passwd 查看/etc/passwd内容
cat -n /etc/passwd 查看/etc/passwd内容并且编号
cat -b /etc/passwd 查看/etc/passwd内容并且给非空行编号
more
more /etc/passwd 逐屏查看/etc/passwd文件内容
less
less /etc/passwd 查看/etc/passwd文件内容,和more不同的是可以上下滚动
head
head /etc/passwd 查看/etc/passwd前10行内容
head -n 30 /etc/passwd 查看/etc/passwd前30行内容
tail
tail /etc/passwd 查看/etc/passwd后10行内容
tail -n 30 /etc/passwd 查看/etc/passwd后30行内容
tail -f /etc/passwd 实时查看/etc/passwd文件内容
重定向
标准输入 代码 0 默认设备为键盘
标准输出 代码 1 默认设备为屏幕
错误输入 代码 2 默认设备为屏幕
ls /etc/passwd > output.txt 标准正确输出重定向到output.txt
ls /etc/shadow >> output.txt 标准正确输出追加重定向到output.txt
ls dddddd 2> error.txt 标准错误输出重定向到error.txt
ls dddddd 2> /dev/null 标准错误输出重定向到黑洞
ls ddddd /etc/passwd &> /dev/null 标准正确输出标准错误输出全都重定向到黑洞
管道
cat /etc/passwd | less |之前的命令执行的结果做|后命令的参数
==========================================
用户管理
用户分类
管理员 user id一定为0,务必唯一
系统用户 伪用户,user id 1-499,默认是不允许登录系统,用于给予某些服务运行时候所用的身份
普通用户 user id 500-60000, 通过手工或都命令建立起来的用户,默认可以进行登录系统
用户管理
用户相关配置文件
/etc/passwd
/etc/shadow
vim /etc/passwd
第一列:用户名
第二列:密码 x代表密码存放在/etc/shadow里,如果去掉x就代表此用户没有密码
第三列:uid 用户ID值操作系统是不认识用户名,只认uid
第三列:gid,用户组的ID
第五列:描述项
第六列:指定家目录
第七列:指定bash
vim /etc/shadow
第一列:用户名
第二列:真实的密码,经过加密的,以*或都!号开头的不能登录
第三列:上一次修改密码的时间,linux以1970年1月1日到现在的天数来算的
第四列:修改密码后几天内不允许再修改, 0代表不限制
第五列:多少天内必须修改密码,99999代表不限制
第六列:过期前几天给你一个警告信息
第七列:密码过期后的一个宽限时间
第八列:这里可以写一个实际的账号过期天数,也是以1970年1月1日到现在来算的,多用于收费系统
第九列:保留,留着以后功能扩展
用户命令相关配置文件,保存useradd命令创建用户使用的默认值
/etc/default/useradd
/etc/login.defs
用户相关命令
useradd/adduser
userdel/deluser
usermod
passwd
useradd a 创建一a用户
useradd -g kyo a 新建a用户并且把a用户添加进kyo用户组
userdel a 删除a用户
userdel -r a 删除a用户并且删除a的家目录和邮件目录
passwd a 修改a用户密码
passwd -l a 临时关闭用户,或修改/etc/shadow第二个字段加*
passwd -u a 释放临时关闭用户
usermod 修改用户信息
-u 修改UID
-g 修改GID
-d 指它家目录
-s 指用bash
usermod -G kyo a 把a用户添加进kyo用户组
用户信息相关的命令
chfn 修改一个用户相关的信息
finger 查看一个用户相关的信息
组管理
相关配置文件
/etc/group
/etc/gshadow
vim /etc/group
第一列:组名
第二列:密码,x代表密码在/etc/gshadow
第三列:gid
第四列:代表属于这个组的用户名
vim /etc/gshadow
第一列:组名
第二列:密码
第三列:组管理员
第四列:组成员
相关命令
groupadd 添加一新用户组
groupdel 删除一用户组
groupmod 修改用户组信息
gpasswd 修改用户组密码
gpasswd -a a root 把a用户放进root用户组
gpasswd -A a root 把a用户放进root用户组并当管理员
gpasswd -d a root 把a用户从root用户组里删除
newgrp root 把当前用户临时添加进root用户组,重新登录失效
id 显示用户的ID和组ID
用户身份切换
su - a 完全切换,不继承上一个用户的环境变量,即sbin目录下的命令用不了
su a 不完全切换,继承上一个用户的环境变量,可以用sbin目录下的命令
手工创建用户
第一步:在/etc/passwd添加一行信息
bean:x:534:603::/home/bean:/bin/bash
第二步:在/etc/shadow添加一行信息
grub-md5-crypt 创建md5密码,把密码替换下面两个!!位置
bean:!!:15035:0:99999:7:3::
第三步:在/etc/group添加组的信息
bean:x:603:
第四步:在/etc/gshadow添加组的密码信息
bean:!::
第五步:创建家目录
mkdir /home/bean
第六步:把用户的环境变量文件复制到家目录
cp /etc/skel/.bash* /home/bean
chown bean:bean /home/bean/ -R
chmod 700 /home/bean/ -R
第七步:创建用户的邮件文件
touch /var/mail/bean
chown bean:bean /var/mail/bean
chmod 660 /var/mail/bean
================================================================================
Linux权限
ls -l
- rw- r-- r-- 1 root root 4383 2011-03-01 01:37 readme.txt
所属用户权限u 所属用户组权限g 其它人权限o
r read 读权限
针对文件夹,具有r权限,就代表具有对这个文件夹进行列表的权限
针对文件,具有r权限,就代表具有读取这个文件的内容的权限
w write 写权限
针对文件夹,具有w权限,代表具有他能在此文件夹里创建修改等操作
针对文件,具有w权限,代表具有修改此文件内容的权限
x execute 执行权限
针对文件夹,具有x权限,代表可以切换到此文件夹
针对文件,具有x权限,代表可以运行它,文件必须是可执行或脚本等
二进制转八进制:
000 0 ---
001 1 --x
010 2 -w-
011 3 -wx
100 4 r--
101 5 r-x
110 6 rw-
111 7 rwx
rwx, r-x, r-x
7 5 5
-------------------------------------------------------------
chmod 修改权限的命令
chmod u+x,g+r,o-r file 修改file文件用户权限加上可执行权限,用户组也加上读权限,其它用户减去读权限
chmod u=rwx,g=rw,o=r file 修改file文件用户权限为可读可写可执行,用户组为可读可写权限,其它用户为读权限
chmod 755 file 修改file文件用户权限为可读可写可执行权限,用户组为可读可执行权限,其它用户也为可读可执行权限
chmod 755 dirs -R 修改dirs目录里所有文件的用户权限为可读可写可执行权限,用户组为可读写执行权限,其它用户也为可读可执行权限
-------------------------------------------------------------
chown 修改文件用户所属
chown tom file 修改file文件所属用户为tom
chown tom:jack file 修改file文件的所属用户为tom,所属用户组为jack
chmod jack.root dirs -R 修改dirs目录里所有文件所属用户为jack,所属用户组为root
-------------------------------------------------------------
umask 默认创建文件或文件夹权限掩码
管理员默认umask为022
普通用户默认umask为002
默认创建文件夹权限是777,而掩码设置为022,则要减去掩码,默认创建文件夹权限则变成755
默认创建文件权限是666,而掩码设置为022,则减去掩码,默认创建文件权限为644
-------------------------------------------------------------
特权位 针对命令文件,设定setuid、setgid
针对命令文件设定setuid、setgid
没加特权位之前,命令运行的时候所采用的身份是运行者的身份
添加了特权位之后,命令运行的时候采用的身份不再是运行者的身份,而是命令本身的所属者
例:passwd touch
针对目录设定setgid
设定了组的特权位后,在该文件夹下创建子文件或子目录,它们自动继承文件夹的所属组的身份,子目录会继承目录的特权位
chmod u+s/g+s file 给file设置特权位
chmod u-s/g-s file 给file取消特权位
-------------------------------------------------------------
粘贴位 防止其它用户删除文件,针对其它用户,管理员和本人可以删除,针对目录有效,文件没有用
chmod o+t dirs 给dirs目录设置粘贴位
-------------------------------------------------------------
文件特殊属性
lsattr 查看文件特殊属性
chattr 添加或修改文件特殊属性
chattr +i file 添加i属性,管理员也不得更改
chattr +a file 只能追加内容,不得修改内容,如果有i属性,先取消才能加a属性
chattr -i/-a file 取消文件特殊属性
-------------------------------------------------------------------------------
系统基本命令
file 查看文件类型
uname 查看系统基本信息
-r 内核版本
-s 什么内核
-o 什么操作系统
-n 什么发行版
-m 什么平台
-a 查看所有信息
cal 打印日历
cal 2005 打印2005年日历
bc 支持超大数的文本计算器
quit 退出
date 时间日期命令
+%Y 年
+%m 月
+%d 日
+%H 小时
+%M 分
+%S 秒
......
echo 打印字符串
-n 不换行
-e 支持\t\n等
shutdown -r 重启
suutdown -c 取消计划中的关机或重启
shutdown -p 直接关闭电源
shutdown -h 关机
shutdown -h 30 "30秒后就要关机" 计划关机并给所有终端提示
init 改变系统运行级别
0 关机
1 单用户模式,没有用户和密码验证
2 不带网络的文本模式
3 带网络的文本模式
4 保留
5 带图形界面的模式
6 重启电脑
runlevel 查看当前运行级别
sync 同步磁盘
cat /etc/issue 查看linux系统发行版本信息
w 更详细的显示在线情况
21:55:44 up 1:49, 5 users, load average: 0.38, 0.35, 0.23
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty7 :0 20:06 1:49m 1:52 0.12s gnome-session
root pts/2 :0.0 20:24 33.00s 0.10s 0.10s bash
root pts/3 :0.0 21:37 11:18 0.02s 0.02s bash
用户名 登录终端 从哪里登录过来 登录时间
踢掉一个远程登录过来的用户
ps -aux | grep pts/5 pts/5是远程登录的终端,查看终端对应的PID
kill -9 3236 3236是上面查到的pts/5的PID
命令类别:
内部命令 集成于SHELL程序的命令
外部命令 独立可执行文件的命令
区别方法:
which 命令
如果有路径代表外部命令,找不到则代表内部命令
type 命令
如果结果显示is a shell builtin代表是内部命令,否则为外部命令
帮助命令:
man 外部命令
获取外部命令的帮助信息
q 退出 h 获取man手册帮助信息
man手册分1 ~ 8的章节
1 基本命令帮助信息
2 系统调用函数帮助信息
3 标准库函数帮助信息
5 配置文件帮助信息
8 系统管理员命令帮助信息
help 内部命令
获取内部命令的帮助信息
文件操作命令: rm mv cp touch vim gedit
目录相关命令: cd pwd mkdir rm ls
文件阅读命令: head tail cat more less
head 查看指定文件头部行数内容
head -n 5 file
列出文件前5行内容
tail 查看指定文件尾部行数内容
cat 查看文件所有内容
more 一行一行查看文件内容
q 结束查看
enter 查看下一行
less 可控性更强的查看文件命令
bash SHELL提供:
重定向
0 标准输入
1 标准输出
2 错误输出
输出重定向: > 1> 2> >> 1>> 2>>
输入重定向: < <<
管道 |
把|前面的命令的输出给后面命令进行解析
----------------------------------------------------
用户管理 (用户为了权限存在)
超级管理员 root 0
系统用户 1 - 499 / 999 用于系统服务的用户
普通用户 500 / 1000 以上
用户相关配置(超级管理员才可以修改):
/etc/passwd 用户信息
/etc/shadow 用户密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息
用户相关命令:
id 获取当前登录用户信息
su 切换用户
useradd/adduser 添加用户
userdel 删除用户
默认不删除用户家目录,-r会删除家目录
userdel -r 用户名
passwd 修改用户密码
权限:
查看文件详细信息
ls -l 文件
-rw-rw-r--. 1 kyo kyo 4633 2月 16 11:18 env.txt
-rw-rw-r-- 文件类型及权限
1 硬链接数
kyo 属用户
kyo 所属用户组
4633 文件大小(字节)
2月 16 11:18 最后修改时间
env.txt 文件名
-rw-rw-r-- 文件类型及权限
第一个字符代表文件类型
- 普通文件
d 目录
l 软链接
p 管道文件
s 套接字文件
c 字符设备文件
b 块设备文件
后九个字符代表权限(三个字符为一段)
rw- (u)所属用户对此文件的操作权限
rw- (g)所属用户组对此文件的操作权限
r-- (o)其它用户对此文件的操作权限
r 读
针对文件, 有r才能对此文件读取内容
针对目录, 有r才能列表目录里内容
w 写
针对文件,有w才能对此文件进行编辑
针对目录, 有w才能才能到此目录里创建或删除文件或子目录
x 可执行
针对文件,有x才能运行文件
针对目录,有x才能切换进去(cd切换不进去)
修改权限: chmod
chmod u=rwx,g=r--,o=--- file
chmod u+x,g-w,o+r file
权限的数字表示方式(八进制)
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
chmod 755 目录/ -R
将目录及目录里所有文件都修改权限为755
修改所属用户及组: chown
chown 用户名:用户组 file -R
粘贴位(只针对其它用户对文件夹设置权限 setVTX)
作用: 防止其它用户删除
chmod 777 目录/
chmod o+t 目录/
用户只能删除自己的东西
ls查看粘贴位: 目录如果有执行权限显示t, 否则显示T
特权位(setuid setgid)
只能给所属用户与所属用户组设置
默认可执行文件运行的权限为当前登录用户
有了特权位可执行文件运行的权限为文件的所属用户
用户特权:
chmod u+s 可执行文件
用户组特权:
chmod g+s 可执行文件
文件特殊属性:
lsattr 查看文件的特殊属性
chattr 修改文件的特殊属性