linux 基础命令
cd 命令详解
- 主要用于切换目录
[root@hbs ~]# cd /home/ **切换至/home目录** [root@hbs home]# cd /root/ [root@hbs ~]# cd / [root@hbs /]# cd /usr/local/sbin/ [root@hbs sbin]# cd . **切换到当前目录** [root@hbs sbin]# cd .. **切换至上一级目录** [root@hbs local]# cd ~ **切换到家目录** [root@hbs ~]#
ls 命令详解
- ls命令主要用于浏览目录下的文件或者文件夹
- 常用参数
ls -l 详细详细信息(文件类型、权限、属主、数组、字节大小、创建时间、文件名)
ls -ld 只显示目录
ls -a 显示影藏文件
-a, --all 不隐藏任何以. 开始的项目; -A, --almost-all 列出除. 及.. 以外的任何项目; --author 与-l 同时使用时列出每个文件的作者; -b, --escape 以八进制溢出序列表示不可打印的字符; --block-size=大小 块以指定大小的字节为单位; -B, --ignore-backups 不列出任何以"~"字符结束的项目; -d, --directory 当遇到目录时列出目录本身而非目录内的文件; -D, --dired 产生适合Emacs 的dired 模式使用的结果; -f 不进行排序,-aU 选项生效,-lst 选项失效; -i, --inode 显示每个文件的inode 号; -I, --ignore=PATTERN 不显示任何符合指定shell PATTERN 的项目; -k 即--block-size=1K; -l 使用较长格式列出信息; -n, --numeric-uid-gid 类似 -l,但列出UID 及GID 号; -N, --literal 输出未经处理的项目名称 (如不特别处理控制字符) ; -r, --reverse 排序时保留顺序; -R, --recursive 递归显示子目录; -s, --size 以块数形式显示每个文件分配的尺寸; -S 根据文件大小排序; -t 根据修改时间排序; -u 同-lt 一起使用:按照访问时间排序并显示; 同-l一起使用:显示访问时间并按文件名排序; 其他:按照访问时间排序; -U 不进行排序;按照目录顺序列出项目; -v 在文本中进行数字(版本)的自然排序。
pwd 命令详解
- 主要用于显示或者查看当前所在的目录路径
hostname命令详解
- 主要查看当前主机名
- 可以临时修改主机名,重启还原
-常用命令
[root@hbs ~]# hostname liuaoni 重启还原名字
[root@hbs ~]# hostnamectl set-hostname liuaoni 永久生效,写入配置文件
[root@hbs ~]# cat /etc/hostname 配置文件 liuaoni
clear命令详解
- 主要用于清屏
- 常用命令
clear 推一屏
who、whoami、w 命令
- who 显示当前所有登录的账户(何时、何地)
- whoami 显示当前登录的账户(正在使用的)
- w 显示所有已登录的账户,并显示其在干什么事
[root@liuaoni ~]# whoami root [root@liuaoni ~]# who root tty1 2021-02-03 19:13 root pts/0 2021-03-07 15:22 (192.168.10.1) root pts/1 2021-03-07 13:09 (192.168.10.1) root pts/5 2021-03-07 12:14 (192.168.10.1) [root@liuaoni ~]# w 15:26:29 up 3 days, 5:46, 4 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 03Feb21 21:09m 0.26s 0.26s -bash root pts/0 192.168.10.1 15:22 5.00s 0.03s 0.03s w root pts/1 192.168.10.1 13:09 46:21 0.29s 0.29s -bash root pts/5 192.168.10.1 12:14 2:47m 0.06s 0.03s bash [root@liuaoni ~]#
which 命令
- 查看命令在哪里
- 命令类型
内部命令(shell提供的命令)
外部命令(which可以找到),不是shell 提供的,需要安装的命令
[root@liuaoni ~]# which vim /usr/bin/vim [root@liuaoni ~]#
cal 命令详解
- 主要查看万年历
- 常用命令
cal 查看本月日历
-1 显示一个月的月历 -3 显示系统前一个月,当前月,下一个月的月历 -s 显示星期天为一个星期的第一天,默认的格式 -m 显示星期一为一个星期的第一天 -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数) -y 显示当前年份的日历
ldd 命令详解
- 用来查看命令所依赖的库文件是否缺失
[root@localhost ~]# which hostname /usr/bin/hostname [root@localhost ~]# ldd /usr/bin/hostname linux-vdso.so.1 => (0x00007ffe2ebc7000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f60f8ace000) libc.so.6 => /lib64/libc.so.6 (0x00007f60f870b000) /lib64/ld-linux-x86-64.so.2 (0x000055d8031af000) [root@localhost ~]#
--version:打印指令版本号; -v:详细信息模式,打印所有相关信息; -u:打印未使用的直接依赖; -d:执行重定位和报告任何丢失的对象; -r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数; --help:显示帮助信息。
scp 命令详解
- scp是 secure copy的缩写.
- scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
- linux的scp命令可以在linux服务器之间复制文件和目录。
- scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。
- 当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。
- 虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
- 语法格式:scp [参数] [文件]
- 常用参数:
-1 使用ssh协议版本1-2 -2 使用ssh协议版本2 -4 使用ipv4 -6 使用ipv6 -B 以批处理模式运行 -C 使用压缩 -F 指定ssh配置文件 -l 指定宽带限制 -o 指定使用的ssh选项 -P 指定远程主机的端口号 -p 保留文件的最后修改时间,最后访问时间和权限模式 -q 不显示复制进度 -r 以递归方式复制
- 从远程复制文件到本地目录:
[root@linuxcool ~]# scp root@192.168.10.10:/opt/soft/rhel-server-7.3-x86_64.tar.gz /opt/soft/
- 从远程复制目录到本地:
[root@linuxcool ~]# scp -r root@10.10.10.10:/opt/soft/mysql /opt/soft/
- 上传本地文件到远程机器指定目录:
[root@linuxcool ~]# scp /opt/soft/rhel-server-7.3-x86_64.tar.gz root@192.168.10.10:/opt/soft/scptest
- 上传本地目录到远程机器指定目录:
[root@linuxcool ~]# scp -r /opt/soft/mysql root@192.168.10.10:/opt/soft/scptest
- 保留文件的最后修改时间,最后访问时间和权限模式:
[root@linuxcool ~]# scp -p /root/install.log root@192.168.10.10:/tmp
ssh 命令
- ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。
- 语法格式: ssh [参数] [远程主机]
- 常用参数:
-1 强制使用ssh协议版本1 -2 强制使用ssh协议版本2 -4 强制使用IPv4地址 -6 强制使用IPv6地址 -A 开启认证代理连接转发功能 -a 关闭认证代理连接转发功能 -b<IP地址> 使用本机指定的地址作为对位连接的源IP地址 -C 请求压缩所有数据 -F<配置文件> 指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config” -f 后台执行ssh指令 -g 允许远程主机连接本机的转发端口 -i<身份文件> 指定身份文件(即私钥文件) -l<登录名> 指定连接远程服务器的登录用户名 -N 不执行远程指令 -o<选项> 指定配置选项 -p<端口> 指定远程服务器上的端口 -q 静默模式,所有的警告和诊断信息被禁止输出 -X 开启X11转发功能 -x 关闭X11转发功能 -y 开启信任X11转发功能
- 登录远程服务器:
[root@linuxcool ~]# ssh 202.102.240.88
- 用test用户连接远程服务器:
[root@linuxcool ~]# ssh -l test 202.102.220.88
- 查看分区列表:
[root@linuxcool ~]# ssh 202.102.220.88 /sbin/fdisk -l
- 强制使用ssh协议版本1:
[root@linuxcool ~]# ssh -1
- 开启认证代理连接转发功能:
[root@linuxcool ~]# ssh -A
linux 用户权限
useradd 命令详解
- useradd命令用来创建新的用户或更改用户的信息。
- useradd可用来建立用户帐号。
- 帐号建好之后,再用passwd设定帐号的密码。
使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
语法格式:useradd [参数] [用户名]
常用参数:
-D 改变新建用户的预设值 -c 添加备注文字 -d 新用户每次登陆时所使用的家目录 -e 用户终止日期,日期的格式为YYYY-MM-DD -f 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1 -g 指定用户对应的用户组 -G 定义此用户为多个不同组的成员 -m 用户目录不存在时则自动创建 -M 不建立用户家目录,优先于/etc/login.defs文件设定 -n 取消建立以用户名称为名的群组 -r 建立系统帐号 -u 指定用户id
- 添加新用户linuxcool:
[root@linuxcool ~]# useradd linuxcool
- 不创建家目录,并且禁止登陆:
[root@linuxcool ~]# useradd -M -s /sbin/nologin linuxcool
- 添加新用户linuxcool,指定UID为888,指定归属用户组为root,cool成员,其shell类型为/bin/sh:
[root@linuxcool ~]# useradd -u 888 -s /bin/sh -G root,cool linuxcool
- 添加新用户linuxcool,设置家目录为/tmp/linuxcool,用户过期时间为2019/05/01.过期后两天停权:
[root@linuxcool ~]# useradd -e "2019/05/01" -f 2 -d /tmp/linuxcool linuxcool
usermod 命令详解
- usermod命令用于修改用户账号 。usermod可用来修改用户账号的各项设定,修改系统账号文件来反映通过命令行指定的变化。
- 语法格式:usermod [参数]
- 常用参数:
-c<备注> 修改用户账号的备注文字 -d<登入目录> 修改用户登入时的目录 -e<有效期限> 修改账号的有效期限 -f<缓冲天数> 修改在密码过期后多少天即关闭该账号 -g<群组> 修改用户所属的群组 -G<群组> 修改用户所属的附加群组 -l<账号名称> 修改用户账号名称 -L 锁定用户密码,使密码无效 -s<shell> 修改用户登入后所使用的shell -u<uid> 修改用户ID -U 解除密码锁定
- 更改登陆目录:
[root@linuxcool ~]# usermod -d /home/hnlinux root
- 改变用户的uid:
[root@linuxcool ~]# usermod -u 777 root
- 修改用户名为linux:
[root@linuxcool ~]# usermod -l Linux linuxcool
- 锁定linuxcool的密码:
[root@linuxcool ~]# usermod -L linuxcool
- 解锁linuxcool的密码:
[root@linuxcool ~]# usermod -U linuxcool
userdel 命令详解
- userdel命令用于删除指定的用户及与该用户相关的文件,英文全称即“user delete”。
- 其实userdel命令实际上是修改了系统的用户账号文件 /etc/passwd、/etc/shadow以及/etc/group文件。
- 这与Linux系统”一切操作皆文件”的思想正好吻合。
值得注意的是,但是如果有该要删除用户相关的进程正在运行,userdel命令通常不会删除一个用户账号。如果确实必须要删除,可以先终止用户进程,然后再执行userdel命令进行删除。但是userdel命令也提供了一个面对该种情况的参数,即”-f”选项。
语法格式:userdel [参数] [用户名]
- 常用参数:
-f 强制删除用户账号 -r 删除用户主目录及其中的任何文件 -h 显示命令的帮助信息
- 删除用户,但不删除其家目录及文件:
[root@linuxcool ~]# userdel linuxcool
- 删除用户,并将其家目录及文件一并删除:
[root@linuxcool ~]# userdel -r linuxcool
- 强制删除用户:
[root@linuxcool ~]# userdel -f linuxcool
groupadd 命令详解
- groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
- 语法格式:groupadd [参数]
- 常用参数:
-g 指定新建工作组的id -r 创建系统工作组,系统工作组的组ID小于500 -K 覆盖配置文件“/ect/login.defs” -o 允许添加组ID号不唯一的工作组
- 使用-g参数新建linuxcool工作组名,1005是工作组id:
[root@linuxcool ~]# groupadd -g 1005 linuxcool
-使用-r创建系统工作组:
[root@linuxcool ~]# groupadd -r -g 368 linuxcool
groupdel 命令详解
- groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。
- userdel修改系统账户文件,删除与 GROUP 相关的所有项目。给出的组名必须存在。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
- 语法格式:groupdel [参数] [群组名称]
- 常用参数:
-h 显示帮助信息 -R 在chroot_dir目录中应用更改并使用chroot_dir目录中的配置文件
- 使用groupdel命令删除linuxcool工作组:
[root@linuxcool ~]# groupdel linuxcool
查看linuxcool组是否删除成功:
[root@linuxcool ~]# more /etc/group|grep linuxcool 通过查看/etc/group配置文件里面不存在linuxcool组,说明已经被删除了。
chmod 命令详解
- chmod命令主要用于修改文件或者目录的权限,例如chmod o+w test.txt,赋予test.txt其他人w写权限
- 语法格式: chmod [参数] [文件]
- 常用参数:
- -R 目录下所有文件
-c 若该文件权限确实已经更改,才显示其更改动作 -f 若该文件权限无法被更改也不显示错误讯息 -v 显示权限变更的详细资料 -R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- 将档案 file1.txt 设为所有人皆可读取:
[root@linuxcool ~]# chmod a+r file.txt
- 将目前目录下的所有文件与子目录皆设为任何人可读取 :
[root@linuxcool ~]# chmod -R a+r *
- 将 file.txt 设定为只有该文件拥有者可以执行:
[root@linuxcool ~]# chmod u+x file.txt
chown 命令详解
- chown命令主要用于文件或者文件夹宿主及属组的修改,命令格式例如chown –R root.root /tmp/test.txt,表示修改test.txt文件的用户和组均为root
用法:chown [选项]... [所有者][:[组]] 文件... 或:chown [选项]... --reference=参考文件 文件... 更改每个文件的所有者和/或所属组。 当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。 -f, --silent, --quiet 去除大部份的错误信息 --reference=参考文件 使用参考文件的所属组,而非指定值; -R, --recursive 递归处理所有的文件及子目录; -v, --verbose 为处理的所有文件显示诊断信息; -H 命令行参数是一个通到目录的符号链接,则遍历符号链接; -L 历每一个遇到的通到目录的符号链接; -P 历任何符号链接(默认); --help 显示帮助信息并退出; --version 显示版本信息并退出。
- 将test.txt文件用户组与用户都改为bin:
[root@linuxcool ~]# ll test.txt.bz2 -rw-r--r-- 1 root root 56 Jul 22 20:17 test.txt.bz2 [root@linuxcool ~]# chown bin:bin test.txt.bz2 [root@linuxcool ~]# ll test.txt.bz2 -rw-r--r-- 1 bin bin 56 Jul 22 20:17 test.txt.bz2
- 显示改动动作:
[root@linuxcool ~]# ll test.txt -rw-r--r-- 1 root root 45 Jul 22 21:11 test.txt [root@linuxcool ~]# chown -c bin:bin test.txt changed ownership of `test.txt' to bin:bin
- 将当前目录下所有文件的拥有者都改为 linuxcool,用户组改为 linuxcoolgroup:
[root@linuxcool ~]# chown -R linuxcool:linuxcoolgroup *
文件管理相关
touch命令详解
- 主要用于创建文件、修改时间
touch -t 2103081018 he.txt 修改he.txt文档,时间为21年3月18日10点18分
touch haha.txt 创建 haha.txt文件
用法:touch [选项]... 文件... 将每个文件的访问时间和修改时间改为当前时间; 不存在的文件将会被创建为空文件,除非使用-c 或-h 选项; 如果文件名为"-"则特殊处理,更改与标准输出相关的文件的访问时间; 长选项必须使用的参数对于短选项时也是必需使用的; -a 只更改访问时间; -c, --no-create 不创建任何文件; -d, --date=字符串 使用指定字符串表示时间而非当前时间; -f (忽略); -h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地; (当系统支持更改符号链接的所有者时,此选项才有用); -m 只更改修改时间; -r, --reference=文件 使用指定文件的时间属性而非当前时间; -t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间; --time=WORD 使用WORD 指定的时间:access、atime、use 都等于-a; 选项的效果,而modify、mtime 等于-m 选项的效果; --help 显示此帮助信息并退出; --version 显示版本信息并退出。
mkdir命令详解
- 主要用于创建目录
- 常用参数
mkdir -pv hbs 创建目录
[root@localhost ~]# mkdir -p a/{b/{e,f},c,d/{g,h}} 命令扩展 大括号{}
用法:mkdir [选项]... 目录;若指定目录不存在则创建目录; 长选项必须使用的参数对于短选项时也是必需使用的; -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask; -p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理; -v, --verbose 每次创建新目录都显示信息; -Z, --context=CTX 将每个创建的目录的SELinux 安全环境设置为CTX; --help 显示此帮助信息并退出; --version 显示版本信息并退出。
rmdir 删除目录
rm 命令详解
- 主要用于删除文件和目
- 常用命令
rm -r 递归删除目录及其内容
rm -rf 强制删除。忽略不存在的文件,不提示确认
用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件... 将源文件复制至目标文件,或将多个源文件复制至目标目录。 长选项必须使用的参数对于短选项时也是必需使用的。 -a, --archive 等于-dR --preserve=all; --backup[=CONTROL 为每个已存在的目标文件创建备份; -b 类似--backup 但不接受参数; --copy-contents 在递归处理是复制特殊文件内容; -d 等于--no-dereference --preserve=links; -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项; 存在时则不需再选此项); -i, --interactive 覆盖前询问(使前面的 -n 选项失效); -H 跟随源文件中的命令行符号链接; -l, --link 链接文件而不复制; -L, --dereference 总是跟随符号链接; -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效); -P, --no-dereference 不跟随源文件中的符号链接; -p 等于--preserve=模式,所有权,时间戳;
mv 命令详解
- 移动、重命名
目标在本地,是重命名
目标在远端,是移动
用法:mv [选项]... [-T] 源文件 目标文件; 或:mv [选项]... 源文件... 目录; 或:mv [选项]... -t 目录 源文件; 将源文件重命名为目标文件,或将源文件移动至指定目录。长选项必须使用的参数对于短选项时也是必需使用的。 --backup[=CONTROL] 为每个已存在的目标文件创建备份; -b 类似--backup 但不接受参数; -f, --force 覆盖前不询问; -i, --interactive 覆盖前询问; -n, --no-clobber 不覆盖已存在文件,如果您指定了-i、-f、-n 中的多个,仅最后一个生效; --strip-trailing-slashes 去掉每个源文件参数尾部的斜线; -S, --suffix=SUFFIX 替换常用的备份文件后缀; -t, --target-directory=DIRECTORY 将所有参数指定的源文件或目录; 移动至 指定目录; -T, --no-target-directory 将目标文件视作普通文件处理; -u, --update 只在源文件文件比目标文件新,或目标文件; 不存在时才进行移动; -v, --verbose 详细显示进行的步骤; --help 显示此帮助信息并退出; --version 显示版本信息并退出。