Linux命令学习记录
目录管理
创建删除文件(夹)
- touch filename: 创建空的新文件
- rm [命令选项] filename: 删除文件
- mkdir dirname: 创建新文件夹(默认存在两个特殊目录,分为是.和. .)
- rmdir dirname (rm -r dirname): 删除文件夹
复制、剪切和重命名
- cp 参数 源文件 目的目录: 将源文件拷贝到目的目录下
- mv 参数 目录名: 将文件filename剪切到文件夹dirname下,并重命名为new_filename(可以不重命名)
将file复制到dir目录下
cp file dir
将file复制到dir目录下并重命名cpfile
cp file dir/cpfile
将file重命名为cpfile
mv file cpfile
将file移动到dir目录下
mv file dir
将file移动到dir目录下,并重命名为cpfile
mv file dir/cpfile
复制文件夹和文件操作类似,但要带上-r参数
将目录dir拷贝到Dir目录下
cp -r dir Dir
重命名剪切不需要-r,和文件一样
将目录dir重命名为Dir
mv dir Dir
上述命令练习:
查看文件
- cat 参数 文件名:查看文件内容
- head 参数 文件名:从文件的开头显示内容,默认情况下只显示前 10行的内容;
- tail 参数 文件名:从文件的结尾显示内容,默认情况下只显示最后 10行的内容;
- ls 参数 目录:查看一个目录下的内容
查看当前目录下的文件 file1的所有内容;
cat file1
查看当前目录下的文件 file2的头5行内容;
head -n 5 file2
查看当前目录下的文件 file2的末尾5行内容;
tail -n 5 file2
查看目录 /home目录下的所有内容(包括隐藏内容)。
ls -a /home
获取帮助
- whatis:简短的命令功能描述,我最喜欢这个
- man [章节] command
- info [命令参数] command=
命令练习(按q退出帮助文档):
使用man查询 C库中的 fopen函数使用方法。
man 3 fopen
用户管理
用户管理操作必须以 root权限才能执行,如果是普通用户要在命令前加 sudo命令来提升权限为 root权限,初次会要求输入密码,在Linux的会话时间内不再需要输入密码。
用户操作
- useradd [命令参数] 参数:创建一个新用户
- userdel [命令参数] 参数:删除用户
创建用户时的参数 -m 表示自动建立用户的登入目录,也在/home下;
删除用户时的参数-r 表示删除用户的同时,删除与用户相关的所有文件,所以删除之后/home下没有了test用户的文件夹。
因为系统默认是不会给新创建的用户自动创建一个文件夹用于用户账户接收邮件,所以在使用 userdel -r命令删除的时候会提醒 /var/mail/test文件夹不存在。
用户密码
- passwd [命令参数] 参数:修改或删除密码
- chpasswd [命令参数] 参数:用于批量修改用户密码,从标准输入批量读取成对的用户名和密码
新建一个用户test
sudo useradd -m test
为test设置密码,需要输入两次确认密码
sudo passwd test
删除密码
sudo passwd -d test
删除用户test
sudo userdel -r test
查看密码信息(前两个冒号之间为密码,为!或者*表示没有密码)
sudo tail /etc/shadow
切换用户
- su [命令参数] 参数
- 使用exit命令退出当前身份
切换到test用户,不更改用户目录
su -p test / su test
切换到test用户,命令(whoaim)执行后恢复到原来身份
su -c whoami test
切换到test用户,并更改用户目录
su -l test
用户组操作
- groupadd [命令参数] 参数:创建一个新用户组
- groupdel 参数:删除一个已经存在的用户组
创建用户组testGroup
sudo groupadd testGroup
创建用户组并指定组ID为1111
sudo groupadd -g 1111 testGroup
删除用户组
sudo groupdel testGroup
查看组信息
tail etc/group
查看用户所属组
- id [命令参数] 参数:查看用户所属组
- groups 参数:同上
一个用户可以属于多个组
查看用户zou所属组id
id -g zou
查看用户zou所属组
groups zou
更改所属组(需要root权限)
- usermod -g 组名 用户名:(一个用户仅仅属于某一个组,而不是同时属于多个组),将用户名用户改到组名组中
- usermod -a -G 组名 用户名:给一个用户添加一个新的组,同时保留原来有所的组
复习新建用户参数(g/G):
- useradd -g 组名 用户名:将其所属组直接改为组名组,没有默认组
- useradd -G 组名 用户名:新建用户,并添加所属组,有默认组
可以看到默认情况下,创建用户后只属于默认创建的私有组,组名同用户名。
usermod、groupmod的其他用法
更新用户名
usermod -l newName oldName
更改用户的登录路径
usermod -d /home/newName newName
更改组名
groupmod -n newGroup oldGroup
文件权限
ls带上-l参数,第一列就是文件权限。
- chmod [who] [+ | - | =] [mode] 文件名
参数who | 含义 |
---|---|
u | 文件或目录的所有者 |
g | 与文件属主有相同组ID的所有用户 |
o | 其他(others)用户 |
a | 所有(all)用户,默认值 |
每一个文件的权限有三组,分为别u、g、o的权限。
操作符 | 含义 |
---|---|
+ | 添加某个权限 |
- | 取消某个权限 |
= | 其赋予给定权限并取消其他所有权限 |
参数mode | 含义 | 数字设定 |
---|---|---|
r | 可读 | 4 |
w | 可写 | 2 |
x | 可执行 | 1 |
将系统已存在文件 oldFile1的所有者权限设置为可执行;
chmod u=x oldFile1
为系统已存在文件 oldFile2的同组用户权限删除可写权限;
chmod g-w oldFile2
为系统已存在文件 oldFile3的其他组用户权限添加可执行权限;
chmod o+x oldFile3
将系统已存在文件 oldFile4的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行;
chmod 421 oldFile4
目录权限
和文件权限设置修改基本一致,但是如果要对目录下的子目录同样设置,要加-R(recursive)参数。
目录只有写权限,无法创建新文件。原因是目录中的写权限( w)必须与执行权限( x)配合才能创建和删除目录下的内容。
将系统已存在目录 oldDir1的所有者权限设置为可执行;
chmod u=x oldDir1
为系统已存在目录 oldDir2的同组用户权限删除可写权限;
chmod g-w oldDir2
为系统已存在目录 oldDir3的其他组用户权限添加可执行权限;
chmod o+x oldDir3
将系统已存在目录 oldDir4的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行;
chmod 421 oldDir4
将系统已存在目录 oldDir5的权限设置所有者权限为可读,同组用户权限为可写,其他用户权限为可执行,同时将该目录下的所有子目录或文件权限一并处理。
chmod -R 421 oldDir5
文件/目录所有者
每个文件和目录都有其所有者Owner,文件/目录的所有者就是创建该文件/目录的用户。
ls带上-l参数,第三列就是Owner信息。
- chown 用户名/用户ID 文件名:修改文件所有者
将系统已存在文件 oldFile的所有者设置为 oldUser;
chown oldUser oldFile
将系统已存在目录 oldDir1的所有者设置为 oldUser;
chown oldUser oldDir1
将系统已存在目录 oldDir2以及其所有子目录和子文件的所有者设置为oldUser;
chown -R oldUser oldDir2
文件/目录所属组
利用ls命令带参数-l,第四列是文件所属组信息,可以看到hello.txt文件的所属组是zou,因为该文件是由用户zou创建,而zou创建 test文件的时候其所属组是 zou。
- chgrp 用户组名/组ID 文件名:更改文件的所属组
- chown:用户组名/组ID 文件名:更改文件的所有者和所属组
将系统已存在文件 oldFile的所属组设置为 oldGroup;
chgrp oldGroup oldFile
将系统已存在目录 oldDir1的所属组设置为 oldGroup;
chgrp oldGroup oldDir1
将系统已存在目录 oldDir2以及其所有子目录和子文件的所属组设置为 oldGroup
chgrp -R oldGroup oldDir2
将系统已存在目录Dir以及其所有子目录和子文件的所有者设置为zou,所属组设置为zou
chown -R zou:zou Dir
也可以使用用户组ID,查看zou的组ID(可以看到组ID为1000):
将文件hello.txt的所属组设置为zou,其组ID为1000
chgrp 1000 hello.txt
使用空间
利用df、du命令查看使用空间:
- df 命令参数 参数:显示磁盘分区上的可使用的磁盘空间
- du 命令参数 参数:对文件和目录磁盘使用的空间的查看
以可读性较高的方式显示系统已存在文件 oldFile的所占磁盘大小;
du -h oldFile
列出系统已存在目录 oldDir下的所有文件的总容量,同时将每个文件大小也列出来;
du -a oldDir