常用的命令
· 阅读需 5 分钟
Linux 常用的命令和配置。
文件相关
文件浏览
# 可用带-F参数的ls命令轻松区分文件和目录
ls -F
# 显示隐藏文件及目录
ls -a
# 列出了当前目录下包含的子目录中的文件
ls -F -R
ls -FR
# 只列出目录本身的信息,不列出其中的内容
ls -d
# -l参数会产生长列表格式的输出
ls -l
# 要查看文件或目录的inode编号
ls -i
# 组合
ls -alF
文件排序和搜索
排序
# 按值排序
sort -n file2
# 按月份排序
sort -M file3
# 按字段分隔的数据排序,用-t参数来指定字段分隔符,然后用-k参数来指定排序的字段,根据用户ID进行数值排序
sort -t ':' -k 3 -n /etc/passwd
# 文件大小降序
du -sh * | sort -nr
搜索
grep [options] pattern [file]
# 反向搜索 -v
# 要显示匹配模式的行所在的行号 -n
# 有多少行含有匹配的模式 -c
# 指定多个匹配模式 -e
grep -e t -e f file1
文件压缩和归档
# gzip压缩文件,gunzip解压,gzcat查看压缩过的文本内容
gzip myprog
gzip my*
# 归档文件
tar function [options] object1 object2 ...
# 归档文件,查看文件,提取文件
tar -cvf test.tar test/ test2/
tar -tf test.tar
tar -xvf test.tar
# 解压.tgz结尾的文件
tar -zxvf filename.tgz
文件权限
/etc/passwd 文件包含了与用户有关的信息,文件中的每一行中的字段包含了:
- 登录用户名
- 用户密码
- 用户账户的 UID(数字形式)
- 用户账户的组 ID(GID)(数字形式)
- 用户账户的文本描述(称为备注字段)
- 用户 HOME 目录的位置
- 用户的默认 shell
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
绝大多数 Linux 系统都将用户密码保存在/etc/shadow 文件中,只有 root 用户才能访问/etc/shadow 文件。在/etc/shadow 文件的每条记录中都有 9 个字段:
-
与/etc/passwd 文件中的登录名字段对应的登录名
-
加密后的密码
-
自上次修改密码后过去的天数密码(自 1970 年 1 月 1 日开始计算)
-
多少天后才能更改密码
-
多少天后必须更改密码
-
密码过期前提前多少天提醒用户更改密码
-
密码过期后多少天禁用用户账户
-
用户账户被禁用的日期(用自 1970 年 1 月 1 日到当天的天数表示)
-
预留字段给将来使用
cat /etc/shadow
bin:*:17246:0:99999:7:::
用默认系统参数创建一个新用户账户
useradd -m test
ls -al /home/test
userdel 命令会只 删除/etc/passwd 文件中的用户信息,而不会删除系统中属于该账户的任何文件,如果加上-r 参数,userdel 会删除用户的 HOME 目录以及邮件目录。
/usr/sbin/userdel -r test
ls -al /home/test
组
# 创建新组
/usr/sbin/groupadd shared
tail /etc/group
# 把用户分配到该组
/usr/sbin/usermod -G shared test
# 修改组名
/usr/sbin/groupmod -n sharing shared
# 修改组GID
/usr/sbin/groupmod -g 506 505
改变文件权限
# umask命令用来设置所创建文件和目录的默认权限
umask 026
# 改变权限
chmod 760 newfile
改变文件所属用户
# 用登录名或UID指定
chown testuser newfile
# 同时改变文件的所属用户和所属组
chown testuser.shared newfile
# -R递归改变子目录和文件所属关系,-h改变该文件的所有符号链接文件的所属关系
chown -R testuser newfile
# 更改文件或目录的默认属组
chgrp shared newfile
用户共享文件
mkdir testdir
chgrp shared testdir
chmod g+s testdir
umask 002
cd testdir
touch testfile
ls -l
环境变量
全局环境变量对于 shell 会话和所有生成的子 shell 都是可见的。局部变量则只对创建它们的 shell 可见。
# 查看全局变量
env
printenv
printenv HOME
echo $HOME
# 查看所有环境变量,包括局部变量、全局变量 以及用户定义变量
set
# 设置局部用户定义变量,变量名、等号和值之间没有空格
echo $my_variable
my_variable=Hello
my_variable="Hello World"
echo $my_variable
# 设置全局环境变量
my_variable="I am Global now"
export my_variable
echo $my_variable
# 删除环境变量,unset
unset my_variable
# 设置PATH环境变量,系统重启后消失
echo $PATH
PATH=$PATH:/home/christine/Scripts
PATH=$PATH:.
# 环境变量持久化
$HOME/.bashrc
什么时候该使用$,什么时候不该使用$:如果要用到变量,使用$;如果要操作变量,不使用 $。这条规则的一 个例外就是使用 printenv 显示某个变量的值。
关机halt,重启reboot