Linux基础操作

开机图形化自动登录:(图形化界面可以使用gedit命令,命令行使用nano,vi,vim其中一个都可以,以下以)

vim /etc/gdm/custom.conf(如果没有通过yum install -y gdm安装)

  • 在[daemon]下面一行添加:
    • AutomaticLoginEnable=true
    • AutomaticLogin=root #(不一定是root这个用户)
  • 重启电脑生效


    image

    image

开机启动网卡

  • vim /etc/sysconfig/network-scripts/ifcfg-eth*(CentOS6之前的系统)
  • vim /etc/sysconfig/network-scripts/ifcfg-ens*(CentOS7以后的系统)
    • 修改ONBOOT=yes
  • 重启电脑生效


    image

用户

  • 超级管理员用户(root):唯一用户编号uid=0

    • 也被称为超级用户
    • 一个特殊的管理帐户
    • 对系统损害几乎有无限的能力
    • uid=0(root)已接近完整的系统控制
    • 除非必要,不要登录uid=0的账户(root)
  • 普通(非特权)用户

    • 权限有限
    • 造成损害的能力比较有限

终端terminal

  • 查看当前的终端设备:tty
  • 切换终端设备:chvt [1-6](Ctrl+Alt+F[1-6])

shell:LINUX命令解释器(类似一个翻译)

提供给用户与内核交互操作的接口,将用户输入的命令解释成内核可以理解执行

  • 查看当前shell类型:echo $SHELL=
    - echo ${SHELL}严谨写法
  • 查看支持的shell类型:cat /etc/shells
  • 切换csh的shell类型:/bin/csh

命令提示符:$PS1变量

查看帮助:man bash(进去后搜索PROMPTING)

image

默认显示格式:[root@localhost ~] #

  • #:管理用户
  • $:普通用户

查看与修改当前定义的PS1:echo $PS1=echo ${PS1}

image

image

image
  • 临时修改,命令行执行PS1="*****"比如:PS1="[\e[1;5;41;33m][\u@\h \W]\$[\e[0m]"
  • 永久生效,写入文件-----比如:vi /etc/profile.d/env.sh,内容为PS1="[\e[1;5;41;33m][\u@\h \W]\$[\e[0m]"保存退出-----重新登录让其生效

内部命令与外部命令

内部命令:由shell自带,集成在shell里面,不同shell有不同命令,开机自动加载到内存中

  • 查看所有内部命令(bash):enable
  • 禁用内部命令:enable -n command


    image
  • 启用内部命令:enable command


    image

外部命令:开机不会自动加载到内存中,储存在磁盘中的可执行程序文件

区分内部命令与外部命令:type command

  • 内部命令:结果包含is a shell builtin
  • 外部命令:显示为具体的路径比如/usr/bin/vim


    image

命令执行顺序(内部比外部效率更高)

命令别名>内部命令>hash>$PATH目录顺序

hash(缓存表,重启自然清空):外部命令执行过以后会把这条命令的路径记录到hash表中,以便为下次再执行提高速率

image.png
  • 查看已经hash到内存的外部命令:hash
  • 查看已经hash到内存中外部命令的详细信息:hash -l


    image
  • 删除指定已经hash的缓存命令:hash -d name


    image
  • 给hash到内存中的命令定义别名:hash -p path newname


    image
  • 查看hash命令真实路径:hash -t name


    image
    • 查看外部命令路径:which command(所有加上-a选项)
      • 只关心路径:which --skip-alias command


        image
    • 查看命令路径、帮助文档:whereis command


      image
  • 清除hash所有缓存:hash -r


    image

命令执行默认查找的路径:echo $PATH=echo ${PATH}

命令别名:将比较长的命令用短的方式起个别称

例如:alias NAME='VALUE'

  • 临时:alias cdnet="cd /etc/sysconfig/network-scripts/"


    image
  • 永久
    • 当前用户:写到自己家目录下的.bashrc文件中-----执行source .bashrc生效


      image
    • 所有用户(但不建议使用):写到/etc/bashrc下

取消别名:unalias NAME(-a:取消所有)

使用原始命令,不使用别名

  1. 绝对路径:/bin/ls
  2. 加上单引号'':'ls'
  3. 加上双引号"":"ls"
  4. 使用反斜线\:\ls
  5. 前面加上command:command


    image

命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]

  • 选项:用于启用或关闭命令的某个或某些功能
    • 短选项:-c 例如:-l, -h
    • 长选项:--word 例如:--all, --human-readable
  • 参数:命令的作用对象,比如文件名,用户名等
  • 注意:
    • 多个选项以及多参数和命令之间使用空白字符分隔
    • 取消和结束命令执行:Ctrl+c,Ctrl+d
    • 多个命令可以用;符号分开
    • 一个命令可以用\分成多行


      image

日期和时间

两种时间

  • 系统时间(软件时间):Linux内核
  • 硬件时间:主板(BIOS)

相关命令

  • date:显示和设置系统时间
    • 更改:date 月日时分年.秒


      image
    • 现在距离1970-01-01有多少秒:date +%s
    • 把距离1970-01-01的秒数转化为具体时间:date -d @秒数
  • clock,hwclock:显示硬件时钟
    • -s,--hctosys:以硬件时钟为准,校正系统时钟
    • -w,--systohc:以系统时钟为准,校正硬件时钟


      image
  • 昨天日期:date -d yesterday
    • 生成昨天日期文件:touch date -d "yesterday" +%F.log
      image

同步时间服务器:ntpdate IP

![image](http://upload-images.jianshu.io/upload_images/10967676-c2e6abf8a487cc68.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

时区:/etc/localtime指向所在时区/usr/share/zoneinfo/

image

CentOS 6:tzselect

CentOS 7:timedatectl

  • 时区列表:timedatectl list-timezones
  • 当前时区:timedatectl status
  • 更改时区:timedatectl set-timezone 时区名(America/New_York)


    image

日历:cal

  • 奇怪的年:cal 9 1752

关机与重启

关机:halt,poweroff

重启:reboot

  • f:强制,不调用shutdown
  • p:切断电源

关机与重启:shutdown

格式:shutdown [OPTION]... [TIME] [MESSAGE]

  • r:reboot重启
  • h:halt关机
  • c:cancel取消
  • TIME:无指定,默认相当于+1(CentOS7)
    • now:立刻,相当于+0
    • +m:相对时间,多长时间之后;例如+3:3分钟以后
    • hh:mm:绝对时间,具体时间

用户登录信息查看命令:

  • whoami: 显示当前登录有效用户
  • who: 系统当前所有的登录会话
  • w: 系统当前所有的登录会话及所做的操作

screen:远程连接,共享会话,同步

(同一用户,同一主机-IP)

  • 创建新会话:screen -S 会话名(主)
  • 查看会话列表:screen -ls(主,远程)
  • 加入指定会话(状态为-Attached):screen -x 会话名(远程)
  • 退出并关闭会话:exit(主,远程)
  • 退出并不关闭会话:ctrl+a松手再按d(主,远程)
  • 恢复指定会话(状态为-detached):screen -r 会话名
    image
  • 好处:不怕中途断开,后台继续执行
    1. 先创建会话:screen [会话名]可省略
    2. 执行需要的操作命令:备份什么的
    3. 中途被人断开,执行:screen -r [会话名]可省略

echo:回显

功能:显示字符

语法:echo [-neE][字符串]

说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号

选项:

  • -E (默认)不支持\解释功能
  • -n 不自动换行
  • -e 启用"\字符"的解释功能:特别加以处理,不会将它当成一般文字输出
    • \a 发出警告声
    • \b 退格键
    • \c 最后不加上换行符号
    • \n 换行且光标移至行首
    • \r 回车,即光标移至行首,但不换行
    • \t 插入tab
    • \ 插入\字符
    • \0nnn 插入nnn(八进制)所代表的ASCII字符
      • echo -e '\033[43;31;5mmagedu\033[0m'
    • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)


      image

      image

计算:bc

  • ibase=16:表示输入的是16进制数;输出结果为10进制数
  • obase=16:表示输入的是10进制数;输出结果为16进制数


    image
  • quit:退出

系统登录提示信息:/etc/issue

系统登录提示信息:/etc/motd

有趣的motd

命令行扩展:$()或``(反引号):需要命令的输出信息时使用

把一个命令的输出打印给另一个命令的参数

  • echo "This system's name is $(hostname) "
    • 结果为:This system's name is server1.example.com
  • echo "i am whoami "
    • 结果为:i am root

括号扩展:{}:输出连续重复或者组合输出,还可以分组

image

引号,括号的区别:

  • 单引号'':不能识别命令和变量,全部识别为字符串(不合格)
  • 双引号"":只可以识别变量,但命令不行(中等)
  • 反引号``:都可以识别命令与变量(优秀)


    image
  • 大括号{}:
    • 对象:变量-----${PATH}
    • 字符串:连续重复输出,分组,组合输出
  • 小括号():
    • 对象:命令-----$(hostname)


      image

      image

tab键

  • 命令补全
    • 内部命令:
    • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
    • 用户给定的字符串只有一条惟一对应的命令,直接补全
    • 否则,再次Tab会给出列表
  • 路径补全
    • 把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
    • 如果惟一:则直接补全
    • 否则:再次Tab给出列表

双击Tab键

  • command 2Tab 所有子命令或文件补全
  • string2Tab 以string开头命令
  • /2Tab 显示所有根目录下一级目录,包括隐藏目录
  • ./2Tab 当前目录下子目录,包括隐藏目录
  • *2Tab 当前目录下子目录,不包括隐藏目录
  • ~2Tab 所有用户列表
  • $2Tab 所有变量
  • @2Tab /etc/hosts记录 (centos7不支持)
  • =2Tab 相当于ls –A (centos7不支持)

命令行历史:history

1.保存你输入的命令历史。可以用它来重复执行命令

2.登录shell时,会读取命令历史文件中记录下的命令/.bash_history

3.登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中

  • $HISTSIZE:命令历史记录数(在/etc/profile中定义,默认为1000,不定义默认为500)
  • .bash_history(家目录下):不是实时更新,是正常退出才会从内存中执行过的命令历史写入到.bash_history中(突然断电不会写入)
  • 重复前一个命令,有4种方法
  • 重复前一个命令使用上方向键,并回车执行
  • 按 !! 并回车执行
  • 输入 !-1 并回车执行
  • 按 Ctrl+p 并回车执行
  • !:0 执行前一条命令(去除参数)
  • Ctrl + n 显示当前历史中的下一条命令,但不执行
  • Ctrl + j 执行当前命令
  • !n 执行history命令输出对应序号n的命令
  • !-n 执行history历史中倒数第n个命令
  • !string 重复前一个以“string”开头的命令
  • !?string 重复前一个包含string的命令
  • !string:p 仅打印命令历史,而不执行
  • !:p 打印输出 ! (上一条命令的最后一个参数)的内容
  • !:p 打印输出 !(上一条命令的所有参数)的内容
  • ^string 删除上一条命令中的第一个string
  • string1string2 将上一条命令中的第一个string1替换为string2
  • !:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
  • 使用up(向上)和down(向下)键来上下浏览从前输入的命令
  • ctrl-r来在命令历史中搜索命令
    • (reverse-i-search)`’:
  • Ctrl+g:从历史搜索模式退出
  • 要重新调用前一个命令中最后一个参数
    • !$ 表示
    • Esc, .(点击Esc键后松开,然后点击 . 键)
    • Alt+ .(按住Alt键的同时点击 . 键)

调用历史参数

  • command !^ 利用上一个命令的第一个参数做cmd的参数
  • command !$ 利用上一个命令的最后一个参数做cmd的参数
  • command !* 利用上一个命令的全部参数做cmd的参数
  • command !:n 利用上一个命令的第n个参数做cmd的参数
  • command !n:^ 调用第n条命令的第一个参数
  • command !n:$ 调用第n条命令的最后一个参数
  • command !n:m 调用第n条命令的第m个参数
  • command !n:* 调用第n条命令的所有参数
  • command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
  • command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
  • command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
  • command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

history

完全历史顺序:先删除.bash_history,再执行history -c(清内存)

  • history [-c] [-d offset] [n]
  • history -anrw [filename]
  • history -ps arg [arg...]
    • -c: 清空命令历史
    • -d offset: 删除历史中指定的第offset个命令
    • n: 显示最近的n条历史
    • -a: 追加本次会话新执行的命令历史列表至历史文件
    • -r: 读历史文件附加到历史列表
    • -w: 保存历史列表到指定的历史文件
    • -n: 读历史文件中未读过的行到历史列表
    • -p: 展开历史参数成多行,但不存在历史列表中
      image
    • -s: 构建虚假历史,展开历史参数成一行,附加在历史列表后

命令历史相关环境变量(可以在man bash查看帮助)(永久保存可以写到:/etc/profile.d/env.sh)

  • HISTSIZE:命令历史记录的条数,/etc/profile
  • HISTFILE:指定历史文件,默认为~/.bash_history
  • HISTFILESIZE:命令历史文件记录历史的条数
  • HISTTIMEFORMAT=“%F %T “ 显示时间(永久可以写到:/etc/profile.d/env.sh)
  • HISTIGNORE=“str1:str2:… “ 忽略str1命令,str2开头的历史*
  • 控制命令历史的记录方式:
    • 环境变量:HISTCONTROL
      • ignoredups 默认,忽略重复的命令,连续且相同为“重复”
      • ignorespace 忽略所有以空白开头的命令
      • ignoreboth 相当于ignoredups, ignorespace的组合
      • erasedups 删除重复命令
  • export 变量名="值“
  • 存放在 /etc/profile 或 ~/.bash_profile(不建议,还是自己手写一个文件/etc/profile.d/env.sh)

man帮助章节(/usr/share/man)

  1. 普通用户命令
  2. 系统调用(binary system-b-2)
  3. C库调用(C-3)
  4. 设备文件及特殊文件(dev-d-4)
  1. 配置文件格式(etc-e-5)
  2. 游戏(666666)
  3. 杂项(杂七杂八)
  4. 管理类命令
  5. Linux内核API

man 帮助段落说明

  • NAME 名称及简要说明
  • SYNOPSIS 用法格式说明
    • [] 可选内容
    • <> 必选内容
    • a|b 二选一
    • { } 分组
    • ... 同一内容可出现多次
  • DESCRIPTION 详细说明
  • OPTIONS 选项说明
  • EXAMPLES 示例
  • FILES 相关文件
  • AUTHOR 作者
  • COPYRIGHT 版本信息
  • REPORTING BUGS bug信息
  • SEE ALSO 其它帮助参考

man帮助

  • 查看man手册页
    • man [章节] keyword
  • 列出所有帮助
    • man –a keyword
  • 搜索man手册
    • man -k keyword 列出所有匹配的页面
      使用 whatis 数据库
  • 相当于whatis
    • man –f keyword
  • 打印man帮助文件的路径
    • man –w [章节] keyword

man命令的操作方法:使用less命令实现

  • space, ^v, ^f, ^F: 向文件尾翻屏
  • b, ^b: 向文件首部翻屏
  • d, ^d: 向文件尾部翻半屏
  • u, ^u: 向文件首部翻半屏
  • RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行
  • y or ^Y or ^P or k or ^K:向文件首部翻一行
  • q: 退出
  • :跳转至第#行

  • 1G: 回到文件首部
  • G:翻至文件尾部

man搜索

  • /KEYWORD:
    • 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
    • n: 下一个
    • N:上一个
  • ?KEYWORD:
    • 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
    • n: 跟搜索命令同方向,下一个
    • N:跟搜索命令反方向,上一个

whatis,which,whereis区别

  • whatis=man -f:查看帮助文档
  • which:存放路径,别名
  • whereis:存放路径,帮助文档路径(man -w)


    image

bash的快捷键

  • Ctrl + l 清屏,相当于clear命令
  • Ctrl + o 执行当前命令,并重新显示本命令
  • Ctrl + s 阻止屏幕输出,锁定
  • Ctrl + q 允许屏幕输出
  • Ctrl + c 终止命令
  • Ctrl + z 挂起命令
  • Ctrl + w 从光标处向左删除至单词首
  • Alt + d 从光标处向右删除至单词尾
  • Ctrl + d 删除光标处的一个字符
  • Ctrl + h 删除光标前的一个字符
  • Ctrl + y 将删除的字符粘贴至光标后
  • Alt + c 从光标处开始向右更改为首字母大写的单词
  • Alt + u 从光标处开始,将右边一个单词更改为大写
  • Alt + l 从光标处开始,将右边一个单词更改为小写
  • Ctrl + t 交换光标处和之前的字符位置
  • Alt + t 交换光标处和之前的单词位置
  • Alt + N 提示输入指定字符后,重复显示该字符N次
  • 注意:Alt组合快捷键经常和其它软件冲突
  • Ctrl + a 光标移到命令行首,相当于Home
  • Ctrl + e 光标移到命令行尾,相当于End
  • Ctrl + f 光标向右移动一个字符
  • Ctrl + b 光标向左移动一个字符
  • Alt + f 光标向右移动一个单词尾
  • Alt + b 光标向左移动一个单词首
  • Ctrl + xx 光标在命令行首和光标之间移动
  • Ctrl + u 从光标处删除至命令行首
  • Ctrl + k 从光标处删除至命令行尾
  • Alt + r 删除当前整行

图形化终端快捷键

  • Ctrl-Shift -n 创建新窗口
  • Ctrl-Shift -q 关闭当前窗口
  • Ctrl-Shift -t 创建一个标签页
  • Ctrl-Shift -w 关闭一个标签页
  • Ctrl-PaUp/PgUn 切换到下一个/前一个标签页
  • Ctrl-Shift -c 复制选中的文本
  • Ctrl-Shift -v 把文本粘帖到当前光标处
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容