一、文件/文件夹管理
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下的所有文件和子目录的所有者和所属组一致化:
java
chown --reference=ref.txt -R dir2
注意:使用chown命令需要具有足够的权限,一般需要以root用户或具有sudo权限的用户身份执行。
3. chgrp命令
改变文件或目录所属群组(group)的命令
帮助记忆:【change group】
用法:
java
chgrp [参数] [属组GID|属组名称] [文件|目录]
选项:
java
-R 递归处理,将指定目录下的所有文件及子目录一起更改
-v 显示命令执行过程
示例:
把文件ztj.sh属组由root更改为ztj
java
chgrp -v ztj ztj.sh
4. chmod 命令
改变linux
系统文件或目录的访问权限的命令
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用
ls -l 或 ll
查找
示例:
java
以文件log2012.log为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。
java
常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
示例:
java
(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系统中用于添加新用户的命令。
java
基本语法:
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:不创建用户主目录
示例:
java
(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系统中创建一个新的用户组的命令。
java
它的基本语法如下:
groupadd [选项] 组名
其中,选项可以包括:
-g GID:指定新用户组的GID(组ID)。
-o:允许新用户组的GID与已存在用户组的GID重复。
-r:创建一个系统用户组。
示例:
java
例如,要创建一个名为"testgroup"的用户组,可以使用以下命令:
groupadd testgroup
7. passwd命令
passwd命令是一个在Linux系统中用于更改用户密码的命令。它允许用户更改自己的密码或者管理员更改其他用户的密码。
如果你想要更改自己的密码,只需要在终端中输入passwd命令,然后按照提示输入当前密码和新密码即可。
如果你是管理员,想要更改其他用户的密码,需要使用sudo passwd <用户名>命令。其中"<用户名>"是你想要更改密码的用户的用户名。然后按照提示输入管理员密码和新密码即可。
常用选项:
java
-d 用户名 #删除用户密码也能登陆
-S 用户名 #查询账号密码
示例:
java
$ passwd
当前密码:*******
新的密码:*******
重新输入新的密码:*******
java
$ sudo passwd alice
[sudo] password for admin: ******
新的密码:*******
重新输入新的密码:*******
需要注意的是,passwd命令只能由管理员或用户本人执行,普通用户不能更改其他用户的密码。另外,为了保护账户安全,密码应该复杂且定期更换。
8. usermod命令
usermod
命令是用于修改用户账户的命令。它可以用来修改用户的用户名、用户ID、所属组、用户主目录、登录shell等信息。
使用usermod
命令需要管理员权限,具体使用方法如下:
java
(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命令时,用户账户将被标记为已删除,但用户主目录默认情况下不会被自动删除。
常用选项:
java
-r:删除用户账户及其用户主目录。使用此选项将同时删除用户主目录,确保用户的所有数据都被清除。
-f:强制删除用户账户。即使用户当前登录,也会被强制删除。
-Z:删除用户账户时,不会删除用户的安全上下文。
10. 系统服务控制操作
java
service [servicename] start/stop/restart 或
/etc/init.d/[servicename] start/stop/restart
11. 查看硬件信息
注意有些命令无法使用是因为没有下载该命令的插件
java
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用户只能影响自己的进程。
常用选项:
java
-l 信号,若果不加信号的编号参数,则使用"-l"参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
13. 重启和关闭 Linux 系统
java
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