基本操作
Ctrl+A
将光标移到行头,同 Home
键
Ctrl+E
将光标移到行尾,同 End
键
Ctrl+K
删除光标所在位置到行末
Alt+Backspace
向前删除一个单词
用户
who -a
打印全部能打印的信息
who -d
打印死掉的进程
who -m
同 who am i
,第一列打印用户名,第二列打印伪终端,第三列打印伪终端启动时间
who -q
打印当前登录用户数及用户名
who -u
打印当前登录用户登录信息
sudo adduser xxx
新增用户,并默认为新用户在/home下创建工作目录,如:sudo adduser judy
,需输入root密码,输完新用户密码后其余信息可一直回车,新建用户不指定用户组的话,会自动创建与用户名相同的用户组,默认情况sudo用户组的用户可以使用sudo命令获取root权限,注:useradd
只创建用户,不会创建用户密码和工作目录,创建完需要使用 passwd xxx
去设置密码
sudo usermod -G sudo xxx
设置用户归属用户组,如 sudo usermod -G sudo judy
su -l xxx
或 su-xxx
切换用户,如 su - judy
sudo deluser xxx
删除用户,如 sudo deluser judy
sudo deluser xxx --remove-home
删除用户及home下的工作目录,如 sudo deluser judy --remove-home
exit
同 Ctrl+D
,退出当前用户或退出终端
groups xxx
查看用户所属哪些用户组,如 groups judy
sudo passwd xxx
更改密码,如 sudo passwd judy
groupdel
删除用户组,前提是删除其中所有用户
文件权限管理
ls -lh
使用较长格式列出文件,文件类型和权限-链接数-所有者-所属用户组-文件大小-最后修改时间-文件名,其中文件类型和权限具体如下图:
-h
–
ll file
使用较长格式列出文件file的信息
ls *.xxx
通配符可查找某类型文件,如 ls *.txt
ls -a
显示除了当前目录和上一级目录以外的所有文件,包括隐藏文件(以.开头的文件)
ls -dlh xxx
查看目录属性,,h文件大小显示最接近单位,如 ls -dlh /home
ls -asSh
显示所有文件大小,s显示文件大小,S按文件大小排序
ls -alh xxx
查看文件所有者,如 ls -alh file
sudo chown admin xxx
将所属xxx的文件所有者变更为admin,如 sudo chown admin file
,该操作在admin用户下进行
chmod 600 file
修改文件权限为只有拥有者可读写,用户组及其他用户无任何权限,同 chmod go-rw file
rwx对应读、写、执行,以二进制表示为111,十进制为7,每个文件有三组固定权限,分别对应拥有者,用户组,其他用户,如rw-rw-rw-,表示三组都没有执行的权限,以666表示
u-user-用户,g-group-用户组,o-others-其他用户,+增加权限,-去掉权限,go-rw表示去掉用户组和其他用户的读写权限
目录及文件操作
FHS(Filesystem Hierarchy Standard)文件系统层次结构标准
sudo apt-get install xxx
安装软件包,如 sudo apt-get install tree
tree /
查看目录树
pwd
获取当前所在路径
cd ~
进入我的home目录,同 cd /home/judy
cd /usr/local/bin
绝对路径进入bin目录,不管是写绝对路径还是写相对路径的过程中,两次连续 Tab
可列出所有可能目录
touch xxx
创建文件,如:touch abc.txt
,若文件已存在,则会更改文件时间戳
一次性创建多个文件,如:file_1.txt, file_2.txt, … , file_10.txt: touch file_{1..10}.txt
mkdir xxx
创建目录,如 mkdir mydir
,若已存在一个文件名为mydir,则会报错,因为Linux理念为一切皆文件,会认为重复,如果文件有后缀名不会报错
mkdir -p xxx/xx/x
同时创建父目录(如果父目录不存在),如 mkdir -p father/son/grandson
cp test father/son/grandson
复制test文件至grandson文件中
cp -r father family
复制father目录到family目录,-r表递归复制,复制目录时必须加
rm file
删除file文件
rm -f file
强制删除文件file
rm -r family
删除目录
rm -rf family
强制删除目录
mv file1 Documents
移动file1文件至Documents目录
mv file1 myfile
重命名为file1文件名为myfile
rename 's/\.txt/\.c/' *.txt
将所有txt的文件后缀批量替换为c
rename 'y/a-z/A-Z/' *.c
将所有后缀为c的文件的文件名和后缀都批量替换为大写
cat xxx
正序读取文件,如 cat file.txt
,一个目录同时具有读权限和执行权限才可打开查看内部文件
cat -n file
查看文件file时显示行号
more file
查看file文件,打开后默认只显示一屏内容,终端底部显示阅读进度,Enter
滚动一行,Space
滚动一屏,h
显示帮助,q
退出
tail file
查看文件前10行和后10行
tail -n 1 file
查看最新增的1行
file text
查看text文件类型
vimdiff env.txt export.txt set.txt
vim编辑器diff比较该三个文件的内容
变量
declare tmp
声明变量tmp,变量名只能是英文字母、数字或者下划线,且不能以数字开头,也可不声明直接复制,如把PATH赋值给变量mypath:mypath=$PATH
tmp=judy
将字符串judy赋值给变量tmp,等号两边不能有空格
echo $tmp
读取变量tmp
zsh
创建子Shell,exit
退出子Shell
export tmp
将自定义变量tmp导出为环境变量,在子Shell中也能访问
set
显示当前Shell所有变量
env
显示与当前用户相关的环境变量
保存在当前用户的Home目录下的.profile
文件只对当前用户生效,要添加永久生效的环境变量,需要打开 /etc/profile
文件,在文件末尾添加想加的变量
echo $PATH
查看 PATH
环境变量的内容,PATH
里面的路径以 :
分割
gcc -o hello_world hello_world.c
将 hello_world.c
生成可执行文件 hello_world
,gcc生成二进制文件默认具有可执行权限
./hello_world
运行hello_world程序
PATH=$PATH:/home/judy/mybin
添加自定义路径到 PATH
环境变量,必须用绝对路径。添加后可在任意目录下执行mybin中的命令,比如mybin中有 hello_world
执行文件,现在可以其他目录直接执行 hello_world
cat /etc/shells
查看当前系统已安装的Shell
echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc
将标准输出以追加方式重定向到 .zshrc
文件中,每次启动Shell时会自动执行 PATH=$PATH:/home/shiyanlou/mybin
,,zshrc
是使用环境的默认配置而文件。如说Shell使用的是Bash,则为 .bashrc
source .zshrc
让zshrc配置文件中修改的东西立即生效,同 . ./.zshrc
,.
后面有一个空格,且后面的文件必须指定完整的绝对路径或相对路径,source
则不需要
mypath=${mypath%/home/shiyanlou/mybin}
mypath为变量名,%后为匹配字串,从尾开始匹配,删除符合匹配字串的最短数据
unset mypath
删除环境变量mypath
文件查找
whereis find
搜索二进制文件,从数据库中查找并列出含有find的路径
locate /etc/sh
递归查找/etc下所有以sh开头的文件,查询 /var/lib/mlocate/mlocate.db
数据库检索,该数据库为系统定时更新,所有刚添加的文件可能找不到,需要手动执行sudo updatedb
再查找
locate /usr/share/*.jpg
查找 /usr/share
下所有jpg文件,如果提示 zsh: no matches found: /usr/share/*.jpg
则需要转义,locate /usr/share/\*.jpg
which nginx
检查是否安装了nginx程序,只从 PATH
环境变量搜索并返回第一个搜索结果,可查看某个系统命令是否存在以及执行的哪个地方的命令
sudo find /etc/ -name interfaces
在 /etc/
目录下搜索名字为interfaces的文件或目录,访问/etc目录下所有文件,加root权限所以前面加上 sudo
find ~ -newer /etc
列出当前用户目录下比/etc目录更新的文件
find ~ -mtime 0
查找当他(24小时之内)有改动的文件
-mtime -n
列出n天内(包含n天)被修改过的文件
-mtime +n
列出n天之前(不包含n天)被修改过的文件
-mtime n
列出n天之前的“一天之内”修改过的文件
文件打包和解压
zip -r -q -o judy.zip /home/judy/Desktop
将 /home/judy/Desktop
打包成 judy.zip
。
-r
递归打包子目录的全部内容
-q
安静模式,打包过程屏幕无输出
-o
输出文件,后面紧跟打包输出文件名
du -h judy.zip
查看打包后的文件大小
zip -r -9 -q -o judy_9.zip /home/judy/Desktop -x ~/*.zip
排除之前打包的zip文件,按压缩级别为9打包
-9
压缩级别,有1(最小)到9(最大)
-x
排除文件
zip -r -e -o judy_encryption.zip /home/judy/Desktop
加密压缩
-e
加密
zip -r -l -o judy.zip /home/judy/Desktop
将 LF
转换为 CR+LF
,以便在windows系统上查看时换行正常
unzip judy.zip
解压
unzip -q judy.zip -d ziptest
使用安静模式将文件解压到ziptest目录,目录不存在的话自动创建
unzip -l judy.zip
不解压的情况下查看压缩包内容
unzip -O GBK 中文压缩文件.zip
指定编码问题,避免中文乱码
tar -P -cf judy.tar /home/judy/Desktop
压缩成tar包
-P
保留绝对路径符
-c
创建一个tar包
-f
指定创建的文件名,后面紧跟文件名
tar -xf judy.tar -C tardir
解压到指定路径的已存在目录tardir
-x
解压
-C
指定已存在目录
tar -tf judy.tar
不解压查看压缩包内容
tar -czf judy.tar.gz /home/judy/Desktop
用 gzip
创建 .tar.gz
文件
tar -xzf judy.tar.gz
解压
磁盘管理
df -h
查看磁盘容量
du -h
查看目录容量
du -h -d 0 ~
查看1级目录信息
du -h -d 1 ~
查看2级目录信息
-d
查看目录深度
du -s
显示总计
dd of=test bs=10 count=1
从标准输入设备读入用户输入,输入完后,继续在终端打字,作为用户输入,只读取10个字节,最后输出到文件
同 dd if=/dev/stdin of=test bs=10 count=1
dd
转换和复制文件,选项格式为选项=值
bs
指定块大小,默认单位为Byte,也可指定为 K, M, G
count
指定块数量
if
input file 输入文件
of
output file 输出文件
dd if=/dev/stdin of=/dev/stdout bs=10 count=1
从标准输入设备读入用户输入,输入完后,继续在终端打字,作为用户输入,最后输出到标准输出
dd if=/dev/stdin of=test bs=10 count=1 conv=ucase
将输入的英文字符转换为大写再写入test文件
dd if=/dev/zero of=virtual.img bs=1M count=256
从 /dev/zero
设备创建一个容量为256M的空文件
sudo mkfs.ext4 virtual.img
将虚拟磁盘镜像格式化为ext4文件系统
sudo fdisk virtual.img
进入磁盘分区模式
sudo mount
查看主机已挂载的文件系统
mount -o loop -t ext4 virtual.img /mnt
挂载创建的虚拟磁盘镜像到 /mnt
目录
-o
option,后面跟操作选项
-t
后面跟文件系统类型
sudo umount /mnt
卸载已挂载磁盘
sudo fdisk -l
查看硬盘分区表信息
sudo losetup /dev/loop0 virtual.img
建立镜像与回环设备对的关联
sudo losetup -d /dev/loop0
解除设备关联