千家信息网

Linux入门级新手命令的一些常见用法

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,1.系统时钟自动同步到NTP服务器使用timedatectl同步系统时钟:#timedatectl set-ntp true前提要在系统上安装NTP,检查是否安装NTP相关包:#rpm -qa|gre
千家信息网最后更新 2024年11月24日Linux入门级新手命令的一些常见用法

1.系统时钟自动同步到NTP服务器

使用timedatectl同步系统时钟:#timedatectl set-ntp true

前提要在系统上安装NTP,检查是否安装NTP相关包:#rpm -qa|grep ntp

要检查服务状态,使用#timedatectl status

查看所有可用时区:# timedatectl list-timezones

设置本地时区(例如Asia/Shanghai):# timedatectl set-timezone "Asia/Shanghai"

设置时间和日期:# timedatectl set-time "18:50:21 2019-11-05"

设置时间:# timedatectl set-time 18:50:21

设置日期:# timedatectl set-time 20191105


2.修改主机名

临时修改:#sudo hostname 新主机名

永久修改:#sudo hostnamectl set-hostname 新主机名

查看主机名:hostname 或hostnamectl

查看FQDN名称:hostname -f

查看主机IP地址:hostname -i


3.查看进程和端口

查看sshd进程:#ps -ef|grep sshd

查看sshd端口:#netstat -lntup|grep ssh

或者 #ss |grep ssh


4.挂载文件系统

查看已挂载磁盘:#df -h

查看块状设备信息:#lsblk

下面以挂接U盘为例:插入U盘之前,应先用fdisk -l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。

创建挂载点:#mkdir -p /mnt/usb

挂载usb(以磁盘分区sdd1为例):#monut /dev/sdd1 /mnt/usb

只读模式挂载:#monut -o ro /dev/sdd1 /mnt/usb

查看文件内容:#ll /mnt/usb

卸载文件系统(要先退出挂载目录):#umonut /mnt/usb

若想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。

例如:如果想将文件系统为ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限且无需开机自检,就需要修改/etc/fstab文件写入:


5.软件的安装

a.源码包方式(一般把源码放在/usr/local/src目录下)

解压源码包:#tar -zxvf *.tar.gz

然后切换到源码文件夹,顺序:配置-编译-安装

配置,并指定安装目录(这里以ucurses为例):# ./configure --prefix=/usr/local/ncurses

编译:#make

安装:#make install


b.二进制包方式(rpm)

查询某个已安装软件:#rpm -qa|grep 关键词

卸载软件:#rpm -e 关键词 [--nodeps]

安装软件:#rpm -ivh 完整名称

升级软件:#rpm -Uvh 完整名称

查询软件:#rpm -qf 文件路径 【查询指定文件属于哪个包】


c.yum方式安装

列出当前已安装和可安装的软件:#yum list [installed]

搜索指定的关键词的包:#yum search 关键词

安装指定的包:#yum [-y] install 包名

更新指定的包,不指定包则更新全部软件:#yum [-y] update 包名

卸载指定的包:#yum [-y] remove 包名


6.查看系统信息

uname -m 显示机器的处理器架构

uname -r 显示正在使用的内核版本

cat /proc/version 显示详细内核版本 或者uname -a

cat /proc/meminfo 校验内存使用

cat /proc/cpuinfo 查看CPU信息

cat /proc/swaps 显示哪些swap被使用

date 显示系统时间日期

free -m 查看内存使用量和交换区使用量

df -h 查看各分区使用情况

fdisk -l 查看所有分区

systemctl list-unit-files 列出所有系统服务

ifconfig 查看所有网络接口的属性

iptables -L 查看防火墙设置

route -n 查看路由表

netstat -lntp 查看所有监听端口

netstat -antp 查看所有已经建立的连接

netstat -s 查看网络统计信息进程

ps -ef 查看所有进程

top 实时显示进程状态用户

w 查看活动用户

id <用户名> 查看指定用户信息

last 查看用户登录日志

cut -d: -f1 /etc/passwd 查看系统所有用户

cut -d: -f1 /etc/group 查看系统所有组

crontab -l 查看当前用户的计划任务服务


查看内存大小:cat /proc/meminfo |grep MemTotal

查看硬盘大小:fdisk -l |grep Disk

查看内存使用量和交换区使用量:free -m


7.用户管理(root权限下执行)

useradd user1 创建一个新用户

useradd -c "备注内容 " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户,并指定家目录和shell

userdel -r user1 删除一个用户 (-r并删除用户家目录)

usermod -c "备注内容" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性

passwd 修改当前用户密码

passwd user1 修改指定用户密码

groupadd group_name 新建一个用户组

groupdel group_name 删除一个用户组

groupmod -n new_group_name old_group_name 重命名一个用户组


8.文件权限管理(root用户或文件所有者才可执行)

ll 或ls -l 显示文件权限

ls -m 水平输出文件列表

chmod -R ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限

chmod -R go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限

chown user1 file1 改变一个文件的所有人属性

chown user1:group1 file1 改变一个文件的所有人和群组属性

chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性

chgrp group1 file1 改变文件的群组

chgrp -R group1 /usr/dir 将/usr/dir及其子目录下所有文件的用户组改为group1


权限范围的表示法如下:

u User,即文件或目录的拥有者;

g Group,即文件或目录的所属群组;

o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;

a All,即全部的用户,包含拥有者,所属群组以及其他用户;

r 读取权限,数字代号为"4";

w 写入权限,数字代号为"2";

x 执行或切换权限,数字代号为"1";

- 不具任何权限,数字代号为"0";

s 特殊功能说明:变更文件或目录的权限。

注意:在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。


9.文件搜索

1) find 用来在指定目录下查找文件(占用资源大,应尽量缩小搜索范围)

按文件名称搜索:

find /etc -name init 精准搜索,必须为init才能搜索的到

find /etc -iname init 必须为init或有字母大写也能搜索到

find /etc -name *init 模糊搜索,以init结尾的文件或目录名

find /etc -name init???模糊搜索 ?表示单个字符

根据文件类型查找:f表示文件,d表示目录,l表示软链接

find /home -type d 查找/home目录下文件类型是目录的


2) locate 用来在文件资料库中查找文件

新建文件需要命令updatedb 手动更新资料库才能用locate搜到,另外/tmp目录不属于文件资料库的收录范围。

locate -i 不区分大小写搜索


3)which 用来搜索命令所在的目录及别名信息

which【命令】

例如:which grep


4) whereis 用来搜索命令所在的目录及帮助文档路径

whereis【命令】

例如:whereis ls


5) grep 用来在文件中搜寻字符串匹配的行并输出

grep 关键词 文件路径

-i 不区分大小写

-v 反向搜索,即排除指定字符串

-m 只显示全字符合的列,即精确搜索

例如:grep mysql /root/install.log


10.查看文件内容

cat file1 正向查看文件的内容

tac file1 反向查看文件的内容

more file1 查看一个长文件的内容

less file1 与more类似,不同的是允许用户向前或向后浏览文件

head -n2 file1 查看一个文件的前两行,-n可省略

tail -2 file1 查看一个文件的最后两行

tail -f /var/log/messages 实时查看被添加到一个文件中的内容


11.文本处理

1)cut 列截取工具。用于列的截取

-c 以字符为单位进行分割,截取

例:cut -c1-5 passwd 截取第一到第五个字符。

cut -c10- passwd 从第十个字符开始往后全部截取

-d 自定义分隔符,默认为制表符\t

-f 与-d一起使用,指定截取那哪个区域

例: cut -d: -f1,3 passwd 以:分割截取第一和第三列

2)sort 将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

-t 分隔符, 类似cut -d

-k 第N列, 类似cut -f

-o 将排序结果输出到文件中,类似重定向符号>

-n 以数字排序,默认是按字符排序

-r 降序排列,默认是升序

-u 去除重复行,类似uniq

-R 随机排序,每次运行的结果都不同

例如:#sort -nrk 3 -t: test.txt


3)uniq 用于去除连续的重复行

-i 忽略大小写

-c 统计重复行次数

-d 只显示重复行


4)tee 用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。例

ls -l | tee file.txt | less

并输出file.txt内容


-a 向文件中重定向时使用追加模式


5)diff 用于逐行比较文件的不同

语法:diff [选项] 文件1 文件2

-c 上下文格式显示

-u 合并格式显示

-q或--brief:仅显示有无差异,不显示详细的信息;


注意:diff描述两个文件不同的方式 是告诉我们怎样改变第一个文件之后与第二个文件匹配。


有时候我们需要以一个文件为标准,去修改其他的文件,并且修改的地方较多时,我们可以通过打补丁的方式完成。

第一步,先找出文件的不同,然后输出到一个文件

# diff -uN file1 file2 > file.patch

-N 表示将不存在的文件当做空文件

第二步,将不同内容补丁到文件

# patch file1 file.patch

第三步,测试验证

#diff file1 file2

6)paste 用于将多个文件按照列队列进行合并。

paste file1 file2 file3

-d 自定义间隔符,默认是tab

-s 串行处理,非并行


小技巧:通过重定向到空来清空文件内容,例如#>access.log


7)tr 用于字符转换,替换和删除,主要用于删除文件中控制字符或进行字符转换

用法1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理

# commands | tr 'string1' 'string2'

用法2:tr处理的内容来自文件,记住要使用"<" 标准输入

# tr 'string1' 'string2' < filename

用法3: 匹配sting1进行相应操作,如删除操作

# tr options 'string1' < filename

-d 表示删除字符串1中所有输入字符

-s 表示删除重复出现字符序列,只保留一个,即将重复出现字符串压缩为一个字符串。

例:

将输入字符由大写转换为小写:

#echo "HELLO WORLD" | tr 'A-Z' 'a-z'

使用tr删除字符:

#echo "hello 123 world 456" | tr -d '0-9'

将制表符转换为空格:

#cat text | tr '\t' ' '



12.文件和目录操作

cd /home 进入home目录'

./表示当前目录

cd .. 返回上一级目录

cd ../.. 返回上两级目录

cd 进入当前用户的家目录

cd ~user1 进入指定用户的家目录

cd - 返回上次所在的目录

pwd 显示当前工作路径


ls 用来显示目标列表

ls -d 仅显示目录名,而不显示目录下的内容列表

ls -a 显示隐藏文件

ls -l 或ll 所有输出信息用单列格式输出

ls -F:在每个输出项后追加文件的类型标识符,具体含义:"*"表示具有可执行权限的普通文件,"/"表示目录,"@"表示符号链接,"|"表示命令管道FIFO,"="表示sockets套接字。当文件为普通文件时,不输出任何标识符;

tree 显示文件和目录由根目录开始的树形结构(可能需安装tree命令)

mkdir dir1 创建一个叫做dir1的目录'

mkdir dir1 dir2 同时创建dir1 dir2两个目录

mkdir -p /tmp/dir1/dir2 递归创建dir1 dir2目录


rm -f file1 强制删除文件file1

rm -rf dir1 删除目录dir1及其子内容

rm -rf dir1 dir2 同时删除两个目录及其子内容

mv dir1 new_dir 重命名/移动,将dir1重命名为new_dir


cp file1 file2 复制一个文件(一般不建议更名)

cp dir/* ./ 复制一个目录下的所有文件到当前工作目录

cp -a /tmp/dir1 ./ 复制一个目录到当前工作目录

cp -a dir1 dir2 复制一个目录


ln -s file1 lnk1 创建一个指向文件或目录的软链接

touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)

touch file1 新建一个文件


13.系统关机/重启/注销

shutdown -h now 立即关机

poweroff 关机

init 0 关闭系统

init 3 切换到命令行界面

init 5 切换到图形界面

shutdown -r now 重启

reboot 重启

logout 注销


例:指定5分钟后关机

# shutdown +5 "System will shutdown after 5 minutes" //5分钟后关机并显示警告信息

shutdown -c 取消按预定时间关闭系统


一些常用快捷键:

tab键:补全命令

Ctrl+L :清屏,与clear命令一样

Ctrl+u:删除光标前所有内容

Ctrl+k:删除光标往后所有内容

Ctrl+r:查找历史命令(history)

Ctrl+c: 终止进程

!命令 :执行最近的一次指定命令

!! :执行上一个命令

方向键上下键↑↓:调出历史命令


0