系统信息
时间和日期
date 显示系统日期
cal 显示当前月份的日历
cal -y 当前年的日历
cal 2019 显示2019年的日历表
磁盘信息
df -h 显示磁盘剩余空间 disk free
du -h [目录名] 显示目录下的文件大小 disk usage
hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
进程信息
进程:当前正在执行的一个程序
命令 作用 ps aux process status 查看进程的详细状况 ps au 查看终端上进程的详细状况(推荐) ps a 显示终端上的所有进程,包括其他用户的进程 ps u 显示进程的详细状态 ps x 显示没有控制终端的进程 ps 显示当前用户通过终端启动的应用程序 top 动态显示运行中的进程并且排序,推出按q htop sudo apt install htop 比top美观 kill [-9] 进程代号PID 终止指定代号的进程,-9表示强行终止
硬件信息
arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
lscpu 显示 cpu 信息
lsblk 列出除RAM外的块设备
查看或切换目录
cd 切换目录
绝对目录:/或~ 根目录或家目录 如/home/johnny 相对目录:相对当前目录 .
pwd 查看当前目录
cd /home 进入 '/ home' 目录
cd .. 返回上一级目录(. 表示当前目录)
cd ../.. 返回上两级目录
cd 进入当前用户的主目录 (/home/用户目录)
cd ~ 进入当前用户的主目录 (/home/用户目录)
cd - 返回上次所在的目录 ,最近两次目录切换
ls 列出信息
ls 查看目录中的文件
ls -F 显示目录条目时,在目录后加一个/
ls -f 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls -h 将文件容量以较易读的方式(GB,kB等)列出来
ls -R 连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
经常组合使用,多个参数,没有顺序
ls -lah
通配符
通配符 含义 实例 * 任意个数个字符 ls *.txt ? 任意一个字符 ls 1?3.txt [] 可以匹配字符组中的任意一个 ls [12345].txt [abc] 匹配a\b\c中任意一个 ls [12345]23.txt [a-f] 匹配a到f范围内的任意一个字符 ls [1-5]23.txt
拷贝和移动文件
cp 复制命令
cp file1 file2 复制file1文件为file2
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a file1 file2 连同文件的所有特性把文件file1复制成文件file2
cp -i file1 file2 若目标文件已经存在时,在覆盖时会先询问操作的进行 y n
cp -r dir1 dir2 递归持续复制,用于目录的复制行为
cp -f file1 file2 强制复制
cp -rf dir1 dir2 强制递归复制
mv 移动或重命名命令
mv dir1 new_dir 重命名/移动 一个目录
mv -i dir1 new_dir 若目标文件已经存在,就会询问是否覆盖
mv -f dir1 new_dir force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
mv -u dir1 new_dir update若目标文件已经存在,且比目标文件新,才会更新
mv dir/* new_dir 移动所有文件
创建和删除操作
mkdir 创建文件夹
mkdir test 创建test文件夹
mkdir -p a/b/c 创建多级子文件夹
touch 创建文件与更新时间戳
将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。
touch hello.py
touch a/b/c.txt
rm 删除命令
rm file1 删除
rm -r dir 递归删除文件夹,删除文件夹必须加-r
rm -f file1 强制删除一个叫做 'file1' 的文件'
rm -i file1 在删除前会询问用户是否操作
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1'
的目录并同时删除其内容 ,r代表递归删除
rm -rf dir1 dir2 同时删除两个目录及它们的内容
rm -rf * 删除当前目录所有东西,谨慎使用
文本处理
cat 查看文件所有内容
cat 123.txt
cat -b 123.txt 对非空输出行编号
nl 123.txt 同上
cat -n 123.txt 对输出的所有行编号
more 分配显示文件内容
内容多使用more查看,分屏查看
more 123.txt 只会显示当前页的内容,剩下的内容折叠
操作键 功能 空格 显示手册页的下一屏 回车 一次滚动手册页的一行 b 回滚一屏 f 前滚一屏 q 退出 /word 搜索word字符串
grep 搜索文本筛选内容(正则表达式)
grep he 123.txt 在123.txt文件中搜索关键词he并输出对应的内容
grep -v he 123.txt 在123.txt文件中搜索不含关键词he并输出对应的内容
grep -n he 123.txt 在123.txt文件中搜索关键词he并输出对应的内容和行号
grep -i he 123.txt 不区分大小写在123.txt文件中搜索关键词he/He/hE/he并输出对应的内容
grep -vn或-in 可以连用
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇
grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行
grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
参数 含义 实例 ^bengin 行首,搜寻以begin开头的行 grep ^begin 123.txt end$ 行尾,搜寻以end结尾的行 grep end$ 123.txt
echo 文字内容,结合重定向
echo hello
重定向>和>>
echo hello > 123.txt 将hello写入123.txt文件,覆盖所有内容
echo hello >> 123.txt 将hello写入123.txt文件,写到最后,相当于追加
ls -lh > 123.txt
tree >> 123.txt
用户权限
chgrp 是更改文件或目录的属组 chmod 是更改文件或目录的权限 chown 是更改文件或目录的属主与属组
chgrp 更改文件或目录的属组
sudo chgrp 属组 文件/文件夹
sudo chgrp root 999 将999文件夹的所属组改成root
sudo chgrp root 999/888.txt 将999文件夹内人888.txt文件的所属组改成root
sudo chgrp -R root 999 将999文件夹及文件夹里的内容的所属组改成root
-R 递归遍历
chmod 更改用户/组对文件或目录的权限
-rw-rw-r-- 文件权限
drw-rw-r-- 文件夹权限
lrw-rw-r-- 链接权限
文件所有者的权限(属主) | 与文件所有者同一组的用户的权限(属组) |不与文件所有者同组的其他用户的权限(其他用户)
sudo chmod +/- rwx 增加删除权限,只能简单设置
sudo chmod +x start.sh 赋予start.sh可执行权限
sudo chmod 777 start.sh 赋予start.sh 所有者,组员,其他 全部权限
sudo chmod 755 start.sh 代表属主有读,写,执行权限。属组和其他用户有读,执行权限
sudo chmod -R 744 start.sh 赋予属主有读,写,执行权限。属组有读权限,其它用户有读权限
sudo chmod 740 start.sh 代表属主有读,写,执行权限。属组有读权限,其它用户没有任何权限
sudo chmod -R 666 start.sh 赋予所有用户都有读,写权限
sudo chmod -R 644 start.sh 代表属主有读,写权限。属组有读权限,其它用户有读权限
-R 递归遍历
- 拥有者 - = 组 = + 其他 + r w x r w x r w x 4 2 1 4 2 1 4 2 1
权限 二进制值 八进制值 描述 — 000 0 没有任何权限 –x 001 1 执行权限 -w- 010 2 写入权限 -wx 011 3 写入和执行权限 r– 100 4 读取权限 r-x 101 5 读取和执行权限 rw- 110 6 读取和写入权限 rwx 111 7 全部权限
rwx 421
chown 更改文件或目录的属主与属组
sudo chown 属主 文件/文件夹
sudo chown root dir 修改dir文件夹属主关系
sudo chown -R root dir 修改dir文件夹及文件夹内文件属主关系
sudo chown root.root dir 修改dir文件夹属主和属组关系
sudo chown root:root dir 同上
sudo chown -R root.root dir 修改dir文件夹及文件夹内文件属主和属组关系
sudo chown -R root:root dir 同上
用户和群组
root 超级管理员
sudo -i 切换root账户
设置root密码
sudo passwd root
组管理(创建/删除/确认)
创建一个新用户组
sudo groupadd group_name
删除一个用户组
sudo groupdel group_name
重命名一个用户组
sudo groupmod -n new_group_name old_group_name
确认组信息
cat /etc/group
cat -n /etc/group | grep 用户名
修改文件/目录的所属组
chgrp 组名 文件/目录名
用户管理
添加新用户
sudo useradd -m -g 组 新建用户名
-m 自动建立用户家目录
-g 指定用户所在的组,已存在的组,没有此参数会建立一个和用户名同名的组
sudo useradd 用户名 创建新用和新组户但没有家目录,这样不能单纯删除组,需要删除用户则组会一起被删除
默认使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用下面的命令将用户添加到sudo附加组中,具体请查看后面
usermod -G sudo 用户名
设置用户密码
passwd 用户名
普通用户直接用passwd可以修改自己的账户密码
删除一个用户
userdel -r user1
-r 自动删除用户家目录,如果创建了家目录请一起删除
确认用户信息
cat /etc/passwd
cat -n /etc/passwd | grep 用户名
查看用户信息
命令 作用 id [用户名] 查看用户UID和GID信息 who 查看当前所有登录的用户列表 whoami 查看当前登录用户的账户名
主组和附加组
主组:passwd中的GID 附加组:其他的组,附加权限,如可以使用sudo权限
命令 作用 实例 sudo usermod -g 组 用户名 修改用户的主组 sudo usermod -G 组 用户名 修改用户的附加组 sudo usermod -G sudo python
dash 切换 bash 进行Shell登录
Shell:登录之后使用的终端命令
ubuntu默认是dash,而常用为bash
修改用户登录shell
usermod -s /bin/bash 用户名
远程管理
关机和重启 shutdown
shutdown 一分钟之后关机
shutdown now 立刻关机
shutdown -h now 彻底断电关机,应该同上
shutdown 21:00 今天21:00关机
shutdown +10 在十分钟后关机
shutdown -c 取消之前指定的关机计划
shutdown -r 重新启动
reboot 同上
logout 注销
网卡和网络 ifconfig ping
ifconfig 查看网卡
ifconfig | grep inet
ping 192.168.1.1 检测ip连接是否正常
hongwei@hongwei--ubuntu16:~$ ping 192.168.50.11
PING 192.168.50.11 (192.168.50.11) 56(84) bytes of data.
64 bytes from 192.168.50.11: icmp_seq=1 ttl=64 time=0.385 ms
64 bytes from 192.168.50.11: icmp_seq=2 ttl=64 time=0.159 ms
发送56字节到目标ip,目标ip返回64字节,时间间隔为time,time越小网速越快
ping 127.0.0.1 检查本地网卡是否工作正常
–help man 查询命令帮助
command --help
如 ls --help
man ls 查询用法手册,man为manual缩写
操作键 功能 空格 显示手册页的下一屏 回车 一次滚动手册页的一行 b 回滚一屏 f 前滚一屏 q 退出 /word 搜索word字符串
其他命令
find 查找内容
特定的目录下搜索符合条件的文件
find [路径] -name "*.py" 查找所有.py结尾的文件,包括子目录
find -name "*.txt"
find /etc/ -name passwd ##查找/etc/下名称中带有passwd的文件
find /etc -maxdepth 1 -name passwd ##查找/etc/下名称中带有passwd的文件,查找一层。
find /etc -name *.conf ##查找/etc/下名称中带有*.conf的文件(下面显示的是部分)
find /etc -maxdepth 2 -name *.conf ##查找/etc/下名称中带有*.conf的文件,且查找两层,包括一层(下面显示的是部分)
find /etc -maxdepth 2 -mindepth 2 -name *.conf ##查找/etc/下名称中带有*.conf的文件,且只查找第二层
find /mnt -group tony ##查找/mnt中所有组是tony用户的文件
find /mnt -user student -group student ##查找/mnt中所有人和所有组都是student的文件
find /mnt -not -user student ##查找/mnt中所有人不是student用户的文件
find /mnt -not -user student -o -group tony ##查找/mnt中所有人不是student用户或者所有组是tony用户的文件
find /mnt -size 20K ##查找/mnt文件大小近似20k的文件
find /mnt -size +20K ##查找/mnt文件大小大于20k的文件
find /mnt -size -20K ##查找/mnt文件大小小于20k的文件
find /mnt -type d ##按type查找/mnt中目录
find /mnt -type f ##按type查找/mnt中文件
find /mnt -cmin 10 ##查找/mnt中十分钟左右修改的
find /mnt -cmin +10 ##查找/mnt中十分钟以上修改的
find /mnt -cmin -10 ##查找/mnt中十分钟以内修改的
find /mnt -ctime 10 ##查找/mnt中十天左右修改的
find /mnt -ctime +10 ##查找/mnt中十天以上修改的
find /mnt -ctime -10 ##查找/mnt中十天以内修改的
find /mnt/ -perm 444 ##查找/mnt文件权限为444的文件
find /mnt/ -perm -444 ##查找/mnt中user有读的权限且group有读的权限且other有读的权限的文件。(三个条件,u.g.o至少要读的权限即r--r--r--)
find /mnt/ -perm -004 ##查找/mnt中other有读权限的文件(一个条件,o至少有读的权限)
find /mnt/ -perm -644 ##查找/mnt中user有读写的权限且group至少有读权限且other有读的权限的文件。(四个条件,rw-r--r--)
find /etc/ -name *.conf -exec cp -rp {} /mnt \; ##把/etc/目录下名称中带有.conf的文件递归复制到/mnt下
find /mnt -name "*.conf" -exec rm -fr {} \; ##删除/mnt名称中带有.conf的文件
find / -group mail -exec cp -rp {} /mnt \; ##把/目录下的组属于mail的文件复制到/mnt
软连接 ln 快捷方式
ln -s 被链接的源文件 链接文件
必须加-s ,没有-s选项建立的是一个硬链接文件
源文件需要使用绝对路径,不能使用相对路径,方便移动
sudo ln -s /home/johnny/Desktop/python/py1.py py1
硬链接:有多少种方式可以访问到文件或者目录,使用ls -l 命令,可以看不到权限后面的数字就是硬链接个数
管道 | 至少两个命令
ls -l | more
ls -a | grep *.py
打包和压缩 tar gz bz bz2 z zip
tar
解包
tar -xvf filename.tar
打包
tar -cvf filename.tar )
gz命令
解压1
gunzip filename.gz
解压2
gzip -d filename.gz
压缩
gzip filename
.tar.gz 和 .tgz
解压
tar -zxvf filename.tar.gz
解压到指定路径(路径必须存在)
tar -zxvf 打包文件.tar.gz -C 目标路径
压缩
tar -zcvf filename.tar.gz 文件或目录(可多个)
压缩多个文件
tar -zcvf filename.tar.gz dirname1 dirname2 dirname3.....
bz2命令
解压1:bzip2 -d filename.bz2
解压2:bunzip2 filename.bz2
压缩:bzip2 -z filename
.tar.bz2(bzip2)
解压:tar -jxvf filename.tar.bz2
压缩:tar -jcvf filename.tar.bz2 dirname
bz命令
解压1:bzip2 -d filename.bz
解压2:bunzip2 filename.bz
.tar.bz
解压:tar jxvf filename.tar.bz
z命令
解压:uncompress filename.z
压缩:compress filename
.tar.z
解压:tar zxvf filename.tar.z
压缩:tar zcvf filename.tar.z dirname
zip命令
解压:unzip filename.zip
压缩:zip filename.zip dirname
软件安装
apt:Advanced Packaging Tool
安装
sudo apt install 软件包
卸载
sudo apt remove 软件包
更新源及/etc/apt/sources.list
sudo apt-get update
更新已安装的包
sudo apt upgrade
file
file 222.txt 列出编码类型
222.txt: ASCII text
history 查看历史
history 显示了在终端中所执行过的所有命令的历史
关闭某个被占用的端口
查找被占用的端口
netstat -tln | grep 4000
查看被占用端口的PID
sudo lsof -i:4000
netstat -tunlp | grep 4000
netstat -nap | grep 4000
kill掉该进程
sudo kill -9 PID
参考
Linux常用命令大全(非常全!!!)
linux最常用的20个命令