该文档记录了一些常用的linux命令
ls 查看目录
which python3 查看python命令的路径
cd 目录,切换到指定的目录
ip address 查看本机的ip地址
ping ip 尝试ping 目标机的ip,是否连接
pwd 显示当前目录
tar -zxvf xxx.tar 解压*.tar.gz 压缩文件
man 命令 查看命令说明文档,W向上一页,D向下一页,J向下一行,K向上一行,G首航
硬盘操作
df 查看硬盘分区状态
df命令作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间。
df [选项] [文件名]
参数:
-a:--all,显示所有的文件系统,包括虚拟文件系统,参考示例2。
-B:--block-size,指定单位大小。比如1k,1m等,参考示例3。
-h:--human-readable,以人们易读的GB、MB、KB等格式显示,参考示例4。
-H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。
-i:--inodes,不用硬盘容量,而是以inode的数量来显示,参考示例5。
-k:以KB的容量显示各文件系统,相当于--block-size=1k。
-m:以KB的容量显示各文件系统,相当于--block-size=1m。
-l:--local,只显示本地文件系统。
--no-sync:在统计使用信息之前不调用sync命令(默认)。
-sync:在统计使用信息之前调用sync命令。
-P:--portability,使用POSIX格式显示,参考示例6。
-t:--type=TYPE,只显示指定类型的文件系统,参考示例7。
-T:--print-type,显示文件系统类型,参考示例8。
-x:--exclude-type=TYPE,不显示指定类型的文件系统。
--help:显示帮助信息。
--version:显示版本信息。
可参考博客:https://blog.csdn.net/gnail_oug/article/details/70217446
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2
参数注释:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
可参考博客:https://blog.csdn.net/xizaihui/article/details/53307578
系统启动与关闭
init n 切换系统运行级别
参数n:0 关机
1 单用户(root)无网状态,用来做系统维护
2 多用户状态,没有网络文件系统
3 完全的多用户状态,远端连接linux
4 未使用,系统保留
5 完全多用户状态,并且有可视化界面
6 关机并重启
reboot 重启命令
常用目录:
/ 根目录
/home 所有用户的根目录
/usr/bin 用户安装的可执行的系统程序
/usr/local/bin 本地用户安装的应用程序
/etc 系统的配置信息
/boot 系统启动时使用的一些程序
/proc 系统进程的信息
/media 挂载的外部媒体信息(中介:cdrom/usb/dvd/磁盘)
/mnt 针对media的媒体,在挂载时可用的目录
~ 当前用户的根目录
. 当前目录
.. 上一级目录
/ 文件路径的分隔符,window是 \
文件与目录管理:
ls 查看目录文件
-l 列表
-t 时间排序, 降序排
-r 反序
-F 显示路径 /
- R 级联显示子目录及子目录中文件
-a 显示所有文件,包含.隐藏文件
-A 除了 . 和 .. 根目录,之外的其它文件
-i 显示文件的索引号( index number, inode)
mkdir 创建目录
参数:-p 确保目录名称存在,不存在就建一个
-m 指定目录的权限mode(作用相当于chmod)
-v 打印创建的目录信息
rmdir 删除目录
参数:-p 参数多级子目录 (路径为当前文件后的完整路径,且文件夹为空)
-v 打印删除目录信息
touch 创建或更新文件时间
参数:-a 修改所有时间,(文件时间,创建、访问、修改)
-c 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 只更改变动时间
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
-t 使用指定的日期时间,而非现在的时间
例: touch xxx.txt 创建文件
touch b.txt -t 201801221210.20
touch b.txt -d 20180225
cp 复制文件及目录
格式:cp[options] source… directory
参数:-a:此选项通常在复制目录使用,它保留链接、文件属性。并复制目录下的所有内容。其作用等于dpr参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答’y’时目标文件将被覆盖
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r:若给出的源文件是一个目录文件,此时将复制目录下所有的子目录和文件(复制该目录下的所有东西)
-l:不复制文件,只是生成链接文件
例:cp aa.txt ./bb 复制aa.txt 到 ./bb 目录中
cp -a mysql mysql5
cp -p mysql/bin/mysql/abc.txt
cp -f mysql/bin/mysql/abc.txt 强行复制,如果文件存在,则覆盖
cp ppp.txt ooo.txt 将ppp.txt文件中的内容复制到ooo.txt中
mv 移动文件及目录
mv mysql my my和mysql 必须都存在
例:
mv abc.txt my
mv abb.txt abc.txt 重命名 abb.txt —>abc.txt
mv -i abc my 移动abc到my提示是否移动
mv *.txt my 移动所有的.txt文件到my目录 正则不需要加引号
mv mysql* my 移动所有以 mysql开头的所有文件目录到my目录中
rm 删除文件及目录
rm -d 删除空目录
rm -r 递归的删除目录中的文件及子目录
rm -f 不提示的删除文件及目录,只能一级一级的删除
rm -rf
rm -i 删除前提示
tree 树形结构显示目录 sudo apt install tree
-a 显示所有文件和目录,包括隐藏文件。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I<范本样式> 不显示符合范本样式的文件。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-c 用创建时间排序
-D 显示文件及目录最后修改时间
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外
tree my
tree my -P ‘*.txt’ 只显示符合’*.txt’的文件和目录
tree my -I ‘*.txt’ 显示除了符合’*.txt’的文件和目录
tree my -f 显示my目录中文件和目录的完成路径
ln 建立链接
硬链接:硬链接就是一个文件有两个名字,内存地址是一样的
注意:文件目录不能创建硬链接
软链接:软链接是一个完整的文件,软链接最终指向另外一个文件
软链接指向的文件被删除后,软链接依然存在,重新在链接位置添加文件,还可以继续指向
格式:ln [参数][被链接源文件或目录][链接目标文件或目录]
参数:
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户尝试制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息
例:
ln -s my _m 给my目录创建_m软链接
ln -s a.txt a 给a.txt 文件创建a 软链接
ln a.txt ab 给a.txt 文件创建硬链接
find 查找 默认在当前目录中查找
find -name ‘*.txt’ 查找当前路径下所有 .txt文件,包括子目录下的
find -name ‘*.txt’ -execdir rm {} \; 删除当前路径下的所有.txt文件
find aaa/ -name ‘*.py’ -exec python3 {} \; 运行路径下所有.py 文件
find 目录路径 查找指定路径下的目录
xargs
作用:
1.数据以空格进行分隔
2.可以根据参数进行一次或多次处理,默认的处理命令是/bin/echo
3.空行不进行处理,会被忽略
4.遇到命令状态为255时,xargs会立刻停止,譬如发生错误时。
优点:
1.将输入参数整理后,去除<newline>换行符,以一个列表形式处理
2.避免参数过长引发的问题,使用xargs -n参数适当控制
3.对于经常产生大量输出的命令如find、locate和grep来说非常有用
参数:
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
[-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
[--interactive] [--verbose] [--exit] [--no-run-if-empty]
[--arg-file=file] [--show-limits] [--version] [--help] [command
[initial-arguments]]
例:
-E ‘某一行的内容’,截止到指定行位置(不包含这个位置)
-d \字符 将输出的内容中指定的字符转成分隔符(空格) xargs -a a.txt -d \e 将a.txt文件中的所有e字符转成空格,
\是转义字符,当需要转义特殊字符时(’\’,’*’,‘@’)
xargs -a hello.txt 读取hello.txt 文件中的内容,每一行内容用一个空格隔开(就是用空格替换换行符)
xargs -a hello.txt -E ‘next’ 表示从开头读到’next’ -a指定输出的文件
cat my.dat | xargs -l3 一次性读三行,将换行符转成空格,在使用echo显示
find -name ‘*.py’ | xargs 显示所有.py文件 在xargs 后加 -l2 表示一次读两个文件
find -name ‘hello.txt’ | xargs cat 查看文件内容,在find后可以加要查看的路径
find -name ‘*.py’ | xargs -E ‘./2.py’ cat 读取到 2.py 文件后停止,不包括 2.py
tar 解包、压缩
-c 打包
-x 解包
-z 压缩,解压 执行.gz后缀名的文件
-v 显示执行过程信息
-f 文件
-C 指定解压路径
命令常用组合:
-zxvf 解压.gz压缩文件 tar -zxvf my.tar.gz
-zcvf 压缩.gz文件 tar -cvf new_my.tar.gz my mysql 将my和mysql两个目录压入new_my.tar.gz中
-xvf 解压tar文件 tar -xvf my.tar
-cvf 创建tar文件 tar -cvf my.tar
tar -zxvf XXX -C YYY 将XXX解压到YYY目录 tar -zxvf txts.tar.gz -C _txt_ _txt_目录必须存在,-C必须提供,否则认为_txt_是压缩文件
文件权限:
参数-R表示可以修改文件夹即文件夹之内所有文件的权限
chmod -R 777 filename 权限全开
r 4
w 2
x 1
第一位:- 表示文件 d 表示目录 l 表示软链接
第一组用户权限 u(user)
第二组用户权限 g(group)
第三组用户权限 o(others)
用户和用户组管理
用户:
useradd 添加用户
-d home_dir 指定用户的home目录
-m 创建home_dir
-r 创建系统用户
-g 组名 指定主组,如果不指定,主组名跟用户名相同
-G 组名,指定附加组
例:
useradd -d /home/judy -mr judy #创建judy用户,同时创建了judy组
passwd judy #为judy用户添加口令,提示输入两次
su judy #切换用户,提示要输入口令
userdel 删除用户
userdel judy # 不会删除home_dir
userdel -r judy # 删除hong_dir,/var/jud
usermod 修改用户
sudo user mod judy -l tom #修改judy用户登录名为tom
sudo usermod tom -L # 加锁 之后无法访问
sudo usermod tom -U # 解锁 解锁后可su tom 访问
sudo usermod tom -g mysql 修改tom主组为mysql
修改某用户下的目录所属的组为主组disen:
sudo chown tomy : disen /home/tomy/mysql/bin
扩展:查看linux系统中的所有进程:ps aux
查看某个用户的进程:ps -u 用户名
查看某个用户是否属于某个组:groups 用户名 组名
将一个文件或者目录的的用户和组更改:
# drwxr-xr-x 2 wupeng wupeng 4096 Apr 11 21:49 aaa
>> chown jack:cindy aaa
#将aaa文件夹的wupeng用户和wupeng组更改为jack用户和cindy组(jack必须属于cindy组)
查看用户所属组信息:id 用户名
例:id jack >>> uid=998(jack) gid=1003(cindy) groups=1003(cindy)
为用户添加附加组:usermod jack -G wupeng -a
id jack >>> uid=998(jack) gid=1003(cindy) groups=1003(cindy),1000(wupeng)
-a要和-G组合使用,表示追加一个新的附加组信息,不加-a表示覆盖以前的附加组
/etc/group 文件下显示组的信息,组后面出现的用户都是这些用户将该组作为附加组,用户将该组作为主组不会在该组后显示出来,一般默认主组的名字是用户本身的名字,所以不显示。
从某用户的附加组中移除某用户
在root权限下,在group文件中的该组中删除该用户
组:
groupadd 添加组
sudo groupadd redis
sudo useradd cici -d /home/cici -rm -g redis
sudo useradd tom -d /home/cici -rm -g redis
sudo passwd cici
sudo passwd tom
cat /etc/group 查看所有组的信息
sudo groupadd tt
groupdel 删除组
sudo groupdel redis # redis组内没有用户的前提下
sudo groupdel tt
sudoers问题:用户权限问题
judy is not in the sudoers file. This incident will be reported.
解决方法:
su root
gedit /etc/sudoers 使用gedit文本编辑器打开sudoers文件,在root ALL =(ALL:ALL)ALL 行下增加一行 cici ALL =(ALL:ALL)ALL
为cici用户添加sudo使用权限
测试:
su cici
sudo useradd cindy
sudo userdel cindy
没有报错即成功。 可在etc/group下查看用户是否删除