admin管理员组文章数量:1531723
catalog
- WIndows与Unix基本命令
- Bat文件
-
- 规范
- 注释
- Windows-CMD
-
- 介绍
- 管道`|`, 重定向`> <`
- 相对位置
- fc
- 创建文件
- 删除文件/文件夹
- 创建文件夹
- 输出文件内容
- 中文乱码 CHCP
- vim
-
- 缩进
- 查找
- 显示行号
- 删除
- 视图跳转
- 复制
- Deprecated
- tmux
-
- 复制粘贴
- tmux
- ctrl d
- ctrl a, d
- tmux a
- tmux a, s
- tmux a, shift 5
- tmux a, shift "
- tmux a, z
- Deprecated
- Sh脚本文件
-
- 创建一个sh文件
- 命名行参数
- linux命令
-
- 查看文件信息
- sh文件示例
- `expr`四则运算
- 注释
- 声明字符串常量
-
- 访问
- 长度
- `$()` 将(标准输出)重定向到(常量)
- 字符串切割
- linux命令 与 shell命令
- echo 标准输出
- sort排序
- 输出文件内容
- 写入并覆盖文件
- 读出文件并写入另一个文件
- (命令行参数) 和 (标准输入), 管道
- `> 和 >>` 将(标准输出)重定向到(文件)
- `<` 将(文件) 流入 (标准输入)
- `xargs` 将(标准输入)重定向到(命名行参数)
- 管道`|` 将 (标准输出) 重定向 (标准输入)
- 查找文件/目录
- 查找文件内容
- 历史命令
- 下载工具
- sh文件
- 选中、复制、粘贴
- source引入头文件
- 重定向
- 函数
- for/while循环/continue
- #! /bin/bash
- chmod
- 条件if
- expr
-
- length
- 四则运算
- 比较
- 字符串、变量
-
- 只读变量
- 全局变量
- 打印
- 取字符串/数组 的长度
- 脚本参数
- 进程id
- 获取(命令)返回值
- 数组
- linux文件系统
- 命令
-
- 进程
- ctrl + c/d
- seq
- read/echo
- data
- bash
- touch
- ls
- cp
- mkdir
- mv
- cat
- rm
- history
- tmux
- vim
- Linux命令
-
- rm
- file
- arch
- 管道
- 环境变量
-
- 修改环境变量
- PATH环境变量
- LD_LIBRARY_PATH
- C_INCLUDE_PATH, CPLUS_INCLUDE_PATH
- PYTHONPATH
- JAVA_HOME, CLASSPATH
- 常用命令
-
- top
- df
- free
- du
- ps
- kill
- netstat
- w
- ping
- ls
- chmod
- find
- grep
- ag
- wc
- tree
- xargs
- more
- head, tail
- history
- md5sum
- tar
- sudo
- apt-get
- pip
WIndows与Unix基本命令
分类 | Windows 系统 | Unix 系统 |
文件列表 | dir | ls |
切换目录 | cd | cd |
建立目录 | md | mkdir |
删除目录 | rd | rmdir |
比较文件 | fc | diff |
复制文件 | copy | cp |
移动文件 | move | mv |
文件改名 | ren | mv |
删除文件 | del | rm |
Bat文件
规范
开头写成: @echo off
, 就像sh文件的开头#! /bin/bash
echo off
是: 下面的命令, 不展示在命令行中;
@
在一个命令前: 该命令不展示在命令行
注释
:: hhh
Windows-CMD
介绍
Windows 自带的命令行界面有两个。
- “命令提示符”(cmd)是其中较为古老的一个,功能也相对简单。
- PowerShell 是较新的一个命令行界面,自带的功能丰富,但相对臃肿。
两个界面都可以在开始菜单中找到。
管道|
, 重定向> <
详见 下面的Linux, 一样的
相对位置
Windows下, 与 Linux, 在处理绝对位置时, 是非常非常不同的!!!
Linux下, 需要是: ./a.exe
而在Windows下, 必须是: a.exe
, 不可以加./
因此: 在Linux下是: system( "./go.exe")
, 而在Windows下必须是: system( "go.exe")
fc
fc a.out b.out
比较两个文件的差异
创建文件
echo > a.txt
删除文件/文件夹
del a.txt
del dir
创建文件夹
mkdir dir
输出文件内容
type a.txt
中文乱码 CHCP
数据,存在计算机上的二进制,是已经确定了!!!
(毕竟,一个exe已经生成了)
关键是,如何去解析 这些(二进制)!!! 以什么编码方式,去解析。
CHCP // 获取当前代码页
CHCP 65001 ' utf-8 '
CHCP 936 ' gb2312 '
vim
缩进
按v
选中一些行后, ( 按shift + >
是向右缩进) ( 按shift + <
是向左缩进)
查找
/abc
查看所有的含abc
的位置
显示行号
:set nu
显示行号
:set nonu
不显示行号
删除
ggdG
删除
视图跳转
x G
: 视图回到 (第x行)
G
: 视图到 (最后一行)
x 回车
: 视图往下移动 (x行)
page up
或 page down
: 视图移动
复制
选中: v
复制: 按v
进入选中模式, 然后选中后, 按y
粘贴: p
粘贴
剪切一行: dd
剪切一行
复制代码
:set paste
进入复制模式, 复制完后: : set nopaste
Deprecated
`ggdG` 剪切所有内容
gg=G ' 格式化代码 '
u ' 撤销 '
v ' 然后, 按方向键, 进行文本的选中 '
y ' 复制 所选中的内容. y是yank复制 (无法复制出来, 即仅限于vim里)'
yy ' 复制一行 '
p ' 粘贴 paste '
:set paste ' 当你要shift+insert, 往vim里 粘贴进一些文本时, 要设置这个模式; 否则你的文本, 和他原来的格式 不一样 '
:set nopaste ' 绝大多数下, 都是使用这个模式 (默认vim也是这个模式); 只有当你要粘贴时, 设置paste, 粘贴完毕, 就设置回去nopaste '
/abc '查找 找所有`abc`字符串(按“回车”后,按`n` 可以进行迭代) '
解释paste模式
int x;
a
b
当你在;
的后面, 按下回车时, 你肯定是希望光标在a 处
这就是nopaste
模式, 即他会自动给你缩进
但是, 当你要粘贴文本时, 你肯定不希望, 在你文本中的 每个’\n’后面, 都新加一个tab缩进
. 即让文本按照本来的样子来粘贴, 这就是paste模式
tmux
复制粘贴
ctrl a, [
进入(复制模式), (然后你点击左键, 按住, 一旦松开, 就表示复制了)
ctrl a, ]
粘贴
(只在tmux里有效), 在外界不可以; (在外界, 使用ctrl+v
也不行, 即, 他和本机电脑的粘贴板无关, 但ctrl insert
会进入电脑粘贴板)
tmux
如果是在(非tmux)模式下, 则开始一个新的tmux
ctrl d
如果是在(tmux)模式下, 则 (退出) 并 (删除) 该tmux
ctrl a, d
如果是在(tmux)模式下, 则 (退出) 并 (挂起) 该tmux
tmux a
如果是在(非tmux)模式下, 则 进入 (被挂起了的) tmux
tmux a, s
如果是在(tmux)模式下, 则 展示所有的tmux目录
tmux a, shift 5
如果是在(tmux)模式下, 则 在(右侧) 产生一个 新的分屏tmux
tmux a, shift "
如果是在(tmux)模式下, 则 在(下侧) 产生一个 新的分屏tmux
tmux a, z
如果是在(tmux)模式下, 将当前的分屏tmux, 全屏展示 或 取消全屏展示
Deprecated
tmux ' 打开一个新的tmux '
tmux a ' 打开之前挂起的tmux (即恢复你之前的那些分屏状态) '
ctrl + a, shift + 5 ' 左右分屏 '
ctrl + a, shift + " ' 上下分屏 (注意, 是引号键)'
ctrl + a, 方向键 ' 切换视图 '
ctrl + d ' 删除tmux, 退出; '
ctrl + a, d ' 挂起tmux, 退出; [ctrl+d, a]是保存tmux 退出, 然后[tmux a]是恢复之前的tmux状态 '
'比如你当前有很多的分屏, 你想要保存下来, 明天继续 '
ctrl + a, s ' 查看所有挂起的tmux (即被ctrl+d的) '
然后, 选中某个, 按x y ' 删除某个tmux; 按下x, 下面命令行会提示 是否删除'
ctrl + a, z ' 全屏/取消全屏 '
直接鼠标左击选中(复制)
ctrl + a, ] ' 粘贴, 但只能在tmux里粘贴 '
按住shift选中, ctrl+insert ' 也会选中其他tmux, 最好提前给ctrl+a,z 全屏'
shift + insert ' 粘贴 '
Sh脚本文件
以下的内容, 不仅适用于Sh
文件, 也可以直接在shell
里直接录入
其实是一样的, 因为sh
文件里的内容, 就是在shell
里执行的
创建一个sh文件
- 第一步
在文件里开头输入:#! /bin/bash
一个sh
文件, 必须开头写上这句话; 注释, 也不可以写在第一行
否则, 你执行./xx.sh
时, 没有 (自动补全)的功能 - 第二步
对该文件chmod +x xx.sh
给予(执行权限), 否则./xx.sh
执行不了
命名行参数
当执行脚本时: ./xx.sh aa bb cc
在sh文件里面, 通过${1}
就得到第一个命名行参数 aa
;
${0}
是: ./xx.sh
, 即对应的下标为: 0 1 2 3
即, 可以看做是: 有名称为0 1 2 3 ...
的 常量
通过$#
, 可以得到 (最大的下标值), 即上面的3
linux命令
查看文件信息
ldd main.exe
查看这个程序, 链接了哪些DLL
ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ff9462f0000)
KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ff944490000)
KERNELBASE.dll => /c/WINDOWS/System32/KERNELBASE.dll (0x7ff944050000)
msvcrt.dll => /c/WINDOWS/System32/msvcrt.dll (0x7ff944850000)
libstdc++-6.dll => /mingw64/bin/libstdc++-6.dll (0x62860000)
libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll (0x63240000)
libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x64940000)
nm main.exe
查看(符号表所有的全局变量/函数
) (由于符号太多, 一般是: nm main.exe | grep xx
)
(符号表, 是在exe里的!!! 而符号表很大的, 一般上线的程序, 会将这个符号表 从exe里删除掉)
(比如, exe的大小是54Kb
; 删除(符号表)后, exe的大小是: 16Kb
)
strip main.exe
删除掉(符号表) 此时, exe的大小 就变小了; 再使用(nm main.exe)就没有符号表了
file main.exe
查看(文件信息)
size main.exe
查看程序的各个段
text data bss dec hex filename
9916 2348 2432 14696 3968 main.exe
sh文件示例
len=$(expr ${
#1} - 4) #4为文件的后缀 ".cpp"
name=${1:0:len}
比如, 你输入的是: a.sh abc.cpp
那么, len == 3
, name == abc
expr
四则运算
shell不支持直接, 需要借助expr
expr 5 - 3
, 等价于: expr "5" - "3"
将结果直接输出到 (标准输出)
var=$(expr 5 - 3)
存到常量里
注释
# hhh
声明字符串常量
data=123
注意, =
前后不能有空格
a=123
和 a="123"
是完全一样的!!!
没有(数
版权声明:本文标题:管道,Linux命令,Windows命令,cmd命令,tmux,vim,shell,bash,sh文件,bat文件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1724547721a988595.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论