linux基本命令

很早就开始玩 linux 了,算算的话,玩过 fedora、ubuntu、红旗(已经关门大吉)、opensuse、gentoo,现在是 centos。以前都太过于浅尝辄止,要么就是只玩下桌面环境,要么就是学习 c/c++ 开发,没有把它太当一个事。命令没有记住几个,系统管理完全不会。现在打算好好玩玩,主要是玩命令行,图形界面的话,主要就是上个网。下面是命令行操作的一些常用,或是基本的命令,罗列一下,以作纪念,O__O"…。

普通用户的命令提示符是 $,管理员(root)的命令提示是 # ,命令后面的 # 部分是注释

系统信息

  1. $ uptime    # 查看系统开机时间 + 运行的时间 + 用户数 + 系统负载(1/5/15分钟)
  2. $ uname -a  # 内核名 -s + 主机名称 -n + 内核发行信息 -r + 内核版本 -v + 机器硬件名称 -m + CPU 型号 -p + 硬件平台 -i + 操作系统名称 -o
  3. $ arch    # 查看机器硬件名称,同 $ uname -m
  4. $ hostname  # 查看主机名称
  5. $ hostname -i    # 查看主机 ip
  6. $ hostname zoo    # 设置主机名称$ hostname -F file 从文件中设置 hostname 如果想持久有效,需要修改 /etc/sysconfig/network 中的 HOSTNAME 参数
  7. $ date    # 显示日期和时间
  8. $ cal    # 显示本月日历

关机和重启

  1. $ shutdown -h now    # 现在关闭系统然后断开电源
  2. $ shutdown -h +10    # 10 分钟后关闭系统然后断开电源
  3. $ shutdown -h +12:00 "sorry"    # 12:00 关闭系统,向所有用户发送 "sorry" 消息
  4. $ shutdown -r now          # reboot,现在重启 -k:开玩笑要关闭系统,只向用户发送警告信息 -c:取消正在进行中的关机程序
  5. $ reboot    # 重启,当然也可以 shutdown -r now,现在重启
  6. $ halt    # 关机

用户操作:登陆、退出、添加用户(+组)、修改密码、查看用户等

用户

  1. $ login    # 登陆(这个基本不会用到)
  2. $ logout    # 注销登陆 logout 可以退出文本界面的 shell,而对于图形界面中的模拟(虚拟) shell 却么法退出,提示使用 exit
  3. $ exit    # 退出登陆、shell、ssh 等使用 Ctrl+D 也可以关闭 shell
  4. $ useradd ant    # 添加一个用户 ant
  5. $ useradd -d /home/ant -s /bin/bash -g users ant    # 添加 ant 用户,设置主目录、默认 shell ,添加到 users 组中(users 组应该存在)
  6. $ useradd -g wheel ant    # 添加一个新用户 ant,并将其加入到 wheel 组中
  7. $ passwd ant    # 修改 ant 用户的密码用户密码保存在 /etc/passwd 中
  8. $ usermod -g wheel ant    # 将已存在的用户 ant 添加到 wheel 组中;-g 设置默认组; -G g1,g2,g3 设置成 g1 g2 g3 的额外组成员;-L 冻结账号(锁住密码);-U 解除冻结账号
  9. $ userdel ant    # 删除 ant 用户, -r 强制删除用户目录下的文件;如果仅仅是想禁用某个用户的话,使用 $ usermode -L ant (锁住 ant 用户的密码)

用户切换

  1. $ su root    # 更改有效身份为 root,需要输入 root 密码,而当前登陆用户不变exit 退出身份的切换
  2. $ su -l ant    # 更改为 ant 用户登录,exit 或是 logout 可以退出登录
  3. $ sudo shutdown    # 以 root 权限执行 shutdown 命令,不需要输入密码

用户组

  1. $ groups    # 查看系统中的组
  2. $ chgrp users /tmp/sample    # 将组 users 添加到 /tmp/sample 文件之上
  3. $ groupadd -f users    # 添加一个组 users,-f 来避免重复新建(已经有的话,给出错误信息)
  4. $ groupdel users    # 删除一个组 users
  5. $ groupmod -n newname users    # 修改组 users 的名字为 newname-g gid 修改 gid (最好不要修改)

系统中用户信息

  1. $ logname    # 查看当前登陆用户
  2. $ id ant    # 查看 ant 用户的 uid(用户 id)、gid(组 id) 和 groups
  3. $ whoami    # 查看“我是谁”,如果使用了 su 或是 sudo,whoami 是当前的有效身份,而不是登陆用户 (比如是 root )
  4. $ who      # 目前目前登陆了哪些用户,数据来源于 /var/run/utmp
  5. $ who am i         # 我是谁的详细信息,等同于 who -m
  6. $ users    # 列出当前登陆用户列表(同一个用户名字可能出现多次)
  7. $ w    # 查看登录用户以及他们都正在干神马(第一行和 $ uptime 的显示一样)
  8. $ last    # 查看先前有谁使用过计算机
  9. $ last ant    # 用户 ant 的登陆历史信息

tty:teletype writer 终端,键盘、鼠标、串行设备连接等属于此类pts:pseudo terminal slave 伪终端,ssh 连接,telnet 连接等属于此类。

文件操作:查看、切换(目录)、创建、移动、拷贝、重命名、删除、修改和比较文件(或目录)

  1. $ ls       # 查看当前目录下的文件,默认按名字字母表顺序排列
  2. $ ls -a dir        # 查看 dir 目录下的所有文件,包括隐藏的文件
  3. $ ls -l dir        # (长格式)查看 dir 目录下文件的详细信息
  4. $ ls -l file       # 查看 file 文件的详细信息
  5. $ ls -ltr dir      # l 是长格式,t 按时间顺序,r 逆序显示 dir 目录下的文件
  6. $ ls -S dir        # 按大小(size)列出目录下的文件
  1. $ pwd    # 当前工作目录
  2. $ cd    # 切换到用户的主目录,比如 /home/ant
  3. $ cd $HOME    # 切换到用户的主目录
  4. $ cd dir    # 切换到 dir 目录
  1. $ echo $HOME $PATH         # 回应环境变量 HOME 和 PATH 的值
  2. $ echo ~    # 回应主目录
  3. $ echo ~root    # 回应 root 的主目录
  1. $ cat file    # 显示文件 file 的所有内容
  2. $ more file    # 显示 file 的一页内容
  3. $ less file    # 显示 file 的一页内容,比 more 功能更强,可向上翻向下翻
  4. $ od file    # 以八进制形式显示文件, -c 以字符形式显示
  5. $ vi    # 打开 vi 编辑器
  6. $ vi file          # 使用 vi 打开 file 文件
  1. $ mkdir dir    # 创建目录 dir
  2. $ mv src dest    # 将 src 移动到 dest 下
  3. $ cp src dest    # 将 src 拷贝到 dest 下
  4. $ rm file    # 删掉 file 文件
  5. $ rm -rf dir    # (强制递归)删掉 dir 目录
  6. $ mv old new    # 将 old 重命名为 new (使用的是移动命令)
  1. $ wc test.c    # 统计 test.c 中的行数、单词数和字节数 -l :统计行数 -w:统计单词数 -c:统计字节数 -m:统计字符数
  2. $ cmp file1 file2    # 逐个字节地比较 file1 和 file2 是否相同
  3. $ diff file1 file2    # 一行一行比较 file1 和 file2 是否相同
  1. $ sort file    # 对 file 文件按序输出
  2. $ sort -t: -k 3n /etc/passwd | less
  3. $ sort -r file     # 对 file 文件逆序输出

编辑器

  1. $ ed
  2. $ vi    # 如果权限不够,可以考虑 sudo vi
  3. $ emacs
  4. $ nano

搜索、帮助命令

  1. $ echo 'good morning'    # 回应文本(信息): good morning
  2. $ whatis chmod    # 查看 chmod 命令的完整单词:change file mode bits
  3. $ whereis cp        # 查看 cp 命令所在的位置(甚至可以是 shell 内置命令)
  4. $ which date        # 查看 date 命令所在的目录
  5. $ info date    # 查看 date 命令的信息
  6. $ man date    # 查看 date 命令的帮助手册
  7. $ type    # 查看命令的类型
  1. $ grep pattern file        # 搜索 file 文件中匹配模式 pattern 的行
  2. $ grep -v pattern file    # 搜索 file 文件中不匹配 pattern 的行
  1. $ find file dir    # 在 dir 目录下搜索 file 文件

文件权限、符号链接

  1. $ chmod ug+rwx file    # 对文件 file 设置 user/group 的 read/write/excute 权限
  2. $ chmod -R ug+rwx file    # -R 选项表明对子目录递归使用权限设置
  1. $ ln -s target dir    # 建立符号链接

环境变量:查看、修改

  1. $ printenv    # 查看环境变量
  2. $ printenv HOME USER PATH    # 查看指定环境变量的值
  3. $ export HOME=/home/ant    # 修改 HOME的值
  4. $ export PATH=/usr/local/gcc/bin:$PATH    # 修改 PATH 的值

进程管理

  1. $ top    #  监视最活跃的进程,数据不断更新q 键退出
  2. $ ps    # 查看当前运行中的进行
  3. $ ps aux    # 查看所有用户的进程ux 查看自己的进程 -U root 查看 root 用户的进程
  4. $ kill 3455    # 杀死 pid = 3455 的进程有些进程可能不会乖乖照办,可以使用 kill -KILL 3455 然而可能会有副作用,比如系统资源没有完全回收
  5. $ kill -9 3456    # 向 pid = 3456 的进程发送 SIGKILL (9) 信号
  6. $ kill -HUP 3456    # pid = 3456 的进程发送 SIGHUP 信号
  7. $ nice -7 sort BigFile > out file    # 指定进程的 nice 值,值越大,优先级越低
  8. $ renice +5 -p 3456    # pid = 3456 的进程的 nice 值增加 5 (优先级低了)
  9. $ pidof sshd    # 查看 sshd 进程的 pid
  10. $ uptime    # 查看系统运行了多少时间,字段:当前时间、系统运行时间、当前登陆用户、1 分钟内的负载均值(单位时间内活动进程的平均数量)、5 分钟内、15 分钟内

内存/磁盘管理

  1. $ free    # 查看内存使用情况,默认单位是千字节(KB)- b 以字节为单位-m 以兆字节(MB)为单位-g  以 GB 为单位
  2. $ free -s 3    #  每隔 3 秒更新一下数据
  3. $ df -k    # 查看磁盘使用情况
  4. $ df file    # file 所在的文件系统的磁盘使用情况
  5. $ du --max-depth=1 -h    # 查看当前目录的磁盘使用情况
  6. $ du -sh file    # 查看 file 的磁盘使用情况

网络管理

  1. $ ifconfig    # 查看网卡设置-a 查看已经启动的网络接口
  2. $ ifconfig eth0    # 查看 eth0 口的网络信息
  3. $ ifconfig eth0 up    # 启用 eth0 (以太网)
  4. $ ifconfig eth0 down    # 关闭 eht0
  1. $ netstat -r    # 查看路由表
  2. $ netstat -i    # 显示接口表
  3. $ netstat -al    # 显示所有监听的 sockets (-a -l)
  4. $ iptables    # 网络管理工具
  5. $ route    # 显示路由表 (同 $ netstat -r )
  6.  
  7. $ ping http://ilovers.sinaapp.com
  8. $ ping6 ipv6.google.com    # ipv6 的 ping 版本
  9. $ tracepath www.baidu.com    # 跟踪到某个 host 的网络路径
  10. $ tracepath6 ipv6.google.com    # tracepath 的 ipv6 版本

服务管理

  1. $ service sshd [start|stop|restart|status]    # 服务 sshd 的启动、关闭、重启,查看状态等,对于所有的服务来说基本都有这些操作;可能需要管理员权限 (sudo)
  2. $ /etc/init.d/sshd restart
  3. $ service network restart    # 重启 network 服务

压缩和解压缩

压缩

  1. $ tar cvf xxx.tar dirname    # 压缩 dirname 目录下的内容
  2. $ tar czf file.tar.gz files    # 压缩 files 文件成 file.tar.gz

解压缩

  1. $ tar tvf xxx.tar    # 只是查看压缩文件 xxx.tar 的内容
  2. $ tar xvf xxx.tar    # 解压缩,默认是 .tar
  3. $ tar zxvf xxx.tar.gz    # 解压缩,z 代表解压缩的是 .tar.gz,.tgz 也就是 .tar.gz 格式
  4. $ tar xvfj xxx.tar.bz2    # j 代表解压缩的是 .tar.bz2
  5. $ unzip xxx.zip    # 解压缩 .zip 文件

开发工具

  1. $ gcc file.c    # 编译 file.c ,-E 只预处理 (cpp), -S 预处理+汇编 (as) , -c 预处理 + 汇编 + 编译 (cc1)
  2. $ g++ file.cpp    # 编译 c++ 文件, -std=c++11 指定语言标准
  3. $ clang file.c
  4. $ clang++ file.cpp
  5. $ python file.py

包管理器

  1. $ yum search pkg
  2. $ yum install pkg    # 使用 yum 安装 pkg 包
  3. $ yum erase pkg
  4.  
  5. $ rpm -i pkg.rpm    # 使用 rpm 安装 pkg.rpm
  6. $ rpm -e pkg    # 使用 rpm 移除 pkg 包
  7. $ rpm -ql pkg    # 查看 pkg 包的信息 (-l 以 list 形式显示,-q 查询)

源文件(源码)安装

linux 源码安装三步骤:./configure (配置) + make (编译) + make install (安装)。

  1. $ ./configure --prefix=/usr/local/pkg    # 生成 makefile 文件,设定安装文件路径
  2. $ make    # 编译,启动 2 个 job (一般和 cores 个数相同)加速编译
  3. $ make install    # 安装,权限不够可能需要 $ sudo make install

版本控制系统

  1. $ git clone https://github.com/antark/doc4doc
  2. $ svn checkout svn://gcc.gnu.org/svn/gcc/trunk    # svn co path dir
  3. $ hg clone https://ants.arks@code.google.com/p/go-zh/    # mercurial 版本控制工具

网络下载器

  1. $ git clone https://github.com/antark/doc4doc
  2. $ svn checkout svn://gcc.gnu.org/svn/gcc/trunk    # svn co path dir
  3. $ hg clone https://ants.arks@code.google.com/p/go-zh/    # mercurial 版本控制工具
  4. $ wget url    # 从 url 处下载文件

ssh 登陆

  1. $ ssh user@hostname    # ssh 以 user 身份登录到 hostname , -p 指定端口
  2. $ telnet hostname    # 使用 telnet

其他

  1. $ date    # 查看日期和时间
  2. $ date -s 11:55    # 修改时间
  3. $ time  ls  # 统计 ls 的运行时间
  4. $ bash    # 使用 bash
  5. $ chsh    # 更改 shell

Tags: 

Article type: