安装pip
ubuntu自带python2和python3;apt和apt-get是ubuntu安装的命令,如果不能安装前面加上sudo,表示使用root权限安装
sudo apt-get install python3-pip
切换用户
su 切换到root用户,但是并没有转到root用户家目录下
su - 切换到root用户,并转到root用户的家目录下
su - 用户名 切换到其他用户
sudo 通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码
文件权限
查看目录权限
ls -l 列出所有文件的信息,不包括隐藏文件
ls -al 列出所有的文件的信息,包括隐藏文件
ls -lht 查看文件,文件大小以M来显示
ls -ld 文件夹 查看指定文件夹的信息
权限代码
权限代码一共有10位数
第一位为文件类型:-代表普通文件,d代表目录文件,l代表链接文件,b、c代表设备文件一般在dev目录(b是块设备,c是字符设备)
2-4位代表所有者权限(user)
5-7位代表用户组(group)
8-10位代表其他人(other)
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
设置权限
语法:chmod [-R] [who] [+ | - | =] [mode] 文件名
-R
将权限传递给目录下的所有子文件和目录
who
- u 表示“用户(user)”,即文件或目录的所有者
- g 表示“同组(group)用户“,即与文件属主有相同组ID的所有用户
- o 表示“其他(others)用户”
- a 表示“所有(all)用户”。它是系统默认值
[+ | - | =]
- + 添加某个权限
- - 取消某个权限
- = 赋予给定权限并取消其他所有权限(如果有的话)
[mode]
- r 可读
- w 可写
- x 可执行(只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性)
- s 称为Set UID,简称为SUID的特殊权限;即当执行该文件时将具有该文件所有者的权限,用户及用户组可设置
- t 称为Sticky Bit,简称为SBIT权限,只针对目录有效。它表示只能让所属主以及root可以删除(重命名/移动)该目录下的文件
- u 与文件属主拥有一样的权限
- g 与和文件属主同组的用户拥有一样的权限
- o 与其他用户拥有一样的权限
常见权限
- -rw——- (600) 只有所有者才有读和写的权限
- -rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
- -rwx—— (700) 只有所有者才有读,写,执行的权限
- -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
- -rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
- -rw-rw-rw- (666) 每个人都有读写的权限
- -rwxrwxrwx (777) 每个人都有读写和执行的权限
设置权限示例
修改目录下所有文件属性可写可读可执行
chmod 777 *.*
修改目录下所有的文件夹属性
chmod 777 *
修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行
chmod -R 777 /upload
删除xxx.xxx中组群和其他人的读和写的权限
chmod go-rw xxx.xxx
给其他人授予写xxx.xxx这个文件的权限
chmod o+w xxx.xxx
文件操作
创建目录
mkdir 目录名
创建目录并为其设定权限
mkdir -m mode 目录名
创建目录时,如果上层目录不存在,则将创建上层目录和指定的目录
mkdir -p /目录名/目录名
创建新目录并显示目录的信息
mkdir -v 目录
创建/mnt/a_b, /mnt/c_b, /mnt/a_d, /mnt/c_d
mkdir -pv /mnt/{a,c}_{b,d}
创建/mnt/x/z, /mnt/y/z, /mnt/x/m, /mnt/y/m, /mnt/x, /mnt/y
mkdir -pv /mnt/{x,y}/{z,m}
注:参数-m -p -v可以同时使用
创建文件
直接创建文件,不需要在创建文件时直接输入内容
touch filename
vi命令创建文件后需要保存后方可成功创建文件
打开或新建文件,并将光标置于第一行首
vi filename
打开文件,并将光标置于第n行首
vi +n filename
打开文件,并将光标置于最后一行首
vi + filename
打开文件,并将光标置于第一个与pattern匹配的串处
vi +/pattern filename
在上次正用vi编辑时发生系统崩溃,恢复filename
vi -r filename
打开多个文件,依次进行编辑
vi filename....filename
vi文件时移动光标
光标上/下移一行
# 上移
k
Ctrl+p
# 下移
j
Ctrl+n
Enter
光标上/下移多行
# 光标下移n行
n+
# 光标上移n行
n-
# 光标移至第n行首
nG
# 光标移至第n行尾
n$
# 光标移至屏幕顶行
H
# 光标移至屏幕中间行
M
# 光标移至屏幕最后行
L
光标移动至行首/尾
# 光标移至当前行首
0
# 光标移至当前行尾
$
光标移至句首/尾
# 句首
(
# 句尾
)
动字至行首/尾
# 光标右移一个字至字首
w
W
# 光标左移一个字至字首
b
B
# 光标右移一个字至字尾
e
E
vi文件时翻滚屏幕
# 向文件首翻半屏
Ctrl+u
# 向文件尾翻半屏
Ctrl+d
# 向文件尾翻一屏
Ctrl+f
# 向文件首翻一屏
Ctrl+b
vi文件时插入文本
# 插入在在光标前
i
# 插入在光标后
a
# 插入在当前行之下新一行
o
# 插入在当前行之上新一行
O
# 插入时替换当前字符
r
# 插入时替换当前字符,直至按ESC键
R
vi文件时删除
# 删除光标处开始及其后的n-1个字
ndw
ndW
# 删至行首
do
# 删至行尾
d$
# 删除当前行及其后n-1行
ndd
# 删除光标前的一个字符
X
# 删除光标后的一个字符
x
vi文件时搜索及替换
# 从光标开始处向文件尾搜索pattern
/pattern
# 从光标开始处向文件首搜索pattern
?pattern
# 在同一方向重复上一次搜索命令
n
# 在反方向上重复上一次搜索命令
N
# 将当前行中所有p1均用p2替代
:s/p1/p2/g
# 将第n1至n2行中所有p1均用p2替代
:n1,n2s/p1/p2/g
# 将文件中所有p1均用p2替换
:g/p1/s//p2/g
vi文件时复制粘贴、剪切、移动
# 复制当前行
yy
# 复制当前行开始的n行
nyy
# 先按v然后方向键选择区域,按y复制选中行
# 剪切当前行
dd
# 在当前光标处下面粘贴内容
p
# 在当前光标处上面粘贴内容
P
# 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 co n3
# 将n1行到n2行之间的内容移至到第n3行下
:n1,n2 m n3
vi文件时保存文件
# 保存当前文件
:w
# 另存为/tmp
:w /tmp1
# 退出
:q
# 保存退出
:x
:wq
# 退出不保存
:q!
# 保存但没权限时,可获取权限再保存
:w !sudo tee %
vi文件时设置选项
# 显示行号
:set number
# 不显示行号,其它选项同理加!号
:set number!
# 在搜索中忽略大小写
:set ignorance
# 在搜索中不忽略大小写
:set ignorance!
# 禁止在搜索到达文件两端时,又从另一端开始
:set nowrapscan
# 不禁止在搜索到达文件两端时,又从另一端开始
:set nowrapscan!
删除
直接删除且无需确认
rm -f /var/log/httpd/access.log
删除目录及目录下内容
# 会逐一询问
rm -r /var/log/httpd/access
# 不会逐一询问,直接删除
rm -rf /var/log/httpd/access
删除前逐一询问,不能删除目录
# 删除所有后缀为.c的文件
rm -i *.c
移动
强制移动而不询问
mv -f /etc/temp.txt /etc/temp/temp.txt
若目标文件已经存在,会询问是否覆盖
mv -i /etc/temp.txt /etc/temp/temp.txt
若目标文件已经存在,且源文件比较新,才会覆盖
mv -u /etc/temp.txt /etc/temp/temp.txt
复制
复制所有的目录
cp -a ./test1 ./test
用于目录的递归复制
cp -r ./test1 ./test
强制复制
cp -f ./test1/text1.txt ./test/text1.txt
若目标文件已存在,在覆盖时会先询问
cp -i ./test1/text1.txt ./test/text1.txt
若源文件比目标文件新,覆盖目标文件
cp -u ./test1/text1.txt ./test/text1.txt
建立文件硬连接
cp -l ./test1/text1.txt ./test/text1.txt
复制成符号连接文件,即“快捷方式”文件
cp -s ./test1/text1.txt ./test/text1.txt
重命名
# 如果目标文件或目录不存就会改变源文件或目录的名字
mv /etc/123.txt /etc/456.txt
文件查找
find path -option [-print] [-exec -ok command ] {} \
path
可以指定目录,也可以不指定目录,不指定时为当前目录
-option
查找文件名称符合name的文件,name可以使用通配符。iname会忽略大小写
find path -name name
find path -iname name
查找大小为0 Byte的文件或目录下没有任何子目录或文件的空目录
find path -empty
查找指定大小的文件
# 查找大于2M小于5M的文件
find path -size +2M -5M
根据文件类型查找(d: 目录,f: 一般文件,l: 符号连结,s: socket,c: 字型装置文件,b: 区块装置文件,p: 具名贮列)
find path -type d
根据权限查找
find path -perm rwx
查询在过去n天内被修改过的文件
# 7天前的
find path -ctime 7
# 超过7天的
find path -ctime +7
# 7天内
find path -ctime -7
查询在过去n分钟内被修改过的文件
# 7分钟前的
find path -cmin 7
# 超过7分钟的
find path -cmin +7
# 7分钟内
find path -cmin -7
查询在n天内被修改过(文件数据元(例如权限等)最后一次修改时间)的文件
# 7天前的
find path -mtime 7
# 超过7天的
find path -mtime +7
# 7天内
find path -mtime -7
查询在n分钟内被修改过(文件数据元(例如权限等)最后一次修改时间)的文件
# 7分钟前的
find path -mmin 7
# 超过7分钟的
find path -mmin +7
# 7分钟内
find path -mmin -7
[-exec]/[-ok]
与其他命令结合使用,-exec无提示/-ok有提示
单行命令中-exec参数中无法使用多个命令,可以使用脚本执行多条命令
find path -exec ./text.sh {} \;
示例
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find /var/log -type f -mtime +7 -ok rm {} \;
查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;
压缩解压缩
打包压缩
# 可以将多个内容打包
tar -zcvf test.tar.gz ./test test1.txt
解压缩
tar -zxvf test.tar.gz
文件查看
more
将整个文件的内容以一页一页的显示方便使用者逐页阅读
参数
从笫n行开始显示
more +n test1.txt
定义屏幕大小为n行
more -n test1.txt
在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
more +/123321 test1.txt
从顶部清屏,然后显示
more -c test1.txt
通过清除窗口而不是滚屏换页
more -p test1.txt
操作命令
向下一行
Enter
向下滚屏
空格键
Ctrl+F
向上滚屏
Ctrl+B
输出当前行行号
=
调用vi编辑器
v
退出more
q
cat
一次显示整个文件
cat filename
创建一个文件(只能创建新文件,不能编辑已有文件)(创建文件的时候要设置文件结束标志,也就是<
cat > filename << EOF
追加文件内容
cat >> filename << EOF
将几个文件合并为一个文件,如果file文件以前有内容,则先会清除它们然后再写入合并后的内容。
cat file1 file2 > file
将几个文件合并为一个文件,将合并后的内容追加到file文件
cat file1 file2 >> file
grep
一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
不区分大小写地搜索。默认情况区分大小写
grep -i pattern files
只列出匹配的文件名
grep -l pattern files
列出不匹配的文件名
grep -L pattern files
只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
grep -w pattern files
匹配的上下文分别显示[number]行
grep -C number pattern files
显示匹配pattern1或pattern2的行
grep pattern1 | pattern2 files
显示既匹配pattern1又匹配pattern2的行
grep pattern1 files | grep pattern2
显示匹配信息的行号
grep -n pattern files
显示匹配的总行数
grep -c pattern files
which
查看命令所在位置
which ls
系统命令
查询使用者
who
查看用户名
whoami
重置密码
# 不指定用户名时重置当前登陆用户密码
passwd username
查看网卡信息
ifconfig
关机
# 安全地将系统关机
# 重启
shutdown -r
# 并不真正关机﹐只是送警告信号给每位登录者
shutdown -k
# 在关闭服务器后再闭电源,执行过后就不能登录服务器了
shutdown -h
# 杀死应用进程,并在文件系统写操作完成之后就会停止内核的运行
# 在不调用shutdown的情况下强制关机或重启
halt -f
# 关机前,先关闭掉所有的网络接口
halt -i
# 保存数据后再重新启动系统
reboot -n
# 关机
init 0
# 切换到多用户-命令行模式
init 3
# 切换到图形化界面
init 5
# 重启
init 6
SSH服务
查看ssh服务的状态
sudo service sshd status
安装ssh服务
# 两种方法
sudo yum install sshd
sudo yum install openssh-server
卸载ssh服务
sudo yum remove sshd
用户权限
创建用户
useradd username
创建用户并指定一段对用户的描述
useradd -c comment username
创建用户并指定用户主目录,如果此目录不存在,则同时使用-m选项创建主目录。
useradd -d 目录 username
useradd -d c -m 目录 username
创建用户并指定用户所属的用户组
useradd -g 用户组 username
创建用户并指定用户所属的附加组
useradd -G 用户组 username
创建用户并指定用户的登录Shell
useradd -s Shell文件 username
创建用户并指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
useradd -u 用户号 username
useradd -u 用户号 -o 用户号 username
删除用户
userdel username
把用户的主目录一起删除
userdel -r username
修改用户
修改用户的描述
useradd -c comment username
修改用户的主目录,如果此目录不存在,则同时使用-m选项创建主目录。
useradd -d 目录 username
useradd -d c -m 目录 username
修改用户的所属的用户组
useradd -g 用户组 username
修改用户的所属的附加组
useradd -G 用户组 username
修改用户的登录Shell
useradd -s Shell文件 username
修改用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
useradd -u 用户号 username
useradd -u 用户号 -o 用户号 username
修改用户的用户名
usermod -l 新用户名 username
passwd
修改密码
# 不指定用户名时修改当前登陆用户的密码
passwd username
禁用账号
passwd -l username
解锁账号
passwd -u username
使账号无口令
passwd -d username
强迫用户下次登录时修改口令
passwd -f username
创建用户组
指定新用户组的组标识号(GID)
groupadd -g GID usergroup
表示新用户组的GID可以与系统已有用户组的GID相同。一般与-g选项同时使用,
groupadd -g GID -o usergroup
删除用户组
groupdel usergroup
修改用户组
为用户组指定新的组标识号
groupdel -g GID usergroup
用户组的新GID可以与系统已有用户组的GID相同,与-g选项同时使用
groupdel -g GID -o usergroup
修改用户组名称
groupdel -n 新用户组 usergroup
分配权限
给文件/目录指定用户、用户组
# -R 应用到子目录及文件
chown -R username:usergroup
给文件/目录指定用户组
# -R 应用到子目录及文件
chgrp -R
给用户指定root权限
vim /etc/sudoers
# 添加
username ALL=(ALL:ALL) ALL
查看用户/用户组
查看用户
id user
查看用户所在组
groups user
查看组内的用户成员
members group
其他
echo
将内容输入到文件中,如果文件中有内容,将会被覆盖
echo "test123321321" > file
将内容追加到文件结尾
echo "test123321321" >> file
内容使用换行符
echo '123\n321' > file
sed
流编辑器,以执行各种功能,如搜索、查找、修改、插入或删除文件。
替换匹配内容
# 只替换匹配的第一个,将unix替换为linux
sed 's/unix/linux/' sed-test.txt
# 替换匹配的第n个
sed 's/unix/linux/n' sed-test.txt
# 替换匹配的所有数据
sed 's/unix/linux/g' sed-test.txt
# 替换匹配的第n到最后一个
sed 's/unix/linux/ng' sed-test.txt
# 不区分大小写来搜索替换
sed 's/unix/linux/gI' sed-test.txt
# 在指定行或指定行之间搜索替换
sed '1,3 s/unix/linux/' sed-test.txt
# 匹配内容可以使用通配符
插入内容
# 在第一行后面插入test12323131
sed -i '1 a test12323131' file
# 在第一行前面插入两行数据,第一行为test12323131,第二行为321321
sed -i '1 i test12323131\n321321' file
删除内容
# 删除第二行
sed '2d' file
# 删除第3行到最后一行
sed '3,$d' file
只打印匹配内容
# 打印文件中将123替换为321的行
sed -n 's/123/321/' file
# 打印文件中包含root的行
sed -n '/root/p' file
指定多条命令处理文件
sed -e '4a 下面一行被删除了' -e '5d' -e 's/123/321/' -e 's/删除/删错了/' file
sed命令处理后会打印出处理后的文件,直接修改文件
sed -i -e '4a 下面一行被删除了' -e '5d' file