一、文件/文件夹管理
1. ls命令
就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 或 ll,除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
2. cd 命令
changeDirectory的缩写,作用是切换文件夹
(1)进入根目录
cd /
(2)进入"家"目录
cd ~
(3)进入上一次工作路径
cd -
(4)把上个命令的参数作为cd参数使用。
cd !$
(5)返回当前目录的上一级目录
cd ..
拓展:家目录即用户的目录如root 用户目录,根目录则是最上层,即根目录包含家目录
3. pwd命令
查看当前所在目录的路径
(1)查看当前路径
pwd
(2)查看软链接的实际路径
pwd -P
4. mkdir命令
创建文件夹
(1)在指定目录下创建文件夹,若这个指定目录不存在则报错
mkdir 【文件夹路径+文件夹名】
(2)在指定目录下创建文件夹,若这个指定目录不存在则 创建这个目录
mkdir -p 【文件夹路径+文件夹名】
5. rmdir 命令
删除空文件夹,注意这个目录只能删除空文件夹
(1)删除一个空目录
rmdir 【文件】
(2)删除一个空目录,如果删除后使上级目录也为空,则一并删除
rmdir -p【文件】
6. rm 命令
删除一个目录中的一个或多个文件或目录,如果没有使用 - r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状 rm [选项] 文件 。
(1)删除任何.txt文件;删除前逐一询问确认
rm -i *.txt
(2)删除test子目录及子目录中所有档案删除,并且不用一一确认
rm -rf test
(3)删除以-k开头的文件
rm -- -k*
7. mv 命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,可刚多个文件以空格分隔作为第一参数,移动多个文件到参数2指定的目录中。
(1)将文件test.log重命名为test1.txt
mv test.log test1.txt
(2)将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的所有文件到上一级目录
mv * ../
8. find 命令
用于在文件树中查找文件,并作出相应的处理
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件
d - 目录
c - 字符设备文件
l - 符号链接文件
p - 管道文件
f - 普通文件
-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项
9. cp 命令
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
10. touch 命令
创建一个或多个空文件
(1) 创建一个新的空文件
touch file.txt
(2) 创建多个新的空文件
touch file1.txt file2.txt file3.txt
二、 系统管理
1. fdisk命令
fdisk命令是Linux操作系统中一个用于分区硬盘的命令行工具。它可以用来创建、删除、调整分区以及设置分区属性等操作
fdisk -l #查看系统分区信息
#为一块新的SCSI硬盘进行分区
# 进入交互式分区工具(/dev/sda为示例)
fdisk /dev/sda
# 创建新分区
n
# 按照提示设置分区大小和起始位置
# 删除分区
d
# 选择要删除的分区号
# 修改分区类型
t
# 选择要修改的分区号
# 按照提示选择新的分区类型
# 保存分区表更改
w
2. chown命令
更改文件或目录的所有者(owner)的命令
帮助记忆:【change owner】
用法:
chown [选项] <新所有者> <文件/目录>
常用选项:
-R 递归地修改指定目录下的所有文件和子目录的所有者。
--reference=<参考文件/目录> 从参考文件/目录中获取所有者和所属组的信息,并应用到目标文件/目录上。
示例:
1.将文件file.txt的所有者改为root用户:
chown root file.txt
2.将目录dir1以及其子目录和文件的所有者改为user1:
chown -R user1 dir1
3.根据参考文件ref.txt的所有者和所属组信息,将目录dir2下的所有文件和子目录的所有者和所属组一致化:
chown --reference=ref.txt -R dir2
注意:使用chown命令需要具有足够的权限,一般需要以root用户或具有sudo权限的用户身份执行。
3. chgrp命令
改变文件或目录所属群组(group)的命令
帮助记忆:【change group】
用法:
chgrp [参数] [属组GID|属组名称] [文件|目录]
选项:
-R 递归处理,将指定目录下的所有文件及子目录一起更改
-v 显示命令执行过程
示例:
把文件ztj.sh属组由root更改为ztj
chgrp -v ztj ztj.sh
4. chmod 命令
改变linux系统文件或目录的访问权限的命令
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用ls -l 或 ll查找
示例:
以文件log2012.log为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。
常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
示例:
(1)增加文件t.log所有用户可执行权限
chmod a+x t.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
(3)给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)将test目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
5. useradd命令
useradd命令是一个Linux系统中用于添加新用户的命令。
基本语法:
useradd [选项] 用户名
选项:
-c, --comment COMMENT:设置用户描述信息
-d, --home HOME_DIR:设置用户的主目录
-e, --expiredate EXPIRE_DATE:设置账号的失效日期
-f, --inactive INACTIVE:设置账号的非活动期限
-g, --gid GROUP:设置用户所属的主要组
-G, --groups GROUPS:设置用户所属的其他附加组
-m, --create-home:创建用户的主目录
-s, --shell SHELL:设置用户的登录Shell
-k, --skel SKEL_DIR:指定用于创建用户家目录的骨架目录
-p, --password PASSWORD:设置用户的密码
-r, --system:创建系统账号
-U, --user-group:同时创建与用户名同名的用户组
-M, --no-create-home:不创建用户主目录
示例:
(1)创建一个名为"testuser"的新用户,并指定用户描述信息和主目录:
useradd -c "Test User" -d /home/testuser testuser
(2)创建一个新用户"devuser",并将其添加到"developers"组中:
useradd -G developers devuser
(3)创建一个系统账号"sysuser",并设置其主目录为"/var/sysuser":
useradd -r -d /var/sysuser sysuser
6. groupadd命令
groupadd命令是用于在Linux系统中创建一个新的用户组的命令。
它的基本语法如下:
groupadd [选项] 组名
其中,选项可以包括:
-g GID:指定新用户组的GID(组ID)。
-o:允许新用户组的GID与已存在用户组的GID重复。
-r:创建一个系统用户组。
示例:
例如,要创建一个名为"testgroup"的用户组,可以使用以下命令:
groupadd testgroup
7. passwd命令
passwd命令是一个在Linux系统中用于更改用户密码的命令。它允许用户更改自己的密码或者管理员更改其他用户的密码。
如果你想要更改自己的密码,只需要在终端中输入passwd命令,然后按照提示输入当前密码和新密码即可。
如果你是管理员,想要更改其他用户的密码,需要使用sudo passwd <用户名>命令。其中"<用户名>"是你想要更改密码的用户的用户名。然后按照提示输入管理员密码和新密码即可。
常用选项:
-d 用户名 #删除用户密码也能登陆
-S 用户名 #查询账号密码
示例:
$ passwd
当前密码:*******
新的密码:*******
重新输入新的密码:*******
$ sudo passwd alice
[sudo] password for admin: ******
新的密码:*******
重新输入新的密码:*******
需要注意的是,passwd命令只能由管理员或用户本人执行,普通用户不能更改其他用户的密码。另外,为了保护账户安全,密码应该复杂且定期更换。
8. usermod命令
usermod命令是用于修改用户账户的命令。它可以用来修改用户的用户名、用户ID、所属组、用户主目录、登录shell等信息。
使用usermod命令需要管理员权限,具体使用方法如下:
(1)修改用户名:usermod -l new_username old_username
示例:usermod -l user1 user2,将用户user2的用户名修改为user1。
(2)修改用户ID:usermod -u new_user_id username
示例:usermod -u 1001 user1,将用户名为user1的用户的用户ID修改为1001。
(3)修改所属组:usermod -g group_name username
示例:usermod -g group1 user1,将用户名为user1的用户的所属组修改为group1。
(4)修改用户主目录:usermod -d new_home_directory username
示例:usermod -d /home/user1 user1,将用户名为user1的用户的用户主目录修改为/home/user1。
(5)修改用户登录shell:usermod -s new_login_shell username
示例:usermod -s /bin/bash user1,将用户名为user1的用户的登录shell修改为/bin/bash。
注意:使用usermod命令修改用户信息时,需要谨慎操作,避免对系统造成影响或引起安全问题。
9. Userdel命令
userdel命令用于删除用户账户及其关联的用户组和用户主目录。当执行userdel命令时,用户账户将被标记为已删除,但用户主目录默认情况下不会被自动删除。
常用选项:
-r:删除用户账户及其用户主目录。使用此选项将同时删除用户主目录,确保用户的所有数据都被清除。
-f:强制删除用户账户。即使用户当前登录,也会被强制删除。
-Z:删除用户账户时,不会删除用户的安全上下文。
10. 系统服务控制操作
service [servicename] start/stop/restart 或
/etc/init.d/[servicename] start/stop/restart
11. 查看硬件信息
注意有些命令无法使用是因为没有下载该命令的插件
uname -a 查看内核版本
cat /etc/issue 查看ubuntu版本
lsusb 查看usb设备
sudo ethtool eth0 查看网卡状态
cat /proc/cpuinfo 查看cpu信息
lshw 查看当前硬件信息
sudo fdisk -l 查看磁盘信息
df -h 查看硬盘剩余空间
free -m 查看当前的内存使用情况
ps -A 查看当前有哪些进程
12. kill 命令
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程(即 kill -9),使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
常用选项:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
13. 重启和关闭 Linux 系统
reboot Init 6 或 reboot 或 shutdown -r now 重启LINUX系统
halt Init 0 Shutdown –h now 关闭LINUX系统
三、 打包/解压(tar)
tar命令
用来压缩和解压文件。tar本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
常用参数:
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
gzip实例:压缩gzip fileName .tar.gz和.tgz 解压:gunzip filename.gz或gzip -d filename.gz
对应:tar zcvf filename.tar.gz tar zxvf filename.tar.gz
bz2实例:压缩bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2
对应:tar jcvf filename.tar.gz 解压:tar jxvf filename.tar.bz2
示例:
(1)将文件全部打包成tar包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)将/etc下的所有文件及目录打包到指定目录,并使用gz压缩
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)
tar -ztvf /tmp/etc.tar.gz
(4)要压缩打包/home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
tar -c 创建包 –x 释放包 -v 显示命令过程 –z 代表压缩包
tar –cvf benet.tar /home/benet 把/home/benet目录打包
tar –zcvf benet.tar.gz /mnt 把目录打包并压缩
tar –zxvf benet.tar.gz 压缩包的文件解压恢复
tar –jxvf benet.tar.bz2 解压缩
四、 make 编译
1. make工具
人们通常利用 make 工具来自动完成编译工作
这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件
如果某个头文件被修改了,则重新编译所有包含该头文件的源文件
利用这种自动编译可大大简化开发工作,避免不必要的重新编译
2. make是如何工作的
1、make会在当前目录下找名字叫“Makefile”或“makefile”
2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“main”这个文件,并把这个文件作为最终的目标文件
3、如果main文件不存在,或是main所依赖的后面的 .o 文件的文件修改时间要比main这个文件新,那么,他就会执行后面所定义的命令来生成main这个文件
4、如果main所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件
5、当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件make的终极任务,也就是执行文件main了
注:如果DEPENDENCIES中有一个或多个文件更新的话,COMMAND就要执行,这就是Makefile最核心的内容
make 编译
make install 安装编译好的源码包
五、 apt命令
apt命令是一个Linux系统中常用的包管理工具,用于安装、更新、卸载软件。
示例:
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package - - reinstall 重新安装包
sudo apt-get -f install 修复安装”-f = –fix-missing”
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 是查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
sudo apt-get clean 清理所有软件缓存(即缓存在/var/cache/apt/archives目录里的deb包)
查看软件xxx安装内容 #dpkg -L xxx
查找软件 #apt-cache search 正则表达式
查找文件属于哪个包 #dpkg -S filename apt-file search filename
查询软件xxx依赖哪些包 #apt-cache depends xxx
查询软件xxx被哪些包依赖 #apt-cache rdepends xxx
增加一个光盘源 #sudo apt-cdrom add
系统升级
#sudo apt-get update
#sudo apt-get upgrade
#sudo apt-get dist-upgrade
清除所以删除包的残余配置文件
#dpkg -l |grep ^rc|awk ‘{print $2}’ |tr ["\n"] [" “]|sudo xargs dpkg -P -
编译时缺少h文件的自动处理
#sudo auto-apt run ./configure
查看安装软件时下载包的临时存放目录
#ls /var/cache/apt/archives
备份当前系统安装的所有包的列表
#dpkg –get-selections | grep -v deinstall > ~/somefile
从上面备份的安装包的列表文件恢复所有包
#dpkg –set-selections < ~/somefile sudo dselect
清理旧版本的软件缓存
#sudo apt-get autoclean
清理所有软件缓存
#sudo apt-get clean
删除系统不再使用的孤立软件
#sudo apt-get autoremove
查看包在服务器上面的地址
#apt-get -qq –print-uris install ssh | cut -d\’ -f2
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!