Linux详细命令整理
b:back[向上\返回】 clear Ctrl+l 清屏 q;exit();Ctrl+d 退出
#超级管理员;$用户管理 cd : 切换目录 cd # 回到当前用户的家目录 ~ 可用于表示用户家目录 cd /etc # 切换到/etc目录 cd - # 切换到上一次的目录 cd …/… 返回上两级目录;
pwd : 查看当前的工作路径 pwd -P # 显示出实际路径 连接(link)路径;pwd显示的是连接路径 绝对路径:cd /home/zw/桌面 相对路径:cd …/文档/ .tar.gz == .tgz
ls -a 查看文件 ls -A 查看所有文件 # “.”(表示当前目录)和“…”(表示当前目录的父目录) ls -l 文件详细信息 -r 将排序结果反向输出; 以英文字母顺序的逆序显示。 -t 按文件修改时间进行排序 -R 如果目标目录及其子目录中有文件,就列出所有的文件
文件类型
- 普通文件
d 目录文件 b 块设备文件 c 字符设备文件 l 链接文件 p 管道文件 s socket文件 ls -l /dev # 可以查看字符设备文件和块设备文件 ls -l /run # 可以找到socket文件 ls -l /run/systemd/inhibit/ # 可以查看到管道文件
tree命令,显示树形的层级目录结构
mv : 移动或重命令文件或目录 mv SOURCE DEST #源文件 目标文件 mv test.log test.txt # 文件改名 mv test1.txt dir1/ #移动文件 mv test1.txt test2.tx test3.tx dir1/ #移动多个文件
cp : 复制 cp SOURCE DEST #源文件 目标文件 cp -i SOURCE DEST # 如果遇到需要覆盖的情况,则提示 cp -r dir1 dir2 # 复制目录及其目录下的文件(实现递归复制) cp -p file1 file2 # 保留复制前的属性 cp -rp dir1 dir2 -f 强行复制 -a 保留源文件所有的属性(归档复制,常用于备份)
scp 可以在 2个 linux 主机间复制文件 scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file
rm : 删除 -f :强制删除 -r :删除目录 rm -rf a/b/file1
rmdir [选项]… 目录… -p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除; 如果整个路径被删除或者由于某种原因保留部分路径, 则系统在标准输出上显示相应的信息。 -v --verbose 显示指令执行过程
find 查找 通过磁盘查找 find path -option [ -print ] 表达式: -name: 通过文件名查找 -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件; -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名; -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名; -newer file : 列出比file还要新的文件名 -user name : 列出文件所有者为name的文件 -group name : 列出文件所属用户组为name的文件 -uid n : 列出文件所有者为用户ID为n的文件 -gid n : 列出文件所属用户组为用户组ID为n的文件
find详细内容可参考:https://blog.csdn.net/life_boy/article/details/120252648
mkdir 目录名 创建目录 mkdir - p a/b/c/d # 递归创建目录;创建多级目录 -v:显示创建的详细过程
touch : 改变文件或目录的时间,文件不存在时会创建一个空文件。 touch file1 # file1 不存在时被创建 touch -c file1 # 不创建文件 touch -r aa bb #更新bb的时间戳和aa相同 touch -t 201210120505.25 file1 # 指定时间戳 # [[CC]YY]MMDDhhmm[.SS] : CC为年数中的前两位,即”世纪数”;YY为年数的后两位, 不给出CC的值,则touch 将把年数CCYY限定在1969–2068之内. MM为月数,DD为天数;hh小时;mm为分钟数,SS为秒数. ******早于1970年1月1日的时间是错误的。
tar 解压 tar -cvf 压缩包文件 需压缩文件 #建立压缩文件 tar -xvf 解压后文件 压缩包文件 #解压文件 -t : 查看 tarfile 里面的文件! -zcvf #使用gzip 压缩 -jcvf #bzip2 压缩–强
tar -jcvf /tmp/etc.tar.bz2 /etc tar -jxvf a.tar -C /tmp # 指定解包路径
sort : 排序 sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同; -b :忽略最前面的空格符部分; -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,相同的数据中,仅出现一行代表; -t :分隔符,默认是用 [tab] 键来分隔; -k :以那个区间 (field) 来进行排序的意思
tac : 反向输出 cat : 查看文件内容 cat file1 file2 # 显示file1和file2的文件内容 -n 显示行号 -E 显示每一行的行结束符(linux文本文件行结束符是
,
w
i
n
d
o
w
s
下
文
本
文
件
行
结
束
符
是
,windows下文本文件行结束符是
,windows下文本文件行结束符是和\n) -T 显示制表符 -A 显示所有 默认不加参数,是输入并打印 -s # 当遇到连续2行以上的空白行,只保留一行空白行
more : 查看文件内容 less : 查看文件内容 less ESC 向上翻页 less ALT. 向上翻页 寻找最后一个字符串 {空格默认为2段字符串}
grep #匹配关键字 grep -on abc a.txt #关键字 文件名 参数: -c --count #计算符合样式的列数 -l --file-with-matches #列出文件内容符合指定的样式的文件名称。 -v --revert-match #显示不包含匹配文本的所有行。 -i --ignore-case #忽略字符大小写的差别。 -o # 只显示匹配到的关键字 -n # 显示行号 -E 使用正则表达式
正则表达式 ^ : 匹配1行开头 $ : 匹配1行结尾 [] : 范围匹配 [a-z] : 所有小写字母 [A-Z] : 所有大写字母 [0-9] : 所有数字 [^0-9] : 所有非数字 . : 匹配单个字符
- : 表示+前面的内容出现1次或多次
? : 表示?前面的内容出现0次或1次 +?只对前面的内容进行操作 [0-9][a-z] 和[0-9]无关 [a-z]+ [a-z]?
例子: grep -E “.” a.txt [0-9a-zA-Z]+@[0-9a-zA-Z]+.[a-zA-Z]+ . 转义;只表示一个点 cat a.txt |grep hat$ # 匹配以hat结尾的行 cat a.txt |grep ^hat # 匹配以hat开头的行 cat a.txt | grep -E “[0-9]*” # 匹配有0到多个数字的行 cat a.txt | grep -E “[0-9]+” # 匹配有至少有1个数字的行 cat a.txt | grep -E “[0-9]?” # 匹配有0到1个数字的行 tac + 文件
head : 输出文件的开始的部分, 默认显示10行 head -n 5 file【文件】
tail : 查看文件尾部的内容。默认显示最后10行 tail file1 tail -n 5 file1 tail -f file1 # 动态监控文件 追加 echo “26556123” >>a.txt
stat : 查看文件属性 stat filename #Access time(atime): 读取文件的时间;读取而不修改文件的操作;cat,less #Modify time(mtime): 修改文件内容的时间,文件内容有改动或存盘的操作; ls –l会显示Modify time #Change time(ctime): 文件属性或文件位置改动的时间;chmod,chown,mv
wc :统计指定文件中的字节数、字数、行数,并将统计结果显示输出 -c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
which # 查找其他命令的位置 which ls
uniq : 忽略或报告重复行 uniq [-icu] -i :忽略大小写字符的不同; -c :进行计数 -u :只显示唯一的行
cut命令可以从一个文本文件或者文本流中提取文本列。 选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思; -c :以字符 (characters) 的单位取出固定字符区间列;
tee : 读取标准输入的数据,并将其内容输出成文件。 cat sec.log | tee file1 # 读取sec.log ,并生成file1文件 cat sec.log | tee - a file1 # 读取sec.log ,并追加, cat sec.log |tee file1 file2
管道符:他的作用是 将前一个命令的结果 交给后一个命令使用
重定向
- { >a.txt }
重定向,如果文件存在,则覆盖文件内容,文件不存在时创建文件 - echo “123”>>a.txt
重定向,如果文件存在,则向文件追加内容,不存在时创建文件
1> 标准正确输出 1>> 追加标准正确输出 2> 标准错误输出 2>> 追加标准错误输出 &> 标准正确输出和标准错误输出 &>> 追加 标准正确输出和标准错误输出 采用
{stdin 输入信息到系统 stdout 收集正确的 stderr 收集错误的}
locate # 查找文件 locate ico 图标文件 locate /etc/sh # 搜索etc目录下所有以sh开头的文件。 locate ~/a # 搜索用户主目录下,所有以a开头的文件。 locate -i ~/a # 搜索用户主目录下,所有以a开头的文件,并且忽略大小写。 ***** touch aa pwd locate aa sudo updatedb 更新数据库 locate aa
`` : 反引号;反引号中间的内容当做一个命令;波浪线下 $() :等同于反引号
echo 输出字符;加引号为字符串;不加引号为字符,用空格分开输出,在最后加上换行号。 -n #不要在最后自动换行 -e #输出的字符串中有参数不直接输出; \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号; \f 换行但光标仍旧停留在原来的位置; \n 换行且光标移至行首; \r 光标移至行首,但不换行; \t 插入tab; \v 与\f相同;
history : 查看执行过的命令。 history # 显示最近1000条历史命令 history 5 # 显示最后5条命令 !number# number为history之后命令前的序号:执行该条命令 !cat # 执行最后一条以cat开头的命令
–help info man{最优} #获取帮助 man man # 查看man命令的手册 man 5 passwd man -k passwd # 模糊查找 man -f passwd # 精确查找
文件权限 rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人的权限 r : 表示可读, 可以用数字 4 来表示 w : 标识可写 ,可以用数字 2 来表示 x : 表示可执行 , 可以用数字 1 来表示
- :表示没有相应权限 可以用数字 0 来表示
X>R>W
#u 代表所有者(user) #g 代表所有者所在的组群(group) #o 代表其他人,但不是u和g (other) #a 代表全部的人;u,g和o
修改权限 chmod o+w file chmod g-w file1 chmod u=rwx file1 chmod 755 file1 # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限 chmod a=rwx file chown : 更改文件的所有者和所有组
-R 处理指定目录以及其子目录下的所有文件 -v 显示详细的处理信息 chown root:root file { . 效果相同} chown :root file chown -R -v root:root test6 #cp给其他人文件时更改属性
***特殊权限 SUID: 让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限,SUID对目录是无效的 SGID : 文件:如果SGID设置在二进制文件上,则不论用户是谁,在执行该程序的时候,它的有效用户组(effective group)将会变成该程序的用户组所有者(group id); 目录:如果SGID是设置在某目录上,则在该目录内所建立的文件或目录的用户组,将会是该目录的用户组。 SGID多用在特定的多人团队的项目开发上,在系统中用得较少 STICKY : 只针对目录有效,在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件拥有者与root才有权力删除。
rwsrw-r-- 表明有suid标识, rwxrws— 表明有sgid标识, rwxrw-rwt 表明有stick标识, 当设置了特别权限位时,如果原来这个位上有x,那么这个特殊标示就显示为小写字母s,s,t ;否则就显示为大写S,S,T,此时他们不生效。
用户和用户组 linux使用文件保存用户信息 : man 5 passwd 查看
/etc/passwd 用户账户信息。 #1 登录名 2.可选的加密后的密码 3.用户 ID 4. 数字组 ID 5.用户名和注释字段 6.用户主目录 7.可选的用户命令解释器{壳}
/etc/shadow 安全用户账户信息。 /etc/group 组账户信息。 /etc/gshadow 安全组账户信息。 /etc/default/useradd 账户创建的默认值。 /etc/skel/ 包含默认文件的目录。 /etc/login.defs Shadow 密码套件配置。
useradd 用户名 -u UID id不存在 -g GID 此组必须存在 -c 注释 全名 -d 家目录 -s 默认shell -G 附加组 必须存在;可以指定多个;逗号隔开 -p 指定密码 给用户指定 密码 passwd [username]
usermod -c “comment” zw1 备注;加在/etc/passwd中的第5项字段中 #-d 登入目录;只修改用户登入时的目录;/etc/passwd的第六栏 #-e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow第八栏 #-f 缓冲天数。限定密码过期后多少天,将该用户帐号停用;shadow的第七栏 #-g 主要组。设置用户所属的主要组;修改/etc/passwd的第四个字段,即是GID的字段 #-G 次要组。设置用户所属的次要组,可设置多组;/etc/group #-M 强制不创建用户主文件夹 #-m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下 #-p 密码。输入该帐号的密码 #-s shell。用户登录所使用的shell #-u uid。指定帐号的标志符user id;uid>1000;UID /etc/passwd第三栏 # -l<帐号名称> 修改用户帐号名称。/etc/passwd的第一栏 # -L 锁定用户密码,使密码无效。 # -U 解除密码锁定。/etc/shadow 密码栏的“!”去掉
usermod -G staff user2 # 将user2 添加到组 staff 中 usermod -l zw1 aa # 修改 aa 的用户名为 zw1 usermod -L zw1 # 锁定账号 zw1 usermod -U zw1 # 解除对 zw1 的锁定 sudo usermod -p 123 zw1 解锁后需要重新添加密码 采用 passwd sudo less /etc/shadow 查看密码信息
sudo userdel zwbx 删除账户
groupadd group1 添加组 /etc/group 查看组 groupadd -g 2000 group1 # 指定gid groupdel group1 # 删除组;组中存在用户,需先删除用户; groupmod 修改组 groups 显示当前群组的信息
su : 切换用户,没有参数时,默认切换为root用户; su - zw1 # 切换为user1 并加载环境配置 s -a .bash* 查看配置文件; {.bash_history[可无] .bash_logout .bashrc}
sudo : 让当前用户暂时以管理员的身份root来执行命令。 Ubuntu 默认没有启用root用户, 普通用户执行一些特殊的操作时,使用sudo就可以让普通用户以root用户的身份执行命令
给其他用户授权: ll sudoers #查看权限的文件 方法1. chomd 777 sudoers #授权操作 vi sudoers 在 root all=(all) all 此条内容下添加 — 其他用户 all=(all) all chomd 440 sudoers #添加后将权限变更 方法2: vi sudoers #不更改权限,可强制更改文件 :wq! ****账户不安全 root all=(all) all 用户 地址= 命令
alias : 给命令起别名 alias ll=‘ls -alF’ alias la=‘ls -A’ alias l=‘ls -CF’ gedit .bashrc gedit为编辑器 需要别名永久生效,需要保存到 .bashrc 文件
******* alias cd=“rm-rf /” 输入后系统崩溃
自定义账户的个性化环境的三个重要文件 .bash_history .bash_logout .bashrc 登录Linux时,首先启动 /etc/profile 文件 , ~/.bash_profile、 ~/.bash_login、 ~/.profile。 如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。 (1) /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取 (即每次新开一个终端,都会执行bashrc)。 (3) ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。 默认情况下,设置一些环境变量,执行用户的.bashrc文件。 (4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 (5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量, 他们是"父子"关系。 (6) ~/.bash_profile: 也可能是 .profile 是交互式、 login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。
-
修改环境变量 采用vim ~/.profile 修改当前的用户 PATH=“路径:
P
A
T
H
"
/
e
t
c
/
p
r
o
f
i
l
e
修
改
所
有
的
用
户
P
A
T
H
=
"
路
径
:
PATH" /etc/profile 修改所有的用户 PATH="路径:
PATH"/etc/profile修改所有的用户PATH="路径:PATH” -
PATH变量的设置 env : 查看当前环境变量 export : 设置或显示环境变量。 source : 在当前bash环境下读取并执行FileName中的命令。 该filename文件可以无"执行权限"
env export name = “SN” source /etv/profile
|