ls

通配符 匹配
一个字符
* >=0个任意字符
[ai] a 或者 i
[a-i] a/b/c/d...i
[!a] 除了a

cat

cat -n test  #加上行号
cat -b test #只给有文本的行加上行号

tail

tail -n 2 log_file #只显示最后两行
tail -nf 2 log_file #使得tail命令保持活动状态,并不断显示添加到文件中的内容

head

head -n 2 log_file

touch

touch main.py #  创建main.py,或者更新修改时间、访问时间
touch main.py -a # 只修改访问时间
ls -l --time=atime main.py #显示访问时间,默认系显示修改时间

ps

#默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户的进程
ps -ef #显示所有e进程的完整f信息
ps -el #长格式输出
#S 进程状态。O正在运行、S在休眠、R可运行、Z僵尸、T停止
#C 进程生命周期的CPU利用率
#STIME 进程启动时的系统时间
#CMD 启动程序的名字
#PRT 进程优先级(越大优先级越低)
ps --forest #显示进程的层级关系

grep

grep 要搜的 文件
grep -v #反向搜索
grep -n #同时显示行号
grep -c #统计匹配数量
grep -e t -e f file # 匹配任意模式即可
grep [tf] file # 使用正则

tar

#创建归档
tar -cvf test.tar one two three
#看一下,不提取
tar -tf test.tar
#提取
tar -xvf test.tar

压缩

#压缩
gzip
#看一下
gzcat
#解压缩
gunzip

进程列表

#命令列表
pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls
#进程列表
( pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls )
# 括号的加入使命令列表变成了进程列表,生成了一个子shell来执行对应的命令。

jobs

# 显示当前运行在后台模式中的所有用户进程(作业)
一旦后台作业完成,就会显示出结束状态。
[1]+ Done sleep 3000 &
# Ctrl+z 切换到后台,并停止运行
# 将指定进程切回前台运行。
fg %1
# 在后台恢复运行
bg %1
#杀死
kill %1 命令 & :将任务进程在后台运行。
jobs:查看后台的进程列表。
fg %后台任务编号:将指定后台任务切换到前台运行。
bg %后台任务编号: 恢复运行后台指定的任务。
kill %后台任务编号:杀死后台指定任务。

环境变量

  • 全局环境变量:对于shell会话和所有生成的子shell都是可见的
  • 局部变量:则只对创建它们的shell可见
# 查看全部全局变量
printenv
env
#查看某个特定环境变量
printenv HOME
echo $HOME
#使用环境变量,直接作为命令行参数
ls $HOME
#输出全局、局部、用户定义 环境变量
set #设置局部用户定义变量,推荐用小写,避免重新定义系统环境变量
my_variable="hello world" # = 左右没有空格
echo $my_variable
#fish 设置局部
set name "QWJ" #设置了局部环境变量后,就能在shell进程的任何地方使用它了。但是,如果生成了另外一个shell,它在子shell中就不可用。 #类似地,如果你在子进程中设置了一个局部变量,那么一旦你退出了子进程,那个局部环境变量就不可用。 #设置全局环境变量: 先创建一个局部环境变量,然后再把它导入全局环境中
my_variable="hello world"
export my_variable #在生成子shell进程时,只有部分父进程的环境被复制到子shell环境中
#修改子shell中全局环境变量并不会影响到父shell中该变量的值。
#子shell中添加全局环境变量,父进程看不到
#总结:父shell通过全局环境影响子shell。子shell无论如何(增删改)无法影像父shell #删除
unset name
set name #fish 中 #PATH
#PATH中的目录使用冒号分隔。
#追加
PATH=$PATH:/home/orange/bin
#对PATH变量的修改只能持续到shell退出或重启系统 #环境变量持久化
#/etc/environment中添加环境变量
key=val #/etc/profile
#系统上每个用户登录时都会执行这个启动文件 #其中包含这样的命令
# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
for profile in /etc/profile.d/*.sh; do
test -r "$profile" && . "$profile"
done
unset profile
fi
# 迭代/etc/profile.d目录下的所有文件,当用户登录时,shell会执行这些文件
#因此也可以在/etc/profile.d目录下见一个脚本,里面设置环境变量,所有用户可见 #针对个别用户,在~/.bashrc #数组变量

创建、删除用户

useradd -m test #创建用户test,并创建用户HOME目录
useradd -mk test #必须和-m 一起使用,将/etc/skel目录的内容复制到用户的HOME目录
useradd -p passwd #为用户账户指定默认密码 useradd -D #查看默认属性
useradd -D -s /usr/bin/fish #更改默认属性 userdel test #只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件
userdel -r test #如果加上-r参数, userdel会删除用户的HOME目录以及邮件目录。然而,系统上仍可能存有已删除用户的其他文件。这在有些环境中会造成问题。

修改用户

#修改密码
passwd test
#快速修改默认用户登录shell
chsh -s /usr/bin/fish

管理组

groupadd qwj-friends #创建新租,里面没有人
usermod -G qwj-friends test # 将test加到这个组里 #修改组名称
groupmod -n newname oldname

文件权限

#查看默认权限掩码 0022,第一位特殊用途
umask
#权限三位一组,一组看做一个8进制数
#文件全权限 666
#目录全权限 777 #默认文件权限 666-022 = 644 = rw- r-- r--
#默认目录权限 777-022 = 755 = rwx r-x r-x #设置权限掩码
umask 026 #更改文件权限
chmod 760 file
chmod [ugoa] [+-=] [rwxs]
chmod o+r file
chmod u+x file
chmod u+x file -R #让权限的改变递归地作用到文件和子目录 #改变所属关系
chown orange file #将file的属主设为orange
chown orange.man file #同时将file的所属组设为man
chown .man #只改组 #只有root用户能够改变文件的属主。
#任何属主都可以改变文件的属组,但前提是属主必须是原属组和目标属组的成员。 #chgrp命令可以更改文件或目录的默认属组。
chgrp shared file #额外信息位
#设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。
#设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认属组。 #SGID位对文件共享非常重要。启用SGID位后,你可以强制在一个共享目录下创建的新文件都属于该目录的属组 mkdir testdir
chgrp shared testdir
chmod g+s testdir
#首先,用mkdir命令来创建希望共享的目录。然后通过chgrp命令将目录的默认属组改为包
#含所有需要共享文件的用户的组(你必须是该组的成员)。最后,将目录的SGID位置位,以保证
#目录中新建文件都用shared作为默认属组。 umask 002
cd testdir
touch newfile
#为了让这个环境能正常工作,所有组成员都需把他们的umask值设置成文件对属组成员可
#写。在前面的例子中,umask 改成了002,所以文件对属组是可写的。

重定向

date > text #覆盖
data >> text #追加
command < inputfile
wc < text # wc 输出文本行、文本词数、字节数
command << marker #输入marker结束

shell 基础

#!/usr/bin/bash
echo -n "现在的时间: " # -n 不换行
date # 直接输出
echo "让我们看看谁登陆了"
who name="QWJ"
money=100
today=$(date)
today1=`date`
echo "我叫$name,很高兴认识大家,我有\$$money "
echo "date 命令的输出放在了变量today中,其值$today" #命令替换会创建一个子shell来运行对应的命令。子shell (subshell)是由运行该脚本的shell
#所创建出来的一个独立的子shell(child shell)。正因如此,由该子shell所执行命令是无法
#使用脚本中所创建的变量的。
#在命令行提示符下使用路径./ 运行命令的话,也会创建出子shell;要是运行命令的时候
#不加入路径,就不会创建子shell。如果你使用的是内建的shell命令,并不会涉及子shell。
#在命令行提示符下运行脚本时一定要留心! echo
var1=3
var2=5
var=$[$var1+$var2]
echo "3+5=$var"
echo "$var1+$var2=$var" exit 9 # 脚本运行后 echo $? 得到9
#exit $var

shell 结构化语句

#!/usr/bin/bash

#bash shell的 if语句会运行if后面的那个命令。如果该命令的退出状态码(参见第11章)是0
#(该命令成功运行),位于then部分的命令就会被执行。 #if-then语句
if pwd
then
echo "成功运行"
fi #if-then-else语句
if pwd
then
echo "成功运行"
else
echo "运行失败"
fi testuser=NoSuchUser
if grep $testuser /etc/passwd
then
echo "用户 $testuser 存在"
else
echo "用户 $testuser 不存在"
if ls /home/$testuser
then
echo "但是 他有一个家目录"
fi
fi testuser=NoSuchUser
if grep $testuser /etc/passwd
then
echo "用户 $testuser 存在"
elif ls /home/$testuser
then
echo "用户 $testuser 不存在"
echo "但是 他有一个家目录"
else
echo "用户 $testuser 不存在"
fi #记住,在 elif 语句中,紧跟其后的 else语句属于 elif 代码块。它们并不属于之前的
#if-then代码块。

test

if test conditon
then
commands
fi if [condition]
then
commands
fi

Linux 备忘的更多相关文章

  1. linux 备忘记录

    杂项记录 Ubuntu 通过/etc/network/interfaces修改IP,重启网络服务貌似也不会生效.可以重启电脑使其生效,或执行: ip addr flush dev ens33 & ...

  2. linux备忘和卸载

    linux上网 -------------------------------------------------linux卸载------------------------------------ ...

  3. 树莓派 Linux备忘

    //更新树莓派 sudo apt-mark hold raspberrypi-bootloader sudo apt-get update sudo apt-get upgrade //配置 rasp ...

  4. linux备忘

    一.数字计算 echo $[3600*24] --只能计算整数echo $((3600*4)) --只能计算整数 expr 3600 \* 24        --注意空格,*要加\,只能计算整数ec ...

  5. linux备忘簿

    1.ubuntu中按ctrl+s锁定屏幕,按ctrl+q解锁. 2.vim中撤销和恢复为u和ctlr+r 3.静态库和动态库编译命令: (1)得到hello.o g++ -c hello.cpp (2 ...

  6. linux备忘命令

    1,安装vim以后把vim中的tab键设置为4个空格 vim ~/.vimrc一下,如果没有会创建新的, 然后添加下面两行: set ts=4 set expandtab 如果第二行内容是noexpa ...

  7. Linux常用命令速查备忘

    Linux常用命令速查备忘   PS:备忘而已,详细的命令参数说明自己man 一. 启动,关机,登入,登出相关命令 [login] 登录 [logout] 登出 [exit] 登出 [shutdown ...

  8. linux 指令备忘

    linux 指令备忘 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和"..& ...

  9. ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘

    本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...

  10. Linux基础之常用基本命令备忘

    Linux基础之常用基本命令备忘 PWD   查询当前所在Linux上的位置 /         根目录 CD(change directory)切换目录  语法 CD /(注意添加空格)   LS ...

随机推荐

  1. KingbaseES例程_普通表在线转分区表(基于触发器)

    KingbaseES例程_普通表在线转分区表 概述 普通表转分区表,使用视图的替换式触发器,以路由方式,实现在线转移数据. 数据准备 /*普通大表*/ create table tab_single ...

  2. KingbaseES V8R6 集群环境备库不结束旧事务快照将影响主库的vacuum操作

    前言 昨天同事遇到了一个有关vacuum的典型问题. V8R6读写分离集群环境,一主多备. 版本:kingbaseesv008r006c004 问题现象: 主库日常巡检发现日志大量记录: waring ...

  3. wordpress自建博客站,为文章添加显示浏览次数功能

    wordpress自建博客站,为文章添加显示浏览次数功能 笔者使用的主题是 GeneratePress 版本:3.1.3 1.后台文章管理列表添加浏览次数列 ​ 效果如图: ​ 实现: 编辑funct ...

  4. 【Java】abstract class 和 interface 有什么区别?

    含有 abstract 修饰符的 class 即为抽象类,abstract 类不能创建的实例对象.含有 abstract 方法的类必须定义为 abstract class,abstract class ...

  5. Ubuntu一键安装/卸载docker和docker compose,可指定版本或安装最新版本。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @ 目录 前言 一.docker是什么? 二.docker compose是什么? 三.安装步骤 1.Ubuntu安装脚本 2.生成脚 ...

  6. #约数#洛谷 4296 [AHOI2007]密码箱

    题目 给定\(n(n\leq 2*10^9)\),求 \[\sum_{x=1}^n[x^2\bmod n==1] \] 分析 首先当\(n=1\)的时候需要特判, 否则1和\(n-1\)一定是答案, ...

  7. 使用OHOS SDK构建assimp

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone https://github.com/assimp/assimp.git 进入源码 ...

  8. 上新啦!KIT!

    上新啦!KIT!近期KIT上新榜单请查收~ 商业推广深度转化事件回传助力用户精细运营,健康数据开放提升运动健康服务体验.手语服务新增非手控部分-- 更多功能请点击 了解更多详情>> 访问华 ...

  9. Blocks—单调栈

    思路: 题目意思是求平均数>=k的最长序列先求出a[i]-k的前缀和就是求sum[i]-sum[j]>=0的最大i-j当j<=k<=isum[j]<=sum[k]j< ...

  10. nginx重新整理——————http请求的11个阶段中的find_config[十三]

    前言 简单介绍一下find_config 与 preaccess 阶段. 正文 find_config 很大一部分工作是进行location的匹配. 来一张图看下location指令和merge_sl ...