用户管理
who am i 查看用户
sudo adduser lilei 添加新用户
su -l lilei 切换用户
用户组
groups shiyanlou 查看所属实验组
cat /etc/group | sort 查看用户组信息
cat /etc/group | grep -E "shiyanlou" 获取group_name:password:GID:user_list
将其他用户添加sudo权限
su shiyanlou # 此处需要输入shiyanlou用户密码
groups lilei
sudo usermod -G sudo lilei
groups lilei
删除用户
sudo deluser lilei --remove-home
查看文件权限
ls -l
ls -A .. 显示上一级目录的隐藏文件
ls -Al 查看目录的完整属性 ls -dl 以人类看得懂的方式显示
变更文件拥有者
sudo chown shiyanlou iphone6
修改文件权限
chmod 770 iphone6
adduesr和useradd的区别
useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
linux的目录结构
FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等;第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统登录文件,/usr/share 放置共享数据等等。
pwd获取当前路径
绝对路径简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点
相对路径
相对路径是以当前目.为起点,以你所要到的目录为终点
touch myfile
mkdir mydir
cp test father/son/grandson复制文件
cp -r father family 加上 -r 或者 -R 参数,表示递归复制
rm -f test 强制删除文件
rm -r family 强制删除目录
mv file1 Documents 移动文件
mv file1 myfile重命名文件
touch file{1..5}.txt 使用通配符批量创建 5 个文件
rename 's/ \.txt/\.c/' *.txt 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件
rename 'y/a-z/A-Z/' *.c 批量将这 5 个文件,文件名改为大写
cat -n passwd 加上-n 参数显示行号
查看文件
more/less/head/tail /etc/passwd
查看文件类型
file /bin/ls
编辑文件命令
vi/vim fielname
环境变量和文件查找
declare tmp;tem=shiyanlou;$echo=tem
通常我们会涉及到的变量类型有三种:
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
- Shell 本身内建的变量。
- 从自定义变量导出的环境变量。
set | 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export | 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
shell查找路径
echo $PATH
创建Shell 脚本文件
gedit hello_shell.sh
gedit hello_world.c 编译gcc -o hello_world hello_world.c ./hello_world
添加自定义路径到“ PATH ”环境变量
PATH=$PATH:/home/shiyanlou/mybin必须使用绝对路径
echo "PATH=$PATH:/home/shiyanlou/mybin" .zshrc
上述命令中 >> 表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 > 是以覆盖的方式重定向到一个文件中
变量删除 unset temp
source .zshrc 立即生效(等同于: . ./.zshrc)
搜索文件
whereis who 简单快速
locate /etc/sh (查找 /etc 下所有以 sh 开头的文件)快而全
locate /usr/share/ \*.jpg 查找 /usr/share/ 下所有 jpg 文件
如果想只统计数目可以加上 -c 参数,-i 参数可以忽略大小写进行查找,whereis 的 -b、-m、-s 同样可以使用
which man 小而精
sudo find /etc/ -name interfaces 精而细
这条命令表示去 /etc/ 目录下面 ,搜索名字叫做 interfaces 的文件或者目录。
sudo find /etc/ -name \*.list
文件打包和解压缩
zip打包和解压缩
zip -r -q -o shiyanlou.zip /home/shiyanlou
du -h shiyanlou.zip
设置压缩级别为 9 和 1(9 最大,1 最小)
zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/*.zip
du -h -d 0 *.zip ~ | sort 查看文件和排序
解压unzip shiyanlou.zip
使用安静模式解压unzip -q shiyanlou.zip -d ziptest
查看压缩文件的内容 unzip -l shiyanlou.zip
tar打包工具
tar -cf shiyanlou.tar ~ 上面命令中,-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后
tar -xf shiyanlou.tar -C tardir 解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数)
tar -tf shiyanlou.tar 只查看不解包文件 -t 参数
tar -czf shiyanlou.tar.gz ~ 使用 gzip 工具创建 *.tar.gz 文件
tar -xzf shiyanlou.tar.gz 解压 *.tar.gz 文件
文件系统操作和磁盘管理
df
df -h
du -h -d 0 ~ 查看一级目录的信息
du -h -d 1 ~ 查看二级目录的信息
使用 dd 命令创建虚拟镜像文件
顺序执行多条指令:sudo apt-get update;sudo apt-get install some-tool;some-tool
$ which cowsay>/dev/null &&echo"exist" ||echo"not exist" &&判断前面指令$?=0,则执行后面;||判断前面$?≠0则,执行后面,否则跳过
管道
ls -al /etc |less
cut /etc/passwd -d ':' -f 1,6 显示第一和第六个字段
cut /etc/passwd -c -5 显示前五个(包含第五个)
cut /etc/passwd -c5- 显示后面五个(包含第五个)
cut /etc/passwd -c2-5 显示2-5个
匹配字符串
grep -rnI"shiyanlou" ~ -r 参数表示递归搜索子目录中的文件,-n表示打印匹配项行号,-I表示忽略二进制文件
简单的计数工具wc
wc -l /etc/passwd 计算行数
单词数wc -w /etc/passwd 字节数 wc -c /etc/passwd 字符数 wc -m /etc/passwd 最长行字节数wc -L /etc/passw
ls -dl /etc/*/ | wc -l 统计ect目录下所有的目录数
排序命令
cat /etc/passswd |sort字典排序 cat /etc/passwd |sort -r 反转排序
cat /etc/passwd |sort -t':' -k3 -n -t参数用于指定字段的分隔符,这里是以":"作为分隔符;-k 字段号用于指定对哪一个字段进行排序,这里是3,若要按照数字排序就要加上-n参数
uniq用于去除重复命令
history | cut -c 8- | cut-d' ' -f 1 | sort | uniq
history | cut -c 8- | cut-d' ' -f 1 | sort | uniq -dc 输出重复过的行(重复的只输出一个)及重复次数
history | cut -c 8- | cut-d' ' -f 1 | sort | uniq -D 输出所有重复的行