Linux基本操作命令

2019-12-06


安装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

 

{/if}